首页 > 解决方案 > 完全相同的代码在不同设备上得到完全不同的 Tensorboard 结果

问题描述

我有完全相同的代码来创建 TFRecord 文件并分别在两台计算机上训练我的模型(使用 GPU)。

1 关于硬件:

一个是我的 MacBook,带有 NVIDIA GTX1080 eGPU,tf1.6。另一个是带有 NVIDIA M4000 tf1.6 的 Ubuntu 16 服务器,

2 关于代码:

我用

tf.set_random_seed(FLAGS.seed)

np.random.seed(FLAGS.seed)

FLAGS.seed = 1

在我需要使用随机函数的地方。

我没有任何关于设备的代码

3 TensorBoard 输出:

MacBook: 在此处输入图像描述

Ubuntu 服务器: 在此处输入图像描述

val 几乎不变的准确率和 mIOU

4 其他尝试

  1. 我改变了我的损失函数,但问题仍然存在。
  2. 我将 Ubuntu 中的 tensorflow 升级到 tf1.10,但问题仍然存在。

5 我的猜测

M4000 支持 64 位计算,而 1080 只支持 32 位,可能与此有关?

6 我的问题

这个问题的原因是什么,我该如何修复它?

标签: pythontensorflowgputensorboard

解决方案


我为我的问题找到了一个可能的原因。

由于我的数据集特征很复杂,在我发布这个问题后,我在我的问题中多次看到像“Ubuntu Server”这样的张量板曲线,但经过一段时间后,“acc”和“mIOU”曲线看起来像“ MacBook”。

所以我猜在 cuDNN 中存在一些与硬件相关的功能,这会导致细微的差异。


推荐阅读