我一直在努力了解时代和批量大小的概念。你可以在下面看到我的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个世代,具有32个批处理大小。由于批次大小是每个时期的样本数量,因此数据集中只有163 * 32 = 5216个样本。那么,当他们不懂数据时,它是否会从数据集的开头开始拍摄图像吗?
批处理大小是你提供给模型的每次迭代的样本数。
例如,如果你的数据集包含10,000个样本,并且批次大小为100,则将需要10,000 / 100 = 100
迭代才能达到一个纪元。
你在日志中看到的是纪元数和迭代数。
Epoch 160/170
表示你当前正在运行总共170个纪元中的第160个纪元。你的每个时代都需要进行32次迭代。
知道你的样本只有3,459个,每个批次大小将为3459/32 =108。
你应该已经知道所设置的批次大小,但这也将为你提供答案。
至于批处理的方式,取决于实现方式,有些只是不使用不能构成完整批的项目,有些则使用较小的批处理(剩下的全部制成批处理),有些则合并了图像从以前的迭代中弥补不足的数量。