【发布时间】:2020-10-26 21:18:46
【问题描述】:
我正在尝试构建一个卷积网络来对 CIFAR-100 数据集进行分类,但遇到了一个不寻常的问题。现在,我可能犯了一个明显的错误,但由于我对这个领域很陌生,我似乎找不到它。
在我尝试引入 ImageDataGenerator 来增加输入数据之前,网络一直运行良好。我注意到精度差异很大,所以我尝试使用空的 ImageDataGenerator。问题依旧。
datagen = ImageDataGenerator(
)
datagen.fit(train_images)
history = model.fit_generator(datagen.flow(train_images, train_labels, batch_size=128), steps_per_epoch=train_images.shape[0]//128, epochs=250,
validation_data=(test_images, test_labels), callbacks=[callbacks.EarlyStopping(patience=10)])
上面的代码给出以下结果:
Epoch 1/250
390/390 [==============================] - 29s 75ms/step - loss: 4.6235 - accuracy: 0.0040 - val_loss: 4.7914 - val_accuracy: 0.0000e+00
虽然这个没有使用生成器,但提供了一个更好的:
history = model.fit(train_images, train_labels, batch_size=128, epochs=250, validation_data=(test_images, test_labels), callbacks=[callbacks.EarlyStopping(patience=10)])
Epoch 1/250
391/391 [==============================] - 27s 69ms/step - loss: 4.6176 - accuracy: 0.0179 - val_loss: 4.7109 - val_accuracy: 0.0095
由于 ImageDataGenerator 不对输入做任何事情,这两种方法不应该给出相同的结果吗?
【问题讨论】:
-
train_images是什么? numpy 矩阵?图片列表? -
由于随机权重初始化,这些比较毫无意义
-
你需要展示更多的训练结果,然后我们才能告诉你很多事情。单个 epoch 几乎不提供任何信息。如果在较长的训练期间确实存在问题,那么查看 ImageDataGenerator 是如何初始化的会很有用。此外,请注意,如果您在 TF2+ 中,则不推荐使用 fit_generator。你可以只使用 fit 因为它会接受生成器。
标签: python tensorflow keras