如何使用keras理解fit_generator中的steps_per_epoch?

时间:2019-10-28 08:15:50

标签: machine-learning keras deep-learning

给我的印象是,可以使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

1 个答案:

答案 0 :(得分:1)

您是正确的,步数不应等于total_dataset/batch_size,但没有必要这样做(您可以输入任何一个都不行),这是三种可能的情况:-

  1. No_of_step = total_dataset/batch_size-在一个时代模型中只能看到一个图像(数据)一次。
  2. No_of_step < total_dataset/batch_size-模型将无法看到少量遗漏的所有图像。
  3. No_of_step > total_dataset/batch_size-一些图像将在网络中传递多次。

注意:-如果shuffle = True,则很难猜测遗漏了哪个图像或重复了哪个图像。