给我的印象是,可以使steps_per_epoch等于样本总数除以批次大小,以便每个时期都能看到每个样本,但是显示的数字使我认为训练的时间远少于此。 (如果我没看错的话:https://stanford.edu/~shervine/blog/keras-how-to-generate-data-on-the-fly) 这是相关的行(我明确写出了样本数)
model.fit_generator(
train_generator,
steps_per_epoch= 2451 // BATCH_SIZE,
epochs=10)
但是训练过程的输出似乎显示了153/154之类的数字,但是我的数据集有3000多个样本)。 所以,最后,steps_per_epoch是关于什么的?我的模型是否在当前状态的每个时期都看到了所有样本?如果没有,我该如何纠正?
Epoch 1/10
153/153 [==============================] - 34s 225ms/step - loss: -0.4054 - dice_coef: 0.4054 - binary_accuracy: 0.2559 - acc: 0.2559
Epoch 2/10
答案 0 :(得分:1)
您是正确的,步数不应等于total_dataset/batch_size
,但没有必要这样做(您可以输入任何一个都不行),这是三种可能的情况:-
No_of_step = total_dataset/batch_size
-在一个时代模型中只能看到一个图像(数据)一次。No_of_step < total_dataset/batch_size
-模型将无法看到少量遗漏的所有图像。No_of_step > total_dataset/batch_size
-一些图像将在网络中传递多次。注意:-如果shuffle = True
,则很难猜测遗漏了哪个图像或重复了哪个图像。