【发布时间】:2020-04-19 13:08:42
【问题描述】:
我知道有很多相关的问题,但我希望有人可以针对我正在尝试构建的模型提供一些建议。
这是一个图像分类模型。目前我正在尝试对 40 个不同的类别(40 种不同类型的动物)进行分类。每个类中有 120 到 220 张图像。我的训练集是 4708 张图像,我的验证集是 2512 张图像。
我运行了一个顺序模型(代码如下),其中我使用了 64 和 30 个 epoch 的批量大小。该代码需要很长时间才能运行。 30 个 epoch 后的准确度在验证集上约为 67,在训练集上约为 70。验证集的损失约为 1.2,训练集的损失约为 1(我在下面包含了最后 12 个 epoch 的结果)。它似乎在大约 25 个 epoch 后逐渐减少。
我的问题是关于批量大小和时期的。使用更大或更小的批量大小(超过 64 个)是否有价值,我应该使用更多的 epoch。我读到通常在 50 到 100 个 epoch 之间是常见的做法,但是如果我的结果在 25 之后逐渐减少,那么增加更多是有价值的。
型号
history = model.fit_generator(
train_data_gen,
steps_per_epoch= 4708 // batch_size,
epochs=30,
validation_data=val_data_gen,
validation_steps= 2512 // batch_size
)
结果
Epoch 18/30
73/73 [==============================] - 416s 6s/step - loss: 1.0982 - accuracy: 0.6843 - val_loss: 1.3010 - val_accuracy: 0.6418
Epoch 19/30
73/73 [==============================] - 414s 6s/step - loss: 1.1215 - accuracy: 0.6712 - val_loss: 1.2761 - val_accuracy: 0.6454
Epoch 20/30
73/73 [==============================] - 414s 6s/step - loss: 1.0848 - accuracy: 0.6809 - val_loss: 1.2918 - val_accuracy: 0.6442
Epoch 21/30
73/73 [==============================] - 413s 6s/step - loss: 1.0276 - accuracy: 0.7013 - val_loss: 1.2581 - val_accuracy: 0.6430
Epoch 22/30
73/73 [==============================] - 415s 6s/step - loss: 1.0985 - accuracy: 0.6854 - val_loss: 1.2626 - val_accuracy: 0.6575
Epoch 23/30
73/73 [==============================] - 413s 6s/step - loss: 1.0621 - accuracy: 0.6949 - val_loss: 1.3168 - val_accuracy: 0.6346
Epoch 24/30
73/73 [==============================] - 415s 6s/step - loss: 1.0718 - accuracy: 0.6869 - val_loss: 1.1658 - val_accuracy: 0.6755
Epoch 25/30
73/73 [==============================] - 419s 6s/step - loss: 1.0368 - accuracy: 0.6957 - val_loss: 1.1962 - val_accuracy: 0.6739
Epoch 26/30
73/73 [==============================] - 419s 6s/step - loss: 1.0231 - accuracy: 0.7067 - val_loss: 1.3491 - val_accuracy: 0.6426
Epoch 27/30
73/73 [==============================] - 434s 6s/step - loss: 1.0520 - accuracy: 0.6919 - val_loss: 1.2039 - val_accuracy: 0.6683
Epoch 28/30
73/73 [==============================] - 417s 6s/step - loss: 0.9810 - accuracy: 0.7151 - val_loss: 1.2047 - val_accuracy: 0.6711
Epoch 29/30
73/73 [==============================] - 436s 6s/step - loss: 0.9915 - accuracy: 0.7140 - val_loss: 1.1737 - val_accuracy: 0.6711
Epoch 30/30
73/73 [==============================] - 424s 6s/step - loss: 1.0006 - accuracy: 0.7087 - val_loss: 1.2213 - val_accuracy: 0.6619
【问题讨论】:
-
关于您的模型(或您的数据,我们没有)没有什么特别要说的;关于批量大小,适用 SO 线程 How to calculate optimal batch size 中提到的一般注意事项。
标签: python tensorflow machine-learning keras neural-network