完全相同的代码在不同的设备上得到完全不同的 Tensorboard 结果

The exactly same code gets completely different Tensorboard results on different devices

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

1 关于硬件:

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

2 关于代码:

我用

tf.set_random_seed(FLAGS.seed)

np.random.seed(FLAGS.seed)

FLAGS.seed = 1

任何需要使用随机函数的地方。

I don't have any code about device

3 TensorBoard 输出:

苹果电脑:

Ubuntu 服务器:

val的准确率和mIOU几乎没有变化

4 次其他尝试

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

5 我的猜测

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

6 我的问题

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

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

因为我的数据集特征比较复杂,在我post这个问题之后,我在我的问题中多次看到像'Ubuntu Server'这样的tensorboard曲线,但是在一些epoch之后,'acc' 和 'mIOU' 曲线看起来像 'macbook'.

的结果

所以我猜cuDNN中存在一些与硬件相关的函数,导致了细微的差异。