You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras未使用完整数据集训练问题及修复咨询

别担心!你的模型其实在用到全部60000条训练数据

你是不是看到训练输出里的1875就以为模型只用到了1875条数据?其实这是个常见的误解——1875是训练的step(步数),不是样本数量!

原因解释

Keras的model.fit()方法默认使用batch_size=32,也就是每次训练会一次性处理32条样本。你的训练集总共有60000条数据,60000 ÷ 32 = 1875,所以每个epoch会跑完1875个step,每个step处理32条样本,加起来正好是全部60000条数据。

你可以自己验证一下:在代码里加一行print(len(train_images)),会输出60000,再算一下32×1875,结果也是60000,完全对得上。

几个验证/调整方案

  • 手动指定batch_size:如果想让每个epoch只跑1个step(一次性处理全部数据),可以把batch_size设为60000:

    model.fit(train_images, train_labels, epochs=10, batch_size=60000)
    

    这时候训练输出就会显示1/1,直观看到整个训练集被一次性处理。

  • 调整verbose参数:把verbose设为2,训练输出会直接显示总样本数,而不是step数:

    model.fit(train_images, train_labels, epochs=10, verbose=2)
    

    输出会变成这样:

    Epoch 1/10
    60000/60000 - 3s - loss: 0.3183 - accuracy: 0.8866

  • 查看训练日志细节:如果用TensorBoard之类的工具,也能看到每个epoch处理的样本总数确实是60000。

所以你的模型训练完全是正常的,只是输出显示的是step数而非样本数而已~

内容的提问来源于stack exchange,提问作者Sabyasachi Bhoi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 09:17:33