【发布时间】:2017-11-13 23:51:30
【问题描述】:
我使用 Tensorflow 作为后端在 Keras 中编写了一个变分自动编码器。作为优化器,我使用 Adam,学习率为 1e-4,批量大小为 16。当我在 Macbook 的 CPU(英特尔酷睿 i7)上训练网络时,一个 epoch(约 5000 个小批量)后的损失值小 2 倍比在运行 Ubuntu 的另一台机器上的第一个纪元之后。对于另一台机器,我在 CPU 和 GPU(Intel Xeon E5-1630 和 Nvidia GeForce GTX 1080)上都得到了相同的结果。 Python 和我正在使用的库具有相同的版本号。两台机器都使用 32 位浮点数。如果我使用不同的优化器(例如 rmsprop),机器之间的显着差异仍然存在。我正在设置 np.random.seed 以消除随机性。
我的网络输出logits(我在输出层有线性激活),损失函数是tf.nn.sigmoid_cross_entropy_with_logits。最重要的是,一层有一个正则化器(其激活之间的 KL 散度,它是高斯分布的参数,和零均值高斯)。
损失价值出现重大差异的原因可能是什么?
【问题讨论】:
-
您能否提供更多关于您的数据和第一个 epoch 之后的训练历史的详细信息?
-
你是否也在为数据洗牌队列设置种子?
标签: python machine-learning tensorflow keras autoencoder