Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为交叉验证(循环)保存Keras的培训历史?_Python_Deep Learning_Keras - Fatal编程技术网

Python 如何为交叉验证(循环)保存Keras的培训历史?

Python 如何为交叉验证(循环)保存Keras的培训历史?,python,deep-learning,keras,Python,Deep Learning,Keras,对于交叉验证,如何保存不同训练集和交叉验证集的训练历史?我原以为pickle write的“a”附加模式会起作用,但实际上不起作用。如果可能的话,你能告诉我保存所有模型的方法吗?现在我只能用model.save(file)保存上一次训练的模型 要在特定列车的每个历元后保存模型并验证数据,您可以使用回调: 例如: from keras.callbacks import ModelCheckpoint import os output_directory = '' # here should be

对于交叉验证,如何保存不同训练集和交叉验证集的训练历史?我原以为pickle write的“a”附加模式会起作用,但实际上不起作用。如果可能的话,你能告诉我保存所有模型的方法吗?现在我只能用
model.save(file)
保存上一次训练的模型


要在特定列车的每个历元后保存模型并验证数据,您可以使用
回调

例如:

from keras.callbacks import ModelCheckpoint
import os

output_directory = '' # here should be path to output directory    
model_checkpoint = ModelCheckpoint(os.path.join(output_directory , 'weights.{epoch:02d}-{val_loss:.2f}.hdf5'))
model.fit(input[list(train)],
          output[list(train)],
          batch_size=16,
          epochs=100,
          verbose=1,
          validation_data=(input[list(test)],output[list(test)]),
          callbacks=[model_checkpoint])
每个历元后,模型将保存在文件中。有关此回调的详细信息,请参阅文档()

如果要保存在每个折叠上训练过的模型,只需在for循环中添加model.save(文件):

model.fit(input[list(train)],
          output[list(train)],
          batch_size=16,
          epochs=100,
          verbose=1,
          validation_data=(input[list(test)],output[list(test)]))
model.save(os.path.join(output_directory, 'fold_{}_model.hdf5'.format(ind)))
要保存历史记录,请执行以下操作: 您可以保存历史记录一次,而无需将其附加到每个循环的文件中。在for循环之后,您应该获得带有键(折叠标记)和值(每个折叠上的历史记录)的字典,并按如下方式保存此字典:

f = open(historyfile, 'wb')
pickle.dump(save, f, pickle.HIGHEST_PROTOCOL)
f.close()

非常感谢您耐心的回答!
f = open(historyfile, 'wb')
pickle.dump(save, f, pickle.HIGHEST_PROTOCOL)
f.close()