Usage of initializers

初始化定义了设置Keras层的初始随机权重的方法.

The keyword arguments used for passing initializers to layers will depend on the layer. Usually it is simply kernel_initializer and bias_initializer:

model.add(Dense(64,
                kernel_initializer='random_uniform',
                bias_initializer='zeros'))

Available initializers

以下内置的初始化程序可作为keras.initializers模块的一部分使用:

[source]

Initializer

keras.initializers.Initializer()

初始化器基类:所有初始化器均从此类继承.


[source]

Zeros

keras.initializers.Zeros()

生成张量初始化为0的初始化程序.


[source]

Ones

keras.initializers.Ones()

生成张量初始化为1的初始化程序.


[source]

Constant

keras.initializers.Constant(value=0)

生成张量的初始化程序,张量初始化为一个恒定值.

Arguments

  • 价值 :浮点数; 生成张量的值.

[source]

RandomNormal

keras.initializers.RandomNormal(mean=0.0, stddev=0.05, seed=None)

初始化器,生成具有正态分布的张量.

Arguments

  • 均值 :python标量或标量张量. 要生成的随机值的平均值.
  • stddev :python标量或标量张量. 要生成的随机值的标准偏差.
  • seed :一个Python整数. 用于播种随机生成器.

[source]

RandomUniform

keras.initializers.RandomUniform(minval=-0.05, maxval=0.05, seed=None)

生成具有均匀分布的张量的初始化程序.

Arguments

  • minval :python标量或标量张量. 要生成的随机值范围的下限.
  • maxval :python标量或标量张量. 要生成的随机值范围的上限. 浮点类型默认为1.
  • seed :一个Python整数. 用于播种随机生成器.

[source]

TruncatedNormal

keras.initializers.TruncatedNormal(mean=0.0, stddev=0.05, seed=None)

生成截断正态分布的初始化程序.

这些值与RandomNormal值相似,不同的是,将丢弃并重绘与平均值相比大于两个标准偏差的值. 对于神经网络权重和过滤器,这是推荐的初始化程序.

Arguments

  • 均值 :python标量或标量张量. 要生成的随机值的平均值.
  • stddev :python标量或标量张量. 要生成的随机值的标准偏差.
  • seed :一个Python整数. 用于播种随机生成器.

[source]

VarianceScaling

keras.initializers.VarianceScaling(scale=1.0, mode='fan_in', distribution='normal', seed=None)

初始化器能够使其标度适应权重的形状.

使用distribution="normal" ,将从以零为中心的截断正态分布中抽取样本,其中stddev = sqrt(scale / n) ,其中n为:

  • 如果mode =" fan_in",则重量张量中的输入单位数
  • 如果mode =" fan_out",则输出单元的数量
  • 输入和输出单元数的平均值,如果mode =" fan_avg"

使用distribution="uniform" ,样本是从[-limit,limit]内的均匀分布中提取的,其中limit = sqrt(3 * scale / n) .

Arguments

  • scale :比例因子(正浮点数).
  • 模式 :" fan_in"," fan_out"," fan_avg"之一.
  • distribution :使用随机分布. "正常","制服"之一.
  • seed :一个Python整数. 用于播种随机生成器.

Raises

  • ValueError :如果" scale"," mode"或" distribution"参数的值无效.

[source]

Orthogonal

keras.initializers.Orthogonal(gain=1.0, seed=None)

生成随机正交矩阵的初始化程序.

Arguments

  • gain :应用于正交矩阵的乘法因子.
  • seed :一个Python整数. 用于播种随机生成器.

References


[source]

Identity

keras.initializers.Identity(gain=1.0)

生成身份矩阵的初始化程序.

仅用于2D矩阵. 如果所需的矩阵不是正方形,则会用零填充其他行/列.

Arguments

  • gain :应用于单位矩阵的乘法因子.

lecun_uniform

keras.initializers.lecun_uniform(seed=None)

LeCun统一初始化器.

它从[-limit,limit]内的均匀分布中抽取样本,其中limitsqrt(3 / fan_in) ,其中fan_in是权重张量中的输入单位数.

Arguments

  • seed :一个Python整数. 用于播种随机生成器.

Returns

初始化程序.

References


glorot_normal

keras.initializers.glorot_normal(seed=None)

Glorot普通初始化器,也称为Xavier普通初始化器.

它从以0为中心的截断正态分布中抽取样本,其stddev = sqrt(2 / (fan_in + fan_out)) ,其中fan_in是权重张量中的输入单位数,而fan_out是权重张量中的输出单位数.

Arguments

  • seed :一个Python整数. 用于播种随机生成器.

Returns

初始化程序.

References


glorot_uniform

keras.initializers.glorot_uniform(seed=None)

Glorot统一初始化器,也称为Xavier统一初始化器.

它从[-limit,limit]内的均匀分布中抽取样本,其中limitsqrt(6 / (fan_in + fan_out)) ,其中fan_in是权重张量中的输入单位数,而fan_out是权重中的输出单位数张量.

Arguments

  • seed :一个Python整数. 用于播种随机生成器.

Returns

初始化程序.

References


he_normal

keras.initializers.he_normal(seed=None)

他是普通的初始化器.

它从以0为中心的截断正态分布中抽取样本,其stddev = sqrt(2 / fan_in) ,其中fan_in是权重张量中的输入单位数.

Arguments

  • seed :一个Python整数. 用于播种随机生成器.

Returns

初始化程序.

References


lecun_normal

keras.initializers.lecun_normal(seed=None)

LeCun普通的初始化程序.

它从以0为中心的截断正态分布中抽取样本,其stddev = sqrt(1 / fan_in) ,其中fan_in是权重张量中的输入单位数.

Arguments

  • seed :一个Python整数. 用于播种随机生成器.

Returns

初始化程序.

References


he_uniform

keras.initializers.he_uniform(seed=None)

他统一方差缩放初始值设定项.

它从[-limit,limit]内的均匀分布中抽取样本,其中limitsqrt(6 / fan_in) ,其中fan_in是权重张量中的输入单位数.

Arguments

  • seed :一个Python整数. 用于播种随机生成器.

Returns

初始化程序.

References

初始化程序可以作为字符串(必须与上面可用的初始化程序之一匹配)或作为可调用的变量传递:

from keras import initializers

model.add(Dense(64, kernel_initializer=initializers.random_normal(stddev=0.01)))

# also works; will use the default parameters.
model.add(Dense(64, kernel_initializer='random_normal'))

Using custom initializers

如果传递自定义可调用对象,则它必须采用参数shape (要初始化的变量的形状)和dtype (生成值的dtype):

from keras import backend as K

def my_init(shape, dtype=None):
    return K.random_normal(shape, dtype=dtype)

model.add(Dense(64, kernel_initializer=my_init))