ランダムtensor-ランダムに生成されたシード操作(tf.set_random_seed(interger))

ランダムシードは、実際には2つの動作に分けられる:グラフレベル(図レベル)およびOPレベル(動作レベル)、乱数発生器のシードは、データフロー図のリソースで動作している、私は、具体的にそれらを導入しましょう。

最初のケース:、設けられていないもOP図レベルレベルシードどちらのセッションで生成される異なるシーケンスを設定してください。

= tf.random_uniform([1])
、B = tf.random_normal([1])
印刷( "セッション1")
tf.Sessionと()sess1として:
  プリント(sess1.run(A))#は、 'A1'を生成
  プリント(sess1.run(A))#が'A2'を生成する
  プリント(sess1.runを( B))#生成'B1' 
  プリント(sess1.run(B))# 'はB2'を生成する

プリント( "セッション2")
sess2としてtf.Session(との)
  プリント(sess2.run(A))# 'が生成しますA3' 
  、A4 'プリント(sess2.run(A))#が発生' 
  プリント(sess2.run(B))#生成'B3' 
  B4 'を印刷(sess2.run(B))#が生成します'

  結果:

 

明らかなように、同じまたは異なるセッションのセッションでいるかどうか、生成された配列が異なっています。

後者の場合:同じシーケンスを生成するには、セッション間で繰り返すことができ、オペアンプの種を設定してください。

TFとしてインポートtensorflow 

= tf.random_uniform([1]、種子= 1)#1、OP-レベル随机生成种子
B = tf.random_normal([1]) 
印刷( "セッション1")
sess1としてtf.Session()と:
  プリント(sess1.run(A))# 'はA1'を生成
  プリント(sess1.run(A))# 'はA2'を生成する
  プリント(sess1.run(B))# 'はB1'を生成する
  プリント(sess1.run(Bを))#生成'B2' 

プリント( "セッション2")
tf.Session有する()sess2として:
  プリント(sess2.run(A))# 'はA3'を生成
  プリント(sess2.run(A))#「はA4を生成します「
  プリント(sess2.run(B))#が生成する'B3' 
  B4 'を印刷(sess2.run(B))を#が生成します'

 結果:

 

動作は明らかでランダムに生成されたシード段階のOPレベルの後に、同じセッション内の異なるシーケンスを生成する、インターセッションは同一の配列を生成します。

第三种情况:要使所有生成的随机序列在会话中可重复,就要设置图级别的种子:

import tensorflow as tf

tf.set_random_seed(1234)
a = tf.random_uniform([1])
b = tf.random_normal([1])

print( "Session 1")
with tf.Session() as sess1:
  print (sess1.run(a))  # generates 'A1'
  print (sess1.run(a))  # generates 'A2'
  print (sess1.run(b))  # generates 'B1'
  print (sess1.run(b))  # generates 'B2'

print( "Session 2")
with tf.Session() as sess2:
  print (sess2.run(a))  # generates 'A3'
  print (sess2.run(a))  # generates 'A4'
  print (sess2.run(b))  # generates 'B3'
  print (sess2.run(b))  # generates 'B4'

 

 

明显可以看出,跨Session生成的所有序列都是重复的,但是在档额Session里是不同的,这就是graph-level的随机生成种子。这tf.set_random_seed(interger)  中不同的interger没有什么不同,只是相同的interger每次生成的序列是固定的。

 

おすすめ

転載: www.cnblogs.com/happy-sir/p/11530528.html