搭建网站用什么软件,网站的设计步骤,淄博做网站58同城,网站程序授权码神经网络学习小记录76——Tensorflow2设置随机种子Seed来保证训练结果唯一 学习前言为什么每次训练结果不同什么是随机种子训练中设置随机种子 学习前言
好多同学每次训练结果不同#xff0c;最大的指标可能会差到3-4%这样#xff0c;这是因为随机种子没有设定导致的#x… 神经网络学习小记录76——Tensorflow2设置随机种子Seed来保证训练结果唯一 学习前言为什么每次训练结果不同什么是随机种子训练中设置随机种子 学习前言
好多同学每次训练结果不同最大的指标可能会差到3-4%这样这是因为随机种子没有设定导致的我们一起看看怎么设定吧。
为什么每次训练结果不同
模型训练中存在很多随机值最常见的有 1、随机权重网络有些部分的权重没有预训练它的值则是随机初始化的每次随机初始化不同会导致结果不同。 2、随机数据增强一般来讲网络训练会进行数据增强特别是少量数据的情况下数据增强一般会随机变化光照、对比度、扭曲等也会导致结果不同。 3、随机数据读取喂入训练数据的顺序也会影响结果。 …… 应该还有别的随机值这里不一一列出这些随机都很容易影响网络的训练结果。
如果能够固定权重、固定数据增强情况、固定数据读取顺序网络理论上每一次独立训练的结果都是一样的。
什么是随机种子
随机种子Random Seed是计算机专业术语。一般计算机的随机数都是伪随机数以一个真随机数种子作为初始条件然后用一定的算法不停迭代产生随机数。
按照这个理解我们如果可以设置最初的 真随机数种子那么后面出现的随机数将会是固定序列。
以random库为例我们使用如下的代码前两次为随机生成后两次为设置随机数生成器种子后生成。
import random# 生成随机整数
print(第一次随机生成)
print(random.randint(1,100))
print(random.randint(1,100))# 生成随机整数
print(第二次随机生成)
print(random.randint(1,100))
print(random.randint(1,100))# 设置随机数生成器种子
random.seed(11)# 生成随机整数
print(第一次设定种子后随机生成)
print(random.randint(1,100))
print(random.randint(1,100))# 重置随机数生成器种子
random.seed(11)# 生成随机整数
print(第二次设定种子后随机生成)
print(random.randint(1,100))
print(random.randint(1,100))结果如下前两次随机生成的序列不同后两次设定种子后随机生成的序列相同
第一次随机生成
66
37
第二次随机生成
93
56
第一次设定种子后随机生成
58
72
第二次设定种子后随机生成
58
72训练中设置随机种子
一般训练会用到多个库包含有关random的内容。
在tensorflow2构建的网络中一般都是使用下面三个库来获得随机数我们需要对三个库都设置随机种子 1、tensorflow2库 2、numpy库 3、random库。
在这里写了一个函数
#---------------------------------------------------#
# 设置种子
#---------------------------------------------------#
def seed_everything(seed11):random.seed(seed)np.random.seed(seed)tf.random.set_seed(seed)只需要在所有初始化前调用该seed初始化函数即可。