我在Keras有一个模型,由于数据集很大,我使用生成器批量加载它 . 因此,训练例程封装在for循环中:
from keras.callbacks import History
history = History()
for epoch in xrange(100):
x_train,y_train=load_data_generator()
model.fit(x_train, y_train, nb_epoch=1, batch_size=1000, verbose=2, validation_data=(x_test, y_test), callbacks=[history])
理想情况下,我希望有整个训练循环的历史记录 . 但是,keras似乎用当前批次覆盖每个循环期间的历史记录 .
问题1)如何在所有时代轻松连接历史?换句话说,在先前的历史中,它会在它停止的地方继续进行恢复 .
问题2)每次keras完成一个纪元时,它会打印纪元的编号 . 既然我分批进行培训,有没有简单的方法来更新时代?我已经看到了拟合例程的'initial_epoch'参数,但听起来它会恢复到先前的时代 .
2 回答
你能尝试在适合的呼叫中设置
initial_epoch = epoch
吗?我会假设它会将信息附加到您的历史回调,因为它每次都是一个新的纪元 . 在循环的每个步骤中,时期的数量也将增加 .
我希望这有帮助 .
您可能会发现image preprocessing in Keras上的文档有助于理解数据生成器的使用 . 我相信使用
fit_generator()
函数而不是fit()
可以解决您的两个问题 .