【问题标题】:TensorFlow - Fashion MNIST Steps Per EpochTensorFlow - 每个时代的时尚 MNIST 步骤
【发布时间】:2020-07-17 21:43:59
【问题描述】:

我正在使用 Kera 的时尚 MNIST 数据集。当我拟合我的模型时,我注意到要完成一个 epoch,它必须经过 1500 步。

history = model.fit(x_train, y_train, epochs=30, validation_split=0.2)

Epoch 3/30
1500/1500 [==============================] - 3s 2ms/step - loss: 0.4494 - sparse_categorical_accuracy: 0.8438 - val_loss: 0.4691 - val_sparse_categorical_accuracy: 0.8308
Epoch 4/30
964/1500 [==================>...........] - ETA: 0s - loss: 0.4294 - sparse_categorical_accuracy: 0.8504

我正在查看 fit 函数的 docs,但不明白为什么默认步数设置为 1500。我知道当 steps_per_epochNone 时,行为取决于数据类型数据集,但是如何检查数据类型是张量还是 tf.data?

【问题讨论】:

  • 每个epoch的步数等于ceil(samples / batch_size)。它不依赖于数据类型。
  • @jakub,如果我没有在我的代码中指定batch_size,它会默认在哪里?
  • 默认批量大小为 32。model.fit 文档中有此内容。
  • @jakub,这对我来说没有意义。如果每个 epoch 的步数等于ceil(60000/32),那么日志输出应该是 1875/1875,对吧?
  • 请看我的回答。

标签: tensorflow tensorflow2.0 tf.keras


【解决方案1】:

每个 epoch 的步数等于ceil(samples / batch_size)model.fit 中的默认批量大小为 32 (documentation)。如果 MNIST 训练数据有 60000 个样本,那么每个 epoch 需要 60000 / 32 = 1875 步。

model.fit 还支持将您的数据拆分为训练集和验证集。您已经使用validation_split=0.2 完成了此操作,因此只有 80% 的样本是训练集的一部分(20% 用于验证)。新的计算将是 0.8 * 60000 / 32 = 1500。这就是为什么您会看到每个 epoch 有 1500 步。

【讨论】:

  • 我刚刚发现了这一点,正准备回答我自己的问题。
猜你喜欢
  • 2022-01-15
  • 2019-04-01
  • 2019-08-01
  • 2019-11-23
  • 2020-12-05
  • 2021-10-24
  • 2016-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多