Keras 是否有可能从特定的时代开始继续训练?

Keras 是否有可能从特定的时代开始继续训练?,keras,Keras,我用于安装Keras模型的资源管理器将每次访问服务器的时间限制为1天。今天之后,我需要开始一份新工作。Keras是否可以在历元K保存当前模型,然后加载该模型以继续训练历元K+1(即,使用新作业)?您可以通过指定回调在每个历元后保存权重: weight_save_callback = ModelCheckpoint('/path/to/weights.{epoch:02d}-{val_loss:.2f}.hdf5', monitor='val_loss', verbose=0, save_best

我用于安装Keras模型的资源管理器将每次访问服务器的时间限制为1天。今天之后,我需要开始一份新工作。Keras是否可以在历元K保存当前模型,然后加载该模型以继续训练历元K+1(即,使用新作业)?

您可以通过指定回调在每个历元后保存权重:

weight_save_callback = ModelCheckpoint('/path/to/weights.{epoch:02d}-{val_loss:.2f}.hdf5', monitor='val_loss', verbose=0, save_best_only=False, mode='auto')
model.fit(X_train,y_train,batch_size=batch_size,nb_epoch=nb_epoch,callbacks=[weight_save_callback])
这将在每个历元后保存权重。然后,您可以使用以下内容加载它们:

model = Sequential()
model.add(...)
model.load('path/to/weights.hf5')

当然,您的模型在这两种情况下都需要相同。

您可以添加
initial\u epoch
参数。这将允许您从特定历元继续训练。

您可以在下一历元自动开始训练。。! 您需要的是使用培训日志文件跟踪您的培训,如下所示:

from keras.callbacks       import ModelCheckpoint, CSVLogger

if len(sys.argv)==1:
    model=...                           # you start training normally, no command line arguments
    model.compile(...)
    i_epoch=-1                          # you need this to start at epoch 0
    app=False                           # you want to start logging from scratch
else:
    from keras.models import load_model 
    model=load_model(sys.argv[1])       # you give the saved model as input file
    with open(csvloggerfile) as f:      # you use your training log to get the right epoch number
         i_epoch=list(f)
         i_epoch=int(i_epoch[-2][:i_epoch[-2].find(',')])
    app=True                            # you want to append to the log file

checkpointer = ModelCheckpoint(savemodel...)
csv_logger = CSVLogger(csvloggerfile, append=app)

model.fit(X, Y, initial_epoch=i_epoch+1, callbacks=[checkpointer,csv_logger])            

这就是所有的人

我有一个疑问,假设在20次迭代后,我出于某种原因停止了我的程序并保存了我的模型,现在我想在20次迭代后再次运行,这意味着。。。。我将从第21个历元开始使用以前保存的模型,是否可能???@Sudip Das在
model.fit
model.fit\u generator
中有一个参数
initial\u epoch
。把它设为20。然后模型将从21世纪开始训练。