tenorflow: tf.set_random_seed() тот же код, но получил разные результаты
Короче говоря, в tensorflow, кроме tf.set_random_seed(), есть ли какой-либо другой конфиг, который я должен установить для воспроизведения того же результата? в моем коде нет операции numpy.
Длинная версия: я тренирую модель с хороводом, и хочу воспроизвести результаты для отладки. Я установил tf.set_random_seed(1) перед построением графика. Все операции выполняются в тензорном потоке, без 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))
Как это может быть случайный переворот с одним и тем же начальным числом и графиком? Любое предложение будет оценено.
1 ответ
Можете ли вы посадить семя tf.image.random_flip_left_right(image, seed = 0)
и проверить?
РЕДАКТИРОВАТЬ
хорошо, вы сказали, что не используете numpy в коде, но TF использует его для некоторых внутренних задач. Итак, не могли бы вы снова попробовать и на этот раз исправить numpy seed.
import numpy as np
from numpy.random import seed
seed(0)
Если это тоже не сработает, возможно, проблема в Horovod
как говорили об этом здесь.