【问题标题】:Significant lower accuracy when using empty ImageDataGenerator in Tensorflow Keras在 Tensorflow Keras 中使用空 ImageDataGenerator 时准确度显着降低
【发布时间】: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


【解决方案1】:

实际上,我认为使用第一个 epoch 作为 CNN 工作情况的标志并不是一个好主意。您应该让它收敛,看看是否存在真正的性能差异。

此外,与 ImageDataGenerator 相比,使用原始数据也有所不同。 ImageDataGenerator 在训练期间使用不同的值创建数据增强。我认为使用默认值并不是一个好主意,尽管这样做只是复制数据。至少尝试将一些值更改为 width_shift_range、height_shift_range 和 rotation_range。

【讨论】:

  • 我明白,虽然我只展示了第一个 epoch,但原始数据模型的训练比使用 ImageDataGenerator 的模型好得多。我的意思是表明,即使 ImageDataGenerator 没有改变输入,结果也大不相同。
  • 是的,没错,我想我应该改变我的答案,虽然你问的是不同的东西。问题是即使使用相同的数据,性能也往往会发生变化,因为还有一些其他因素需要考虑,例如生成权重的随机种子。此外(这里有点推测),使用 ImageDataGenerator 可能会改变读取图像的顺序。希望它可以帮助你。
  • 谢谢,我认为 shuffle 可能默认设置为 True,尽管这似乎不会对结果产生太大影响。我将不得不进行实验。
猜你喜欢
  • 2019-04-27
  • 1970-01-01
  • 2018-10-23
  • 1970-01-01
  • 1970-01-01
  • 2020-10-17
  • 2020-11-22
  • 1970-01-01
  • 2018-05-15
相关资源
最近更新 更多