TensorFlow创建初始值

本文详细介绍了TensorFlow中多种张量初始化方法,包括基于正态分布的tf.truncated_normal和tf.random_normal,常量初始化tf.constant,零填充tf.zeros,全一初始化tf.ones,以及基于范围和线性间隔的tf.fill和tf.linspace等。每种方法的参数设定及使用场景均有详述。

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

tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)

从截断的正态分布中输出随机值。生成的值服从具有指定平均值和标准偏差的正态分布,如果生成的值大于平均值2个标准偏差的值则丢弃重新选择,这样保证了生成的值都在均值附近。
shape表示生成张量的维度,mean是正态分布的均值,stddev是正态分布的标准差,dtype是输出的类型,seed是一个整数,当设置之后,每次生成的随机数都一样,name是操作的名字。这个函数产生正太分布,均值和标准差自己设定。

tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)

从正态分布中输出随机值。
shape表示生成张量的维度,mean是正态分布的均值,stddev是正态分布的标准差,dtype是输出的类型,seed是一个整数,当设置之后,每次生成的随机数都一样,name是操作的名字。这个函数产生正太分布,均值和标准差自己设定。

tf.constant(value,dtype=None,shape=None,name=’Const’)

创建一个常量tensor,按照给出value来赋值,可以用shape来指定其形状。value可以是一个数,也可以是一个list。
如果是一个数,那么这个常亮中所有值的按该数来赋值。
如果是list,那么len(value)一定要小于等于shape展开后的长度。赋值时,先将value中的值逐个存入。不够的部分,则全部存入value的最后一个值。

> a = tf.constant(2,shape=[2])
b = tf.constant(2,shape=[2,2])
c = tf.constant([1,2,3],shape=[6])
d = tf.constant([1,2,3],shape=[3,2])
> 
> sess = tf.InteractiveSession() 
  print(sess.run(a))
> #[2 2] 
  print(sess.run(b))
> #[[2 2]
> # [2 2]] 
   print(sess.run(c))
> #[1 2 3 3 3 3] 
   print(sess.run(d))
> #[[1 2]
> # [3 3]
> # [3 3]]

tf.zeros(shape, dtype=tf.float32, name=None)

初始化一个shape维度的张量,其值全部都是0

res2 = tf.zeros([2, 4])
with tf.Session() as sess:
    print(sess.run(res2))
#结果为:
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]]

tf.zeros_like(tensor, dtype=None, name=None)

tensor = tf.constant([[1, 2, 3], [4, 5, 6]]) tf.zeros_like(tensor) #
[[0, 0, 0], [0, 0, 0]]

tf.ones(shape, dtype=tf.float32, name=None)

tf.ones([2, 3], int32) ==> [[1, 1, 1], [1, 1, 1]]

tf.ones_like(tensor,dype=None,name=None)

新建一个与给定的tensor类型大小一致的tensor,其所有元素为1。

 # 'tensor' is [[1, 2, 3], [4, 5, 6]] 

 tf.ones_like(tensor) ==> [[1,

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]]

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]

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]

tf.random_uniform(shape,minval=0,maxval=None,dtype=tf.float32,seed=None,name=None)

返回一个形状为shape的tensor,其中的元素服从minval和maxval之间的均匀分布。

tf.random_shuffle(value,seed=None,name=None)

对value(是一个tensor)的第一维进行随机化。
       [[1,2],            [[2,3],
        [2,3],     ==>  [1,2],
        [3,4]]             [3,4]] 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值