tf.truncated_normal()函数是一种“截断”方式生成正太分布随机值,“截断”意思指生成的随机数值与均值的差不能大于两倍中误差,否则会重新生成。
此函数有别于tf.random_normal()正太函数,请参考本博客关于tf.random_normal()函数的介绍
(TensorFlow函数之tf.random_normal())
tf.truncated_normal()函数的格式为:
tf.truncated_normal(shape, mean, stddev, dtype, seed, name)
参数说明:
- shape:表示生成随机数的维度
- mean:正太分布的均值,默认为0
- stddev:正太分布的标准差
- dtype:生成正太分布数据的类型
- seed:一个整数,当设置之后,每次生成的随机数都一样
- name:正太分布的名字
下边举两个例子说明函数的用法:
1、下边例子,均值mean=0,stddev=0.2,则生成的随机数与均值差不能大于两倍中误差,即范围为:[-0.4,0.4]
import tensorflow as tf
v = tf.truncated_normal([2, 2], mean=0, stddev=0.2, dtype=tf.float32, seed=1, name='v')
sess = tf.Session()
print(sess.run(v))
sess.close()
输出为:
[[-0.16226365 0.29691976]
[ 0.01306587 0.01984968]]
2、修改标准差,查看生成随机数的差别,这里设置stddev=0.1,则生成的范围:[-0.2,0.2]
import tensorflow as tf
v = tf.truncated_normal([2, 2], mean=0, stddev=0.1, dtype=tf.float32, seed=1, name='v')
sess = tf.Session()
print(sess.run(v))
sess.close()
输出为:
[[-0.08113182 0.14845988]
[ 0.00653294 0.00992484]]