繁体   English   中英

tensorflow: tf.set_random_seed() 相同的代码,但得到不同的结果

[英]tensorflow: tf.set_random_seed() same code, but got different results

简而言之,在 tensorflow 中,除了 tf.set_random_seed(),我应该设置任何其他配置来重现相同的结果吗? 我的代码中没有 numpy 操作。

长版:我正在用 horovod 训练 model,我想重现结果以进行调试。 我在构建图表之前设置了 tf.set_random_seed(1) 。 所有操作都在 tensorflow 中,没有 numpy。

而且我只是重新运行了几次训练脚本,代码没有被修改。

据我了解,它们应该产生相同的结果,因为图形是按相同的顺序构建的,并且 random_seed 设置相同。 session.run 命令不会导致不同,更何况我没有更改代码。

但是,对于多次运行的相同代码,我仍然得到不同的结果。

具体来说,我可以看到输入图像以相同的顺序读取,并且步骤 'tf.image.random_flip_left_right' 产生具有相同种子的随机翻转。

但是我通过以下代码测试了 tf.image.random_flip_left_right,得到了相同的结果。 所以这个function没有bug。 它确实接受了全局 tf random_seed 并产生了相同的结果。

import tensorflow as tf                                                                                                              
tf.set_random_seed(0)
img_raw =tf.read_file('test.jpg')
image = tf.image.decode_jpeg(img_raw,channels=3,dct_method='INTEGER_ACCURATE')
image = tf.image.random_flip_left_right(image)

sess=tf.Session()
print(sess.run(image))

相同的种子和图怎么能随机翻转呢? 任何建议将不胜感激。

您可以在tf.image.random_flip_left_right(image, seed = 0)中设置种子并进行测试吗?

编辑

好吧,你说你没有在代码中使用 numpy 但 TF 将它用于一些内部任务。 那么,您能否再次尝试修复 numpy 种子。

import numpy as np
from numpy.random import seed
seed(0)

如果这也不起作用,那么问题可能出在Horovod上,正如这里所说的那样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM