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、标准差为 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、标准差为 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 访问。

只允许标量值。提供的常量值必须可转换为调用初始化器时请求的 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 标量。

[源代码]

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