随机产生函数种子seed、numpy.random.seed()、tf.set_random_seed()、tf.random_uniform()、tf.random_normal()学习
神经网络代码中,随机产生函数几乎都会出现在最开头的位置,足以说明其重要性。
我们得保证,每次代码产生的随机数是相同的,要不然每次运行出的数据都是不同的,不利于我们的研究分析
1.种子是什么
了解种子是什么,首先得了解随机数产生机制。
在numpy中,seed函数的作用为 Seed the random number generator(为随机生成函数生成种子),而seed函数中的参数seed可以理解成为了获取每次产生随机数时的 “开始位置”的数值。
我们可以把seed看作一个映射函数的输入,输入不同的值,都会有唯一对应的数值( “开始位置”)。
至于随机数,是一些顺序已经固定的序列。
通过seed得到的 “开始位置”,就能在固定随机序列中找到位置,进行输出。
至于tensorflow中的seed和numpy相似,可以进行类比。
2.numpy.random.seed() 函数
random_sample() : Uniformly distributed floats over [0, 1) ( 随机产生 [0,1)之间的均匀分布浮点数)
random() : Alias for random_sample() (random_sample 的别称)
可以看到random_sample() 和 random() 其实是同一个函数,都是随机生成[0,1)之间的均匀分布浮点数
seed() 函数上面提到,是对随机生成函数指定随机 “开始位置”
接下来,我们进行具体实验,来看看numpy.random.seed()的具体效果
import numpy as np
#numpy seed只限制一层
for k in range(3):
np.random.seed(123)
for i in range(5):
print( np.random.random() )
print('\n')
for k in range(3):
for i in range(5):
np.random.seed(123)
print( np.random.random() )
print('\n')
np.random.seed(123)
for k in range(