1

我一直在努力理解时代和批量大小的概念。你可以在下面看到我的 CNN 的训练结果:

Epoch 160/170
32/32 [==============================] - 90s 3s/step - loss: 0.5461 - accuracy: 0.8200 - val_loss: 0.6561 - val_accuracy: 0.7882
Epoch 161/170
32/32 [==============================] - 92s 3s/step - loss: 0.5057 - accuracy: 0.8356 - val_loss: 0.62020 - val_accuracy: 0.7882
Epoch 162/170
32/32 [==============================] - 90s 3s/step - loss: 0.5178 - accuracy: 0.8521 - val_loss: 0.6652 - val_accuracy: 0.7774
Epoch 163/170
32/32 [==============================] - 94s 3s/step - loss: 0.5377 - accuracy: 0.8418 - val_loss: 0.6733 - val_accuracy: 0.7822

所以有 163 个 epoch,32 个批大小。由于批量大小是每个时期的样本数,因此有 163*32 = 5216 个样本,但数据集中只有 3459 个样本。那么当它们不足够时,它是否开始从数据集的开头拍摄图像?

4

1 回答 1

3

批量大小是您提供给模型的每次迭代的样本数。
例如,如果您有一个包含 10,000 个样本的数据集,并且您使用 100 的批大小,那么将需要10,000 / 100 = 100迭代才能达到一个 epoch。

您在日志中看到的是 epoch 数和迭代次数。
Epoch 160/170表示您当前正在运行总共 170 个 epoch 中的 160 个 epoch。你的每个 epoch 需要 32 次迭代。

知道您的样本只有 3,459 个,每个批次大小将是 3459 / 32 = 108。
您应该已经知道您设置的批次大小,但这也应该给您答案。

至于如何构建batch,取决于实现,有些只是不使用不完整batch的项目,有些使用较小的batch(剩下的就做成batch),有些合并图像从以前的迭代中弥补缺失的计数。

于 2020-12-07T05:17:04.247 回答