tensorflow随机性设置
案例一:?
import tensorflow as tf tf.set_random_seed(42) sess = tf.InteractiveSession() a = tf.constant([1, 2, 3, 4, 5]) tf.initialize_all_variables().run() a_shuf = tf.random_shuffle(a) print(a.eval()) print(a_shuf.eval()) sess.close()上述代碼重復(fù)運行會產(chǎn)生不一樣的結(jié)果
?
import tensorflow as tf tf.set_random_seed(42) sess = tf.InteractiveSession() a = tf.constant([1, 2, 3, 4, 5]) tf.initialize_all_variables().run() a_shuf = tf.random_shuffle(a,seed=42) print(a.eval()) print(a_shuf.eval()) sess.close()這段代碼產(chǎn)生相同的結(jié)果
?
案例二:
?
第一次運行:
?variables with global seed?
round 2.0
[[-0.89710885 ?0.39287093]
?[ 0.4009913 ?-1.9170585 ]]
[[ 1.2090957 ?-0.13654923]
?[ 1.6384401 ?-0.18959242]]
round 2.1
[[-0.89710885 ?0.39287093]
?[ 0.4009913 ?-1.9170585 ]]
[[ 1.2090957 ?-0.13654923]
?[ 1.6384401 ?-0.18959242]]
第一次與第二次不斷的創(chuàng)建圖,其結(jié)果是相同的
第二次運行:
variables with global seed?
round 2.0
[[ 1.1742289 ? 0.03763932]
?[ 0.7202809 ?-0.52002007]]
[[ 1.5818138 ? 0.81615436]
?[ 1.2647419 ?-0.6432518 ]]
round 2.1
[[ 1.1742289 ? 0.03763932]
?[ 0.7202809 ?-0.52002007]]
[[ 1.5818138 ? 0.81615436]
?[ 1.2647419 ?-0.6432518 ]]
第一次運行與第二次運行結(jié)果不相同;
結(jié)論:只靠tf.set_random_seed是沒有辦法做到消除隨機性 ,該函數(shù)可以在一次運行中,創(chuàng)建的多個圖的結(jié)果是一樣的; 因為從本質(zhì)上來講,operation-level的初始值是一樣的(因為初始化一次被多個圖使用),而graph-level的隨機種子相同,所以對于不同的圖而言,不存在隨機性;
隨機性由兩個隨機種子確認(Operations that rely on a random seed actually derive it from two seeds: the graph-level and operation-level seeds來自 于tensorflow官網(wǎng))
?
總結(jié)
以上是生活随笔為你收集整理的tensorflow随机性设置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决GPU模型训练的随机性
- 下一篇: 数据集shuffle方法中buffer_