首页 > 解决方案 > TensorFlow 版本(2.1.0 和 2.4.0)之间的准确率和损失显着降低

问题描述

我正在测试我的 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 版本并获得令人满意的结果?

先感谢您!

标签: pythonperformancetensorflowkerasversion

解决方案


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


推荐阅读