Keras训练卷积模型时为何未使用全部6万张图像数据集?
问题解答
你对训练日志的解读存在误差,日志中显示的1875是每轮训练的迭代步数(step数),而非训练样本数量,你的6万张训练数据已经全部参与了每一轮训练,没有遗漏,具体原因如下:
- Keras的
model.fit()方法如果不显式指定batch_size参数,默认批大小为32,即每迭代1步会喂入32张图像完成一次梯度更新 - 训练集总样本量为60000,每轮训练的总步数计算公式为:
总样本数 ÷ 单批样本数,代入数值计算可得 60000 ÷ 32 = 1875,和日志显示数值完全吻合 - 每轮训练实际参与的样本总量为
步数 × 单批样本数 = 1875 × 32 = 60000,刚好覆盖全部训练数据
你可以手动修改训练代码的batch_size参数验证逻辑,示例调整如下:
model.fit( x_train, y_train_hot_encode, epochs=20, validation_data=(x_test, y_test_hot_encode), batch_size=64 )
调整后日志中每轮的步数会变为约938(60000÷64≈937.5,向上取整为938),和计算逻辑一致。
内容的提问来源于stack exchange,提问作者Yedidya kfir
相关产品推荐
相关产品推荐

