简而言之,在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,它给出了相同的结果。因此,此功能没有错误。它确实接受了全局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))
如何用相同的种子和图形随机翻转?任何建议将不胜感激。
答案 0 :(得分:1)
您可以在tf.image.random_flip_left_right(image, seed = 0)
中设置种子并进行测试吗?
编辑
好的,您说过您没有在代码中使用numpy,但是TF将其用于一些内部任务。因此,您能否再次尝试并这次也修复numpy种子。
import numpy as np
from numpy.random import seed
seed(0)
如果这还行不通,则可能是Horovod
遇到的问题here。