今天在编码时同时遇到了这两个函数,并且都是用来初始化权重的,写法如下
w = tf.Variable(tf.random_normal(shape, stddev=0.01))
w = tf.Variable(np.random.randn())
看上去都是随机生成符合正态分布的值,但是实际上tf.random_normal(shape, stddev=0.01)
是从正态分布中返回符合你输入的shape和均值与方差的值。
tf.random_normal(
shape,
mean=0.0,
stddev=1.0,
dtype=tf.float32,
seed=None,
name=None
)
shape: A 1-D integer Tensor or Python array.输出tensor的shape
mean: A 0-D Tensor or Python value of type dtype. 正态分布的均值
stddev: A 0-D Tensor or Python value of type dtype. 正态分布的方差
dtype: The type of the output.
而numpy.random.randn(d0, d1, ..., dn)
返回参数中要求的shape的样本,具有标准正态分布。
如果想得到任意的正态分布,而不仅仅是标准正态,可以如下写法
N(μ, σ2):
σ * np.random.randn(…) + μ