我已经建立了一个CNN,并创建了用于模型检查点,TensorBoard可视化和提早停止的回调。我的tf.data.Dataset
中有〜408K个样本,正在使用256个批处理量,并以1,000个历元的每个纪元1,000个步数训练我的模型。当我这样做时,所有内容都可以在ML Engine上正确地训练,但是我没有像往常一样记录日志
例如,只有200个steps_per_epoch
,我做看到这样的日志记录:
Epoch 1/1000
1/200 [..............................] - ETA: 2:00 - loss: 5.7345 - acc: 0.98271
ML引擎日志记录也显示600 steps_per_epoch
。知道为什么会这样吗?
在ML Engine上与人交谈,他们的日志记录没有减少/似乎与我的steps_per_epoch
值有关。
作为参考,我的keras模型称为model
,这是我正在使用的样板代码:
model.compile(
loss='sparse_categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'],
)
callbacks = [
ModelCheckpoint("model_{epoch:04d}_{val_acc:.4f}.h5",
monitor='val_acc',
verbose=1,
save_best_only=True,
mode='max'),
TensorBoard(),
EarlyStopping(monitor='val_acc', patience=5, min_delta=0, mode='max')
]
model.fit(dataset, steps_per_epoch=1000, epochs=1000, validation_data=val_dataset,
validation_steps=3, callbacks=callbacks)
我正在使用tf.data.Dataset
API,该API需要设置steps_per_epoch
。我真的只希望一个时期代表我的数据的完整传递,所以# samples / batch_size
。对我来说,应该是408000 / 256 = ~1593
。但是,看似:(