Keras中的时期和批次控制

时间:2018-11-19 16:04:25

标签: python keras training-data

我想实现一个自动编码器模型,其功能如下:

for epoch in xrange(100):
  for X_batch in batch_list:
     model.train_on_batch(X_batch, X_batch)
     training_error = model.evaluate(X_batch, X_batch, verbose=0)
  average the training error by the number of the batches considered
  save it as the epoch training error
  call the function to get the validation error in the same fashion over  the validation data
  compare the two errors and decide whether go on training or stopping

我看过Internet并已经问了一些问题,建议我使用fit_generator,但我不知道如何实现它。还是应该使用train_on_batch方法或历时数等于1的拟合一来正确拟合模型?

在这种情况下,哪种最佳实践?您是否有示例或类似的问题可以链接我?

1 个答案:

答案 0 :(得分:0)

据我了解,您希望将验证错误用作早期停止条件。好消息是,keras已经提前停止回调。因此,您所需要做的就是创建一个回调,并在训练后的一些时期/迭代后调用它。

keras.callbacks.EarlyStopping(monitor='val_loss', min_delta=0, patience=0, verbose=0, mode='auto', baseline=None, restore_best_weights=False)

让我们看看train_on_batch和fit()

train_on_batch(x, y, sample_weight=None, class_weight=None)


fit(x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None)

您会看到train_on_batch不会接受任何回调作为输入,因此一个不错的选择是在此处使用fit,除非您想自己实现它。

现在您可以按照以下方式称呼健身

callbacks = [EarlyStopping(monitor='val_loss', patience=2),
         ModelCheckpoint(filepath='path to latest ckpt', monitor='val_loss', save_best_only=True)]

history = model.fit(train_features,train_target, epochs=num_epochs, callbacks=callbacks, verbose=0, batch_size=your_choice, validation_data)