Tensorflow 응용 프로그램 --tf.set_random_seed 사용법

2716 단어 tensorflow
세션 레벨 피드:seed는 코드에서 무작위 수를 사용하지만 코드가 서로 다른 시간이나 기계에서 실행되면 같은 무작위 수를 얻어 같은 결과를 얻을 수 있기를 바랍니다. 그러면 랜덤 함수를 설정하는seed 파라미터가 오래 걸리고 대응하는 변수는session에서 같은 무작위 수를 생성할 수 있습니다. 예:
tf.reset_default_graph()#                     
a= tf.random_normal([1],mean=0, stddev=1, seed=1)
b= tf.random_normal([1],mean=0,stddev=1)
print('Session1')
with tf.Session() as sess1:
  print(sess1.run(a))
  print(sess1.run(a))
  print(sess1.run(b))
  print(sess1.run(b))

print('Session2')
with tf.Session() as sess2:
  print(sess2.run(a))
  print(sess2.run(a))
  print(sess2.run(b))
  print(sess2.run(b))

결과:
Session1
[-0.8113182]
[0.6396971]
[1.1263528]
[1.546696]
Session2
[-0.8113182]
[0.6396971]
[-0.5055166]
[-0.54076374]

a가 seed=1을 설정한 후에 서로 다른 Session에서 a가 발생하는 랜덤수는 일치하지만 b가 서로 다른 Session에서 발생하는 랜덤수는 일치하지 않는다는 것을 알 수 있다.
그림 피드: tf.set_random_seed 랜덤 피드 seed를 하나하나 설정하고 싶지 않으면 전역 설정 tf를 사용할 수 있습니다.set_random_seed () 함수, 사용 후 뒤에 설정된 랜덤 수는 seed를 설정하지 않아도 되고, 세션에 걸쳐 같은 랜덤 수를 생성할 수 있습니다.
예:
tf.reset_default_graph()#                     
tf.set_random_seed(1)#        
a= tf.random_normal([1],mean=0, stddev=1)
b= tf.random_normal([1],mean=0,stddev=1)
print('Session1')
with tf.Session() as sess1:
  print(sess1.run(a))
  print(sess1.run(a))
  print(sess1.run(b))
  print(sess1.run(b))

print('Session2')
with tf.Session() as sess2:
  print(sess2.run(a))
  print(sess2.run(a))
  print(sess2.run(b))
  print(sess2.run(b))

결과:
Session1
[-0.67086124]
[0.9259123]
[-0.3476087]
[-0.03807747]
Session2
[-0.67086124]
[0.9259123]
[-0.3476087]
[-0.03807747]

위의 예에서 우리는 랜덤 피드를 설정해도 같은 세션에서 발생하는 랜덤 수가 일치하지 않는다는 것을 발견했다. 그러면 어떻게 해결합니까?
상황1: 두 변수의 무작위 생성 함수를 정의하는 것과 같이 피드와 같고 결과는 같은 예이다.
tf.reset_default_graph()#                     

a= tf.random_normal([1],mean=0, stddev=1,seed=2)
b= tf.random_normal([1],mean=0,stddev=1,seed=2)
print('Session1')
with tf.Session() as sess1:
  print('a')
  print(sess1.run(a))
  print(sess1.run(a))
  print('b')
  print(sess1.run(b))
  print(sess1.run(b))

결과:
Session1
a
[-0.85811085]
[-0.20793143]
b
[-0.85811085]
[-0.20793143]

상황2: 변수 variable로 설정하여 동일한 세션 재사용 가능한 결과를 얻습니다.
tf.reset_default_graph()#                     

a= tf.Variable(tf.random_normal([1],mean=0, stddev=1,seed=2))
init_op=tf.global_variables_initializer()
print('Session1')
with tf.Session() as sess1:
  sess1.run(init_op)
  print('a')
  print(sess1.run(a))
  print(sess1.run(a))

결과:
Session1
a
[-0.85811085]
[-0.85811085]

좋은 웹페이지 즐겨찾기