Python TensorFlow版本(2.1.0和2.4.0)之间的精度和损失显著降低

Python TensorFlow版本(2.1.0和2.4.0)之间的精度和损失显著降低,python,performance,tensorflow,keras,version,Python,Performance,Tensorflow,Keras,Version,我当时正在测试我的DenseNet-121实现是否可以在Ubuntu上的GPU(RTX 2060)上运行,但当它成功运行时,我观察到丢失和准确率的表现要比另一台计算机在CPU上设置的性能差得多 我在模型和数据准备中使用了相同的代码、相同的数据集和相同的训练参数 唯一的区别是,令人满意的macOS CPU版本在TensorFlow 2.1.0版上运行,而Ubuntu GPU版本在TensorFlow 2.4.0版上运行 为了找出唯一可以观察到的差异,我访问了macOS版本,并将TensorFlow

我当时正在测试我的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/样本-损耗:0.3325-精度:0.8650

TensorFlow 2.4.0版1个历元后:

38/38[================================================-823s 21s/步长-损耗:0.3732-精度:0.3920

*这里最值得注意的是新的2.4.0和2.1.0在相同过程中的精度差异为0.473

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


提前谢谢你

我注意到,在一种情况下,每个历元有593步,而在另一种情况下,每个历元只有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个步骤