【发布时间】:2018-02-02 13:48:19
【问题描述】:
使用 Tensorflow 开展项目。但是,我似乎无法重现我的结果。
我尝试过设置图形级种子、numpy 随机种子甚至操作级种子。但是,它仍然无法重现。
在 Google 上搜索时,大多数人指出 reduce_sum 函数是罪魁祸首,因为即使在设置种子之后,reduce_sum 函数在 gpu 上也具有非确定性属性。但是,由于我正在为一篇论文做一个项目,我需要重现结果。有没有其他有效的功能可以解决这个问题?
另一个建议是使用 CPU。但是,我正在处理错误数据,这样的 CPU 不是一个选项。使用 Tensorflow 从事复杂项目的人们如何解决这个问题?或者审核者是否可以加载保存的模型检查点文件以进行结果验证?
【问题讨论】:
-
我认为这是因为浮点数的求和运算并不是真正的自适应,即
a+(b+c)并不总是等于(a+b)+c。因此,在无法保证操作顺序的情况下进行任何并行计算,每次都会得到不同的结果。它可以从微小的差异开始,但随着时间的推移它们会增长。 -
如果您不确定审稿人可以接受或不接受的内容,您可以询问您部门的高级成员,或者如果您是学生,请咨询您的主管; here is a related question in Academia SE。我可以说的是,TensorFlow 已被许多公认的学术出版物使用。这可能取决于结果的可变性、数据的大小以及您的特定领域/问题等。
-
@stop-cran 我注意到...我注意到我增加的数据集大小越多,结果之间的差距就越大。
-
你可以试试夜间版本吗?最近的提交 (d93a55b8) 应该使 GPU 上的 reduce_sum 具有确定性
-
@YaroslavBulatov,从未听说过。谢谢会看看它是如何工作的。
标签: machine-learning tensorflow deep-learning