Keras 2 API 文档 / 层 API / 层权重初始化器

层权重初始化器

[源代码]

RandomNormal

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

生成服从正态分布的张量的初始化器。

也可通过快捷函数 tf.keras.initializers.random_normal 使用。

示例

>>> # Standalone usage:
>>> initializer = tf.keras.initializers.RandomNormal(mean=0., stddev=1.)
>>> values = initializer(shape=(2, 2))
>>> # Usage in a TF-Keras layer:
>>> initializer = tf.keras.initializers.RandomNormal(mean=0., stddev=1.)
>>> layer = tf.keras.layers.Dense(3, kernel_initializer=initializer)

参数

  • mean: Python 标量或标量张量。要生成的随机值的均值。
  • stddev: Python 标量或标量张量。要生成的随机值的标准差。
  • seed: Python 整数。用于使初始化器的行为确定性。请注意,带种子的初始化器在多次调用时会生成相同的随机值。

[源代码]

RandomUniform

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

生成服从均匀分布的张量的初始化器。

也可通过快捷函数 tf.keras.initializers.random_uniform 使用。

示例

>>> # Standalone usage:
>>> initializer = tf.keras.initializers.RandomUniform(minval=0., maxval=1.)
>>> values = initializer(shape=(2, 2))
>>> # Usage in a TF-Keras layer:
>>> initializer = tf.keras.initializers.RandomUniform(minval=0., maxval=1.)
>>> layer = tf.keras.layers.Dense(3, kernel_initializer=initializer)

参数

  • minval: Python 标量或标量张量。要生成的随机值的范围的下限(包含)。
  • maxval: Python 标量或标量张量。要生成的随机值的范围的上限(不包含)。
  • seed: Python 整数。用于使初始化器的行为确定性。请注意,带种子的初始化器在多次调用时会生成相同的随机值。

[源代码]

TruncatedNormal

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

生成截断正态分布的初始化器。

也可通过快捷函数 tf.keras.initializers.truncated_normal 使用。

生成的数值类似于 tf.keras.initializers.RandomNormal 初始化器生成的数值,但超过均值两个标准差的数值将被丢弃并重新绘制。

示例

>>> # Standalone usage:
>>> initializer = tf.keras.initializers.TruncatedNormal(mean=0., stddev=1.)
>>> values = initializer(shape=(2, 2))
>>> # Usage in a TF-Keras layer:
>>> initializer = tf.keras.initializers.TruncatedNormal(mean=0., stddev=1.)
>>> layer = tf.keras.layers.Dense(3, kernel_initializer=initializer)

参数

  • mean: Python 标量或标量张量。要生成的随机值的均值。
  • stddev: Python 标量或标量张量。截断前要生成的随机值的标准差。
  • seed: Python 整数。用于使初始化器的行为确定性。请注意,带种子的初始化器在多次调用时会生成相同的随机值。

[源代码]

Zeros

tf_keras.initializers.Zeros()

生成初始化为 0 的张量的初始化器。

也可通过快捷函数 tf.keras.initializers.zeros 使用。

示例

>>> # Standalone usage:
>>> initializer = tf.keras.initializers.Zeros()
>>> values = initializer(shape=(2, 2))
>>> # Usage in a TF-Keras layer:
>>> initializer = tf.keras.initializers.Zeros()
>>> layer = tf.keras.layers.Dense(3, kernel_initializer=initializer)

[源代码]

Ones

tf_keras.initializers.Ones()

生成初始化为 1 的张量的初始化器。

也可通过快捷函数 tf.keras.initializers.ones 使用。

示例

>>> # Standalone usage:
>>> initializer = tf.keras.initializers.Ones()
>>> values = initializer(shape=(2, 2))
>>> # Usage in a TF-Keras layer:
>>> initializer = tf.keras.initializers.Ones()
>>> layer = tf.keras.layers.Dense(3, kernel_initializer=initializer)

[源代码]

GlorotNormal

tf_keras.initializers.GlorotNormal(seed=None)

Glorot 正态初始化器,也称为 Xavier 正态初始化器。

也可通过快捷函数 tf.keras.initializers.glorot_normal 使用。

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

示例

>>> # Standalone usage:
>>> initializer = tf.keras.initializers.GlorotNormal()
>>> values = initializer(shape=(2, 2))
>>> # Usage in a TF-Keras layer:
>>> initializer = tf.keras.initializers.GlorotNormal()
>>> layer = tf.keras.layers.Dense(3, kernel_initializer=initializer)

参数

  • seed: Python 整数。用于使初始化器的行为确定性。请注意,带种子的初始化器在多次调用时不会生成相同的随机值,但多个初始化器在使用相同的种子值构造时会生成相同的序列。

参考文献


[源代码]

GlorotUniform

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 是输出单元的数量)。

示例

>>> # Standalone usage:
>>> initializer = tf.keras.initializers.GlorotUniform()
>>> values = initializer(shape=(2, 2))
>>> # Usage in a TF-Keras layer:
>>> initializer = tf.keras.initializers.GlorotUniform()
>>> layer = tf.keras.layers.Dense(3, kernel_initializer=initializer)

参数

  • seed: Python 整数。用于使初始化器的行为确定性。请注意,带种子的初始化器在多次调用时不会生成相同的随机值,但多个初始化器在使用相同的种子值构造时会生成相同的序列。

参考文献


[源代码]

HeNormal

