random tensor-随机生成种子操作(tf.set_random_seed(interger))

random seed操作其实分为两种:graph-level(图级)和op-level(操作级),随机数生成种子是在数据流图资源上运作的,接下来让我具体介绍它们。

第一种情况:要在Session中生成不同的序列,请既不设置图级别也不设置op级别种子:

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中,生成的序列都不同。

第二种情况:要为跨Session生成相同的可重复序列,请为op设置种子:

import tensorflow as tf

a = tf.random_uniform([1], seed=1)     #op-level 随机生成种子
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'

 实验结果:

 

明显可以看出在op-level级随机生成种子的操作后,同一个Session内生成不同的序列,跨Session生成相同的序列。

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

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每次生成的序列是固定的。

 

转载于:https://www.cnblogs.com/happy-sir/p/11530528.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值