【发布时间】:2017-07-13 18:02:54
【问题描述】:
我意识到我的模型每次训练时都会有所不同,即使我保持 TensorFlow 随机种子相同。
我证实:
- 初始化是确定性的;第一次更新前的权重是相同的。
- 输入是确定性的。事实上,包括损失在内的各种前向计算对于第一批都是相同的。
- 第一批的梯度不同。具体来说,我正在比较
tf.gradients(loss, train_variables)的输出。虽然loss和train_variables具有相同的值,但某些变量的梯度有时不同。差异非常显着(有时单个变量梯度的绝对差异之和大于 1)。
我的结论是梯度计算导致了不确定性。
我查看了this question,当在具有intra_op_parallelism_thread=1 和inter_op_parallelism_thread=1 的CPU 上运行时,问题仍然存在。
如果向前传球不是,向后传球怎么可能是不确定的?我该如何进一步调试?
【问题讨论】:
标签: tensorflow non-deterministic