【问题标题】:Keras: Why isn't observed batch size matching up with the specified batch size?Keras:为什么观察到的批量大小与指定的批量大小不匹配?
【发布时间】:2017-01-30 20:17:01
【问题描述】:

我通过在我的代码中执行此操作来指定批量大小为 500:

model.fit(x_train, y_train, validation_data=(x_test, y_test), nb_epoch=100, batch_size=500, verbose=1)

当我运行代码时,第一个batch size是500,之后的batch size好像是5000甚至更大,为什么会出现这种情况?

我认为批量大小较大的原因是因为模型似乎从第 500 行到第 6000 行,即 5500 行。

Epoch 100/100
  500/31016 [..............................] - ETA: 0s - loss: 0.1659 - acc: 0.7900
 6000/31016 [====>.........................] - ETA: 0s - loss: 0.1679 - acc: 0.7865
11500/31016 [==========>...................] - ETA: 0s - loss: 0.1688 - acc: 0.7850
17000/31016 [===============>..............] - ETA: 0s - loss: 0.1692 - acc: 0.7842
23000/31016 [=====================>........] - ETA: 0s - loss: 0.1694 - acc: 0.7839
29000/31016 [===========================>..] - ETA: 0s - loss: 0.1693 - acc: 0.7841
31016/31016 [==============================] - 0s - loss: 0.1693 - acc: 0.7841 - val_loss: nan - val_acc: 0.6799

【问题讨论】:

  • 看起来您的网络只是在学习进度条的每个刷新周期约 5000 次迭代。不过,如果不知道 model.fit 的内部结构,这很难说。
  • 我的回答错了吗?你读过吗?

标签: machine-learning tensorflow neural-network keras


【解决方案1】:

这是一个非常有趣的问题。负责显示进度条的代码部分是一个名为progbar 的实用程序,它被定义为here。它接受作为参数的最小视觉进度更新间隔,默认设置为0.01 秒。在fit 计算期间打印进度条时也会使用此默认值,这可能是这种奇怪行为背后的原因。

【讨论】:

    猜你喜欢
    • 2020-09-19
    • 2020-11-13
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    相关资源
    最近更新 更多