我正在测试我的DenseNet-121实现是否可以在Ubuntu上的GPU(RTX 2060(上运行,但当它成功运行时,我观察到损失和准确性的表现明显比在不同计算机的CPU上设置的性能差。
我使用相同的代码进行模型和数据准备,使用相同的数据集和相同的训练参数。
唯一的区别是,令人满意的macOS CPU版本运行在TensorFlow 2.1.0版本上,而Ubuntu GPU版本运行在TensorFlow 2.4.0版本上。
为了隔离唯一可观察到的差异,我使用了macOS版本,并将TensorFlow更新到2.4.0版本,现在我记录的结果与其他设备上的结果一样糟糕。
TensorFlow 2.1.0版本在1个历元之后:
593/593 [==============================] - 733s 1s/sample - loss: 0.3325 - accuracy: 0.8650
TensorFlow 2.4.0版本在1个历元之后:
38/38 [==============================] - 823s 21s/step - loss: 0.3732 - accuracy: 0.3920
*这里最引人注目的是新2.4.0和2.1.0之间相同过程的精度差异0.473。
有人知道为什么会出现这个问题吗?最简单的解决方案是回到上一个TensorFlow版本并获得满意的结果吗?
提前谢谢!
我注意到,在一种情况下,每个epoch有593步,而在另一种情况中,每个epoc只有38步。如果两种情况下的批量大小相同,那么只有38个步骤,您就无法处理所有的训练样本。事实上,您只处理了3800/593=6.4%的样本。这当然会导致准确性上的不同结果。