我在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差异,它是高斯分布的参数和零均值高斯)。
损失价值的主要差异可能是什么原因?
答案 0 :(得分:0)
我使用的数据集是一个.mat
文件,使用scipy
的{{1}}创建并加载savemat
。它是在我的Macbook上创建的,并通过loadmat
分发给其他机器。事实证明问题出在这个scp
文件上(虽然我不知道究竟是什么)。我已经离开了.mat
文件,现在一切都很好。