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как говорили об этом здесь.

Другие вопросы по тегам