批次数和纪元

Number of batches and epoch

我一直在努力理解 epoch 和 batch size 的概念。您可以在下面看到我的 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 个 epoches,批大小为 32。由于批量大小是每个时期的样本数,因此有 163*32 = 5216 个样本,但数据集中只有 3459 个样本。那么当它们不正常时它是否从数据集的开头开始拍摄图像?

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

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

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

batch是怎么构造的,要看具体实现,有的直接不用不成full batch的item,有的用小batch(剩下的做成batch),还有一些合并了以前迭代中的图像以弥补缺失的计数。