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 取得。

僅可用於產生 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:要應用於單位矩陣的乘法因子。

[來源]

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" 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 整數。用於使初始化器的行為具有確定性。請注意,帶種子的初始化器將在多次呼叫中產生相同的隨機值。