零
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**32
或 2**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
的列表。初始化一個張量的形狀 (選用)。 - factor:
float
。將縮放值的乘數。 - 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:資料類型。只支援浮點數類型。
傳回
一初始化器用以產生具有單位方差的張量。