tflearn.initializations.zeros (shape=None, dtype=tf.float32, seed=None)

用全部設定為零的元素來初始化一個張量。

引數

  • shape: int 的列表。初始化一個張量的形狀 (選用)。
  • dtype: 張量的資料類型。

傳回

初始化器,或如果指定形狀的話,傳回已初始化的 Tensor


均勻

tflearn.initializations.uniform (shape=None, minval=0, maxval=None, dtype=tf.float32, seed=None)

使用均勻分配的隨機值來初始化。

產生的值符合範圍 [minval, maxval) 的均勻分配。較低的界線 minval 包含在範圍中,而較高的界線 maxval 則排除在範圍之外。

對於浮點數,預設範圍是 [0, 1)。對於整數,至少 maxval 必須明確指定。

在整數的情況下,隨機整數會稍微偏頗,除非 maxval - minval 是二的精確冪次。當 maxval - minval 的值明顯小於輸出的範圍 (2**322**64) 的時候,偏頗程度很小。

引數

  • shape: int 的列表。初始化一個張量的形狀 (選用)。
  • dtype: 張量的資料類型。僅支援浮點數。
  • seed: int。用來為分配建立一個隨機種子。

傳回

初始化器,或如果指定形狀的話,傳回已初始化的 Tensor


均勻縮放

tflearn.initializations.uniform_scaling (shape=None, factor=1.0, dtype=tf.float32, seed=None)

使用均勻分配的隨機值來初始化,不會縮放變異數。

初始化深度網路時,保持輸入變異數的規模不變是一個好方法,因此它不會爆炸或縮小到最後一層。如果輸入是x和操作x * W,且我們希望將W隨機初始化,則需要從下面選擇W

[-sqrt(3) / sqrt(dim), sqrt(3) / sqrt(dim)]

保持規模不變,其中dim = W.shape[0](輸入的大小)。類似的捲積網路計算得出的類似結果,其中dim等於前三個維度的乘積。如果存在非線性,則需要乘以常數factor。請參閱 Sussillo et al., 2014 (pdf) 深入了解動機、實驗和常數計算。在 2.3 節中,常數是通過數值計算的:對於線性層,它是 1.0,relu:~1.43,tanh:~1.15。

引數

  • shape: int 的列表。初始化一個張量的形狀 (選用)。
  • factorfloat。將縮放值的乘數。
  • dtype: 張量的資料類型。僅支援浮點數。
  • seed: int。用來為分配建立一個隨機種子。

傳回

初始化器,或如果指定形狀的話,傳回已初始化的 Tensor


正態

tflearn.initializations.normal (shape=None, mean=0.0, stddev=0.02, dtype=tf.float32, seed=None)

使用常態分佈中的隨機值進行初始化。

引數

  • shape: int 的列表。初始化一個張量的形狀 (選用)。
  • mean:同dtype。截斷常態分佈的均值。
  • stddev:同dtype。截斷常態分佈的標準差。
  • dtype: 張量的資料類型。
  • seed: int。用來為分配建立一個隨機種子。

傳回

初始化器,或如果指定形狀的話,傳回已初始化的 Tensor


截斷正態

tflearn.initializations.truncated_normal (shape=None, mean=0.0, stddev=0.02, dtype=tf.float32, seed=None)

使用截斷常態分佈中的隨機值進行初始化。

產生的值遵循指定均值和標準差的常態分佈,但值與均值的距離大於 2 個標準差的值會被刪除並重新挑選。

引數

  • shape: int 的列表。初始化一個張量的形狀 (選用)。
  • mean:同dtype。截斷常態分佈的均值。
  • stddev:同dtype。截斷常態分佈的標準差。
  • dtype: 張量的資料類型。
  • seed: int。用來為分配建立一個隨機種子。

傳回

初始化器,或如果指定形狀的話,傳回已初始化的 Tensor


Xavier

tflearn.initializations.xavier (uniform=True, seed=None, dtype=tf.float32)

傳回執行權重「Xavier」初始化的初始化函式。

這個初始化函式用於在所有層中保持梯度的規模大致相同。在均勻分佈中,最終範圍為:x = sqrt(6. / (in + out)); [-x, x],而對於常態分佈,會使用標準差sqrt(3. / (in + out))

引數

  • uniform:是否使用均勻或常態分佈的隨機初始化。
  • seed:一個 Python 整數。用於建立隨機種子。行為請參閱set_random_seed
  • dtype:資料類型。只支援浮點數類型。

傳回

權重矩陣的初始化函式。

參考資料

深入了解訓練深度前饋神經網路的難處。國際人工智慧與統計大會。Xavier Glorot 和 Yoshua Bengio(2010 年)。

連結

http://jmlr.org/proceedings/papers/v9/glorot10a/glorot10a.pdf


方差縮放

tflearn.initializations.variance_scaling (factor=2.0, mode='FAN_IN', uniform=False, seed=None, dtype=tf.float32)

傳回建立張量且不縮放變異數的初始化函式。

在初始化深度網路時,原則上保持輸入方差的規模不變是有利的,因此它不會在到達最後一層時變大或減少。此初始化程式使用下列公式

if mode='FAN_IN': # Count only number of input connections.
  n = fan_in
elif mode='FAN_OUT': # Count only number of output connections.
  n = fan_out
elif mode='FAN_AVG': # Average number of inputs and output connections.
  n = (fan_in + fan_out)/2.0

  truncated_normal(shape, 0.0, stddev=sqrt(factor / n))

要取得 http://arxiv.org/pdf/1502.01852v1.pdf,請使用 (預設):- factor=2.0 mode='FAN_IN' uniform=False

要取得 http://arxiv.org/abs/1408.5093,請使用:- factor=1.0 mode='FAN_IN' uniform=True

要取得 http://jmlr.org/proceedings/papers/v9/glorot10a/glorot10a.pdf,請使用:- factor=1.0 mode='FAN_AVG' uniform=True.

要取得 xavier_initializer,請使用以下任一個:- factor=1.0 mode='FAN_AVG' uniform=True. - factor=1.0 mode='FAN_AVG' uniform=False.

引數

  • factor:浮點數。乘數。
  • mode:字串。'FAN_IN', 'FAN_OUT', 'FAN_AVG'。
  • uniform:是否使用均勻或常態分佈的隨機初始化。
  • seed:一個 Python 整數。用於建立隨機種子。行為請參閱set_random_seed
  • dtype:資料類型。只支援浮點數類型。

傳回

一初始化器用以產生具有單位方差的張量。