tf_keras.initializers.HeNormal(seed=None)

He 正态初始化器。

也可通过快捷函数 tf.keras.initializers.he_normal 使用。

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

示例

>>> # Standalone usage:
>>> initializer = tf.keras.initializers.HeNormal()
>>> values = initializer(shape=(2, 2))
>>> # Usage in a TF-Keras layer:
>>> initializer = tf.keras.initializers.HeNormal()
>>> layer = tf.keras.layers.Dense(3, kernel_initializer=initializer)

参数

  • seed: Python 整数。用于使初始化器的行为确定性。请注意,带种子的初始化器在多次调用时不会生成相同的随机值,但多个初始化器在使用相同的种子值构造时会生成相同的序列。

参考文献


[源代码]

HeUniform

tf_keras.initializers.HeUniform(seed=None)

He 均匀方差缩放初始化器。

也可通过快捷函数 tf.keras.initializers.he_uniform 使用。

[-limit, limit] 内的均匀分布中抽取样本,其中 limit = sqrt(6 / fan_in)fan_in 是权重张量中输入单元的数量)。

示例

>>> # Standalone usage:
>>> initializer = tf.keras.initializers.HeUniform()
>>> values = initializer(shape=(2, 2))
>>> # Usage in a TF-Keras layer:
>>> initializer = tf.keras.initializers.HeUniform()
>>> layer = tf.keras.layers.Dense(3, kernel_initializer=initializer)

参数

  • seed: Python 整数。用于使初始化器的行为确定性。请注意,带种子的初始化器在多次调用时不会生成相同的随机值,但多个初始化器在使用相同的种子值构造时会生成相同的序列。

参考文献


[源代码]

Identity

tf_keras.initializers.Identity(gain=1.0)

生成单位矩阵的初始化器。

也可通过快捷函数 tf.keras.initializers.identity 使用。

仅可用于生成二维矩阵。

示例

>>> # Standalone usage:
>>> initializer = tf.keras.initializers.Identity()
>>> values = initializer(shape=(2, 2))
>>> # Usage in a TF-Keras layer:
>>> initializer = tf.keras.initializers.Identity()
>>> layer = tf.keras.layers.Dense(3, kernel_initializer=initializer)

参数

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

[源代码]

Orthogonal

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

生成正交矩阵的初始化器。

也可通过快捷函数 tf.keras.initializers.orthogonal 使用。

如果要初始化的张量的形状是二维,则使用从正态分布中抽取的随机数矩阵的 QR 分解获得的正交矩阵进行初始化。如果矩阵的行数少于列数,则输出将具有正交行。否则,输出将具有正交列。

如果要初始化的张量的形状是多于二维的,则初始化形状为 (shape[0] * ... * shape[n - 2], shape[n - 1]) 的矩阵,其中 n 是形状向量的长度。随后将矩阵重塑为所需的形状的张量。

示例

>>> # Standalone usage:
>>> initializer = tf.keras.initializers.Orthogonal()
>>> values = initializer(shape=(2, 2))
>>> # Usage in a TF-Keras layer:
>>> initializer = tf.keras.initializers.Orthogonal()
>>> layer = tf.keras.layers.Dense(3, kernel_initializer=initializer)

参数

  • gain: 应用于正交矩阵的乘法因子
  • seed: Python 整数。用于使初始化器的行为确定性。请注意,带种子的初始化器在多次调用时会生成相同的随机值。

参考文献


[源代码]

Constant

tf_keras.initializers.Constant(value=0)

生成具有常数值的张量的初始化器。

也可通过快捷函数 tf.keras.initializers.constant 使用。

仅允许标量值。提供的常数值必须可转换为调用初始化器时请求的数据类型。

示例

>>> # Standalone usage:
>>> initializer = tf.keras.initializers.Constant(3.)
>>> values = initializer(shape=(2, 2))
>>> # Usage in a TF-Keras layer:
>>> initializer = tf.keras.initializers.Constant(3.)
>>> layer = tf.keras.layers.Dense(3, kernel_initializer=initializer)

参数

  • value: Python 标量。

[源代码]

VarianceScaling

tf_keras.initializers.VarianceScaling(
    scale=1.0, mode="fan_in", distribution="truncated_normal", seed=None
)

其尺度适应其输入张量形状的初始化器。

也可通过快捷函数 tf.keras.initializers.variance_scaling 使用。

distribution="truncated_normal" or "untruncated_normal" 时,从均值为零且标准差为(如果使用则在截断后)stddev = sqrt(scale / n) 的截断/非截断正态分布中抽取样本,其中 n

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

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

示例

>>> # Standalone usage:
>>> initializer = tf.keras.initializers.VarianceScaling(
... scale=0.1, mode='fan_in', distribution='uniform')
>>> values = initializer(shape=(2, 2))
>>> # Usage in a TF-Keras layer:
>>> initializer = tf.keras.initializers.VarianceScaling(
... scale=0.1, mode='fan_in', distribution='uniform')
>>> layer = tf.keras.layers.Dense(3, kernel_initializer=initializer)

参数

  • scale: 缩放因子(正浮点数)。
  • mode: "fan_in""fan_out""fan_avg" 之一。
  • distribution: 要使用的随机分布。"truncated_normal""untruncated_normal""uniform" 之一。
  • seed: Python 整数。用于使初始化器的行为确定性。请注意,带种子的初始化器在多次调用时会生成相同的随机值。