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

层权重初始化器

[source]

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 整数。用于使初始化器的行为具有确定性。请注意,具有种子的初始化器在多次调用时将产生相同的随机值。

[source]

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 整数。用于使初始化器的行为具有确定性。请注意,具有种子的初始化器在多次调用时将产生相同的随机值。

[source]

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 整数。用于使初始化器的行为具有确定性。请注意,具有种子的初始化器在多次调用时将产生相同的随机值。

[source]

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)

[source]

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)

[source]

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 整数。用于使初始化器的行为具有确定性。请注意,带种子的初始化器在多次调用时不会产生相同的随机值,但多个初始化器在用相同种子值构建时将产生相同的序列。

参考文献


[source]

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 整数。用于使初始化器的行为具有确定性。请注意,带种子的初始化器在多次调用时不会产生相同的随机值,但多个初始化器在用相同种子值构建时将产生相同的序列。

参考文献


[source]

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 整数。用于使初始化器的行为具有确定性。请注意,带种子的初始化器在多次调用时不会产生相同的随机值,但多个初始化器在用相同种子值构建时将产生相同的序列。

参考文献


[source]

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 整数。用于使初始化器的行为具有确定性。请注意,带种子的初始化器在多次调用时不会产生相同的随机值,但多个初始化器在用相同种子值构建时将产生相同的序列。

参考文献


[source]

Identity

tf_keras.initializers.Identity(gain=1.0)

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

也可以通过快捷函数 tf.keras.initializers.identity 获取。

仅用于生成 2D 矩阵。

示例

>>> # 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: 应用于单位矩阵的乘法因子。

[source]

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 整数。用于使初始化器的行为具有确定性。请注意,具有种子的初始化器在多次调用时将产生相同的随机值。

参考文献


[source]

Constant

tf_keras.initializers.Constant(value=0)

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

也可以通过快捷函数 tf.keras.initializers.constant 获取。

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

示例

>>> # 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 标量。

[source]

VarianceScaling

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

根据输入张量的形状调整其缩放比例的初始化器。

也可以通过快捷函数 tf.keras.initializers.variance_scaling 获取。

使用 distribution="truncated_normal""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 整数。用于使初始化器的行为具有确定性。请注意,具有种子的初始化器在多次调用时将产生相同的随机值。