畅游人工智能之海--Keras教程之层权重初始化器
畅游人工智能之海--Keras教程之层权重初始化器(一)
各位读者大家好,今天我们要一起来学习Keras的层权重初始化器。层权重初始化器对神经网络的训练有很重要的作用,好的初始化参数有利于神经网络的训练,可以加快神经网络的收敛速度,并且更可能找到较优解,在某些网络结构中甚至能够提高准确率。那么下面就让我们一起学习吧!
我们先来看看初始化器的用法。它用于将初始值设定项传递给层的关键字参数,通常情况下,它是kernel_initializer和bias_initializer。注意:所有内置的初始化程序也可以通过其字符串标识符传递。
1 | from tensorflow.keras import layers |
RandomNormal类
1 | tf.keras.initializers.RandomNormal( |
作用:
初始化器,生成具有正态分布的张量。均值为mean,标准差为stddev
也可以通过快捷功能使用:tf.keras.initializers.random_normal
例子:
1 | initializer = tf.keras.initializers.RandomNormal(mean=0., stddev=1.) |
RandomUniform类
1 | tf.keras.initializers.RandomUniform( |
作用:
初始化器,生成具有正态分布的张量。
例子:
1 | initializer = tf.keras.initializers.RandomUniform(minval=0., maxval=1.) |
TruncatedNormal类
1 | tf.keras.initializers.TruncatedNormal( |
作用:
初始化器,生成截断的具有正态分布的张量。
也可以通过快捷功能使用 tf.keras.initializers.truncated_normal
。
生成的值与tf.keras.initializers.RandomNormal
初始值设定项的值相似, 不同的是将丢弃与均值两个以上标准差的值并重新绘制。
例子:
1 | initializer = tf.keras.initializers.TruncatedNormal(mean=0., stddev=1.) |
Zeros类
1 | tf.keras.initializers.Zeros() |
作用:
生成张量初始化为0的初始化程序。
也可以通过快捷功能使用tf.keras.initializers.zeros
。
例子:
1 | initializer = tf.keras.initializers.Zeros() |
Ones类
1 | tf.keras.initializers.Ones() |
作用:
生成张量初始化为1的初始化程序。
也可以通过快捷功能使用tf.keras.initializers.ones
。
例子:
1 | initializer = tf.keras.initializers.Ones() |
GlorotNormal类
1 | tf.keras.initializers.GlorotNormal( |
作用:
Glorot普通初始化器,也称为Xavier普通初始化器。
也可以通过快捷功能使用 tf.keras.initializers.glorot_normal
。
从以0为中心的截断正态分布中抽取样本,stddev = sqrt(2 / (fan_in + fan_out))
。其中,fan_in
是权重张量中的输入单位数,而是权重张量中fan_out
的输出单位数。
例子:
1 | initializer = tf.keras.initializers.GlorotNormal() |
GlorotUniform类
1 | tf.keras.initializers.GlorotUniform(seed=None) |
作用:
Glorot统一初始化器,也称为Xavier统一初始化器。
也可以通过快捷功能使用 tf.keras.initializers.glorot_uniform
。
从中的均匀分布中抽取样本[-limit, limit]
,其中 limit = sqrt(6 / (fan_in + fan_out))
(fan_in
是权重张量中的输入单位fan_out
数,而是输出单位数)。
例子:
1 | initializer = tf.keras.initializers.GlorotUniform() |
层的权重初始化器有非常多的类型,我们要一一掌握。好的初始值是加快训练速度甚至提高准确率的重要因素,所以希望大家能自己再多查阅相关的资料,看看层权重初始化时的门道,与文章中的内容结合,才能事半功倍。我们下周将继续开展相关内容的介绍,谢谢大家!