Tensorflow在机器之间的主要损失差异

时间:2017-06-12 13:20:06

标签: python machine-learning tensorflow keras autoencoder

我在Keras中使用Tensorflow作为后端编写了一个变分自动编码器。作为优化器,我使用Adam,学习率为1e-4,批量大小为16.当我在Macbook的CPU(英特尔酷睿i7)上训练网时,一个纪元(~5000个小批量)之后的损失值小了2倍。比在运行Ubuntu的另一台机器上的第一个纪元之后。对于其他机器,我在CPU和GPU(Intel Xeon E5-1630和Nvidia GeForce GTX 1080)上都获得了相同的结果。 Python和我正在使用的库具有相同的版本号。两台机器都使用32位浮点。如果我使用不同的优化器(例如rmsprop),那么机器之间的显着差异仍然存在。我正在设置np.random.seed以消除随机性。

我的净输出记录(我在输出层中有线性激活),损失函数是tf.nn.sigmoid_cross_entropy_with_logits。最重要的是,一层有一个正则化器(它的激活之间的KL差异,它是高斯分布的参数和零均值高斯)。

损失价值的主要差异可能是什么原因?

1 个答案:

答案 0 :(得分:0)

我使用的数据集是一个.mat文件,使用scipy的{​​{1}}创建并加载savemat。它是在我的Macbook上创建的,并通过loadmat分发给其他机器。事实证明问题出在这个scp文件上(虽然我不知道究竟是什么)。我已经离开了.mat文件,现在一切都很好。