簡體   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