如果在Keras模型中样本大小不能被batch_size整除怎么办

时间:2019-01-12 11:12:36

标签: tensorflow machine-learning keras

如果我们将批次大小指定为15,而在Keras模型训练中将样本大小指定为不能被15整除的1000,该怎么办?

我也一直在寻找这个答案,但这对question

没有帮助

任何人都可以解释一下谢谢。

2 个答案:

答案 0 :(得分:1)

大家好,我找到了答案。 如果是这样,它将采取剩余的10个样本到时代的最后一步。

例如:15x66+10=1000意味着将需要66批15号的批次,而最后的步骤仅需10批次。

无论如何,这仅适用于input_shape,如果我们使用batch_input_shape,它将给我们一个错误,因为我们在图形级指定了批处理形状。

答案 1 :(得分:0)

这对您的培训和验证数据没有问题。生成器将对此进行处理。因此,您可以简单地使用:

STEPS = train_generator.n // train_generator.batch_size
VALID_STEPS = validation_generator.n // train_generator.batch_size

history = model.fit_generator(
    train_generator,
    steps_per_epoch=STEPS,
    epochs=100,
    validation_data=validation_generator,
    validation_steps=VALID_STEPS)

但是,对于您的测试集,请确保批次大小适合数据,否则当比较两者时,您可能会面临预测与真实标签不匹配的风险(请参阅突出显示此https://medium.com/difference-engine-ai/keras-a-thing-you-should-know-about-keras-if-you-plan-to-train-a-deep-learning-model-on-a-large-fdd63ce66bd2的本文)。您可以使用循环来确保批次大小适合您的数据,例如:

for i in range(1,160):
    if len(test_data) % i == 0:
        div = i
batch_size = div