Tensorflow随机数生成

tf.random_normal()

作用:

生成正态分布的随机数

定义:

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

必选参数:
shape:指定生成随机数每个维度的大小
关键字参数:
mean:生成随机数的平均值
stddev:生成随机数的标准差
dtype:生成随机数的数据类型
seed:生成随机数的随机种子
name:生成随机数的名称

mean值设定分析:

测试代码:

import tensorflow as tf
import matplotlib.pyplot as plt
with tf.Session() as sess:
    value = tf.random_normal(shape=[10000], mean=0.0)
    value_get = sess.run(value)  # 生成随机数

value_list = value_get.tolist()  # 将随机数转化为list

plt.xlim(-30, 30)  # 设置x轴范围为[-30,30]
plt.hist(value_list, 100)  # 绘制直方图,柱数为100
plt.show()

设置mean=0.0:
这里写图片描述
设置mean=10.0:
这里写图片描述

修改mean值使随机数以mean为中心分布。

stddev值设定分析:

测试代码与平均值相同,mean改为stddev。

设置stddev=1.0:
这里写图片描述
设置stddev=10.0:
这里写图片描述

stddev值越大,随机数分布越离散。

seed值设定分析:

测试代码:

import tensorflow as tf
with tf.Session() as sess:
    a = tf.random_normal(shape=[3], seed=1)
    b = tf.random_normal(shape=[4], seed=1)
    c = tf.random_normal(shape=[3], seed=2)
    print("a: ", sess.run(a))
    print("b: ", sess.run(b))
    print("c: ", sess.run(c))

输出:

a:  [-0.8113182   1.4845988   0.06532937]
b:  [-0.8113182   1.4845988   0.06532937 -2.4427042 ]
c:  [-0.85811085 -0.19662298  0.13895045]

设置相同的seed值,生成相同的随机数列表。


tf.constant_initializer()

作用:

常量生成器

定义:

__init__(
    value=0,
    dtype=tf.float32,
    verify_shape=False
)

关键字参数:
value:常量值
dtype:类型
verify_shape:检查value是否与张量的形状兼容


tf.truncated_normal_initializer()

作用:

正态分布随机数的生成器(偏离平均值大于2个标准差的数将被重新随机)

定义:

__init__(
    mean=0.0,
    stddev=1.0,
    seed=None,
    dtype=tf.float32
)

关键字参数:
mean:平均值
stddev:方差
seed:随机种子
dtype:类型

猜你喜欢

转载自blog.csdn.net/zstu_xwq/article/details/82316129