简而言之,在 tensorflow 中,除了 tf.set_random_seed() 之外,我应该设置任何其他配置来重现相同的结果吗?我的代码中没有 numpy 操作。
长版:我正在用 horovod 训练模型,我想重现结果以进行调试。我在构建图表之前设置了 tf.set_random_seed(1) 。所有操作都在 tensorflow 中,没有 numpy.
而且我只是重新运行了几次训练脚本,代码没有被修改。
据我了解,它们应该产生相同的结果,因为图形是按相同的顺序构建的,并且 random_seed 设置相同。session.run 命令不会造成不同,更何况我没有更改代码。
但是,对于多次运行的相同代码,我仍然得到不同的结果。
具体来说,我可以看到输入图像以相同的顺序读取,并且步骤 'tf.image.random_flip_left_right' 产生具有相同种子的随机翻转。
但是我通过以下代码测试了 tf.image.random_flip_left_right,得到了相同的结果。所以这个函数没有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))
相同的种子和图怎么能随机翻转呢?任何建议将不胜感激。