【问题标题】:Significantly lower accuracy and loss between TensorFlow versions (2.1.0 and 2.4.0)TensorFlow 版本(2.1.0 和 2.4.0)之间的准确率和损失显着降低
【发布时间】:2021-01-10 18:38:55
【问题描述】:

我正在测试我的 DenseNet-121 实现是否可以在 Ubuntu 上的 GPU (RTX 2060) 上运行,但是当它成功运行时,我观察到损失和准确度的表现明显低于使用不同计算机在 CPU 上设置的性能。

我使用相同的代码进行模型和数据准备、相同的数据集和相同的训练参数。

唯一的区别是令人满意的 macOS CPU 版本运行在 TensorFlow 版本 2.1.0 上,而 Ubuntu GPU 版本运行在 TensorFlow 版本 2.4.0 上。

为了找出唯一可观察到的差异,我使用了 macOS 版本并将 TensorFlow 更新到 2.4.0 版本,现在我记录的结果与在其他设备上一样明显更差。

1 epoch 后的 TensorFlow 版本 2.1.0:

593/593 [==============================] - 733s 1s/sample - loss: 0.3325 - accuracy: 0.8650

1 epoch 后的 TensorFlow 版本 2.4.0:

38/38 [==============================] - 823s 21s/step - loss: 0.3732 - accuracy: 0.3920

*这里最明显的是新 2.4.0 和 2.1.0 之间相同过程的 0.473 精度差异。

有人知道为什么会出现这个问题吗?最简单的解决方案是回到上一个 TensorFlow 版本并获得满意的结果吗?

提前谢谢你!

【问题讨论】:

    标签: python performance tensorflow keras version


    【解决方案1】:

    我注意到,在一种情况下,每个 epoch 有 593 步,而在另一种情况下,每个 epoch 只有 38 步。如果这两种情况下的批量大小相同,那么只有 38 个步骤,您并没有处理所有的训练样本。事实上,您只处理了 3800/593=6.4% 的样本。这当然会导致准确性的不同结果。

    【讨论】:

    • 我认为这也可能是问题所在,但似乎 2.1.0 列出了样本(单个数据点),而 2.4.0 列出了批量。我的批量大小是 16。593 个样本 / 16 个批量大小 = 37.0625 步(因此在 2.4.0 版中是 38 步)。
    • 我在 2.1 上运行,它像 2.4 一样分批列出。我怀疑你在 2.1 版中设置了 batch_size=1,这需要 593 个步骤
    猜你喜欢
    • 1970-01-01
    • 2018-06-10
    • 2019-09-06
    • 2020-08-06
    • 1970-01-01
    • 2017-03-23
    • 2020-01-31
    • 1970-01-01
    • 2019-11-15
    相关资源
    最近更新 更多