tensorflow中的tensor常量
常量在深度学习中,经常用于变量Variable的初始化,常用的常量有随机常量、常数常量、全0、全1常量
1. 随机常量
在神经网络中,经常需要用随机常量来初始化一些变量,例如我们在初始化权重向量W时,经常要使用正态分布随机初始化。
常用的随机生成函数:
1.1 正态分布
函数形式:
tf.random_normal(shape,mean=0.0,stddev=1.0,dtype=tf.float32,,name=None))
tf.truncated_normal(shape,mean=0.0,stddev=1.0,dtype = tf.float32,,name=None))
其中,参数含义:张量形状,平均值,标准差,数据类型
两个正态分布的区别是:
- tf.random_normal
是普通的正态分布函数。
- tf.truncated_normal
截断的正态分布函数。其生成的值遵循一个正态分布,但如果生成但随机值偏离平均值超过2个标准差,这个数会被重新随机分配。
1.2 均匀分布
函数形式:
tf.random_uniform(shape,minval=0,maxval=None,dtype=tf.float32)
其参数的含义是:形状,最小值,最大取值,取值类型等
1.3 洗牌
经常用于讲训练集洗牌,避免同一分类下的样本紧紧挨在一起。
函数形式:
tf.random_uniform(shape,minval=0,maxval=None,dtype=tf.float32)
其参数含义是:形状,最小值,最大取值,取值类型等
tf.random_shuffle(shape,minval=0,maxval=None,dtype=tf.float32)
2. 常数常量
tf.constant(obj,shape)
其中,obj 可以是 list或者常数,生成各种类型的tensor。
a = tf.constant(np.arange(1, 13, dtype=np.int32),
shape=[2, 2, 3])
tf.linspace(start, end, num)
其中,start代表起始的值,end表示结束的值,num表示在这个区间里生成数字的个数,生成的数组是等间隔生成的。start和end这两个数字必须是浮点数,不能是整数,如果是整数会出错的。
tf.range(start, end, alpha)
其中,start代表起始的值,end表示结束的值,alpha表示步长。
3. 全0、全1常量
3.1 生成与tensor相同shape的全0,全1 tensor矩阵
tf.zeros_like(tensor)
tf.ones_like(tensor)
3.2 全0,全1 的tensor 矩阵
tf.zeros(shape,dtype)
tf.ones(shape,dtype)