Python 如何为交叉验证(循环)保存Keras的培训历史?
对于交叉验证,如何保存不同训练集和交叉验证集的训练历史?我原以为pickle write的“a”附加模式会起作用,但实际上不起作用。如果可能的话,你能告诉我保存所有模型的方法吗?现在我只能用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
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()