代码之家  ›  专栏  ›  技术社区  ›  Dulmina

在Keras模型中,如果样本大小不能被批量大小整除怎么办?

  •  -1
  • Dulmina  · 技术社区  · 7 年前

    如果我们在Keras模型训练中将批量大小指定为15,样本大小指定为1000,而样本大小不能被15整除,那会怎么样?它还能训练吗?

    我也仔细研究过这个答案,但没用 question

    请大家解释一下谢谢。

    2 回复  |  直到 7 年前
        1
  •  2
  •   Dulmina    7 年前

    嗨,伙计们,我找到了答案。 如果是这样的话,它会把剩下的10个样本带到新纪元的最后一步。

    如: 15x66+10=1000 这意味着它将需要66批15号,最后的步骤只需要10个。

    不管怎样,这只适用于 input_shape ,如果我们使用 batch_input_shape 它会给我们一个错误,因为我们在图形级别指定批处理形状。

        2
  •  1
  •   AaronDT    7 年前

    这对您的培训和验证数据没有问题。发电机会处理这个的。因此,您可以简单地使用:

    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
    
    推荐文章