Tensorflow学习笔记(3)

本文介绍了在TensorFlow中如何通过设置不同级别的种子来控制随机数生成的序列。通过不设置种子,可以在不同会话中生成不同的序列;通过设置操作级别的种子,可以确保同一操作在不同会话中生成相同的序列;而设置图级别的种子则让所有操作在不同会话中生成可重复的序列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、tf.ones(shape,type=tf.float32,name=None)
      tf.ones([ 2 , 3 ], int32) ==> [[ 1 , 1 , 1 ], [ 1 , 1 , 1 ]]

2、tf.zeros(shape,type=tf.float32,name=None)
      tf.zeros([ 2 3 ], int32) ==> [[ 0 0 0 ], [ 0 0 0 ]]

3、tf.ones_like(tensor,dype=None,name=None)
     新建一个与给定的tensor类型大小一致的tensor,其所有元素为1。
      # 'tensor' is [[1, 2, 3], [4, 5, 6]]  
     tf.ones_like(tensor) ==> [[ 1 , 1 , 1 ], [ 1 , 1 , 1 ]]

4、tf.zeros_like(tensor,dype=None,name=None)
     新建一个与给定的tensor类型大小一致的tensor,其所有元素为0。
      # 'tensor' is [[1, 2, 3], [4, 5, 6]]  
     tf.ones_like(tensor) ==>  [[ 0 0 0 ], [ 0 0 0 ]]

5、tf.fill(dim,value,name=None)
     创建一个形状大小为dim的tensor,其初始值为value
     # Output tensor has shape [2, 3]. 
     fill([2, 3], 9) ==> [[9, 9, 9] 
                                 [9, 9, 9]]

6、tf.constant(value,dtype=None,shape=None,name='Const')
     创建一个常量tensor,先给出value,可以设定其shape
      # Constant 1-D Tensor populated with value list.  
     tensor = tf.constant([ 1 , 2 , 3 , 4 , 5 , 6 , 7 ]) => [ 1 2 3 4 5 6 7
    # Constant 2-D tensor populated with scalar value -1.  
     tensor = tf.constant(- 1.0 , shape=[ 2 , 3 ]) => [[- 1. - 1. - 1. ] [- 1. - 1. - 1. ]

7、tf.linspace(start,stop,num,name=None)
     返回一个tensor,该tensor中的数值在start到stop区间之间取等差数列(包含start和stop),如果num>1则差值为(stop-start)/(num-1),以保证最后一个元素的值为stop。
     其中,start和stop必须为tf.float32或tf.float64。num的类型为int。
      tf.linspace(10.0, 12.0, 3, name="linspace") => [ 10.0 11.0 12.0]

8、tf.range(start,limit=None,delta=1,name='range')
     返回一个tensor等差数列,该tensor中的数值在start到limit之间,不包括limit,delta是等差数列的差值。
     start,limit和delta都是int32类型。
     # 'start' is 3 
     # 'limit' is 18 
     # 'delta' is 3
     tf.range(start, limit, delta) ==> [3, 6, 9, 12, 15] 
     # 'limit' is 5 start is 0
     tf.range(start, limit) ==> [0, 1, 2, 3, 4]

9、tf.random_normal(shape,mean=0.0,stddev=1.0,dtype=tf.float32,seed=None,name=None)
     返回一个tensor其中的元素的值服从正态分布。
      seed : A Python integer. Used to create a random seed for the distribution.See  set_random_seed  for behavior。

10、tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
    返回一个tensor其中的元素服从截断正态分布(?概念不懂,留疑)

11、tf.random_uniform(shape,minval=0,maxval=None,dtype=tf.float32,seed=None,name=None)
    返回一个形状为shape的tensor,其中的元素服从minval和maxval之间的均匀分布。

12、tf.random_shuffle(value,seed=None,name=None)
        对value(是一个tensor)的第一维进行随机化。
       [[1,2],            [[2,3],
        [2,3],     ==>  [1,2],
        [3,4]]             [3,4]] 

13、tf.set_random_seed(seed)
        设置产生随机数的种子。

To generate different sequences across sessions, set neither graph-level nor op-level seeds:

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'

To generate the same repeatable sequence for an op across sessions, set the seed for the op:

a = tf.random_uniform([1], seed=1

b = tf.random_normal([1]) 

# Repeatedly running this block with the same graph will generate the same

# sequence of values for 'a', but different sequences of values for 'b'. 

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 'A1' 

   print(sess2.run(a)) # generates 'A2' 

   print(sess2.run(b)) # generates 'B3' 

   print(sess2.run(b)) # generates 'B4'

To make the random sequences generated by all ops be repeatable across sessions, set a graph-level seed:

tf.set_random_seed(1234

a = tf.random_uniform([1]) 

b = tf.random_normal([1]) 

# Repeatedly running this block with the same graph will generate different

# sequences of 'a' and 'b'. 

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 'A1' 

    print(sess2.run(a)) # generates 'A2' 

    print(sess2.run(b)) # generates 'B1' 

    print(sess2.run(b)) # generates 'B2'


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值