深度學習入門-框架keras-8keras嵌入層Embedding與標準化層Normalization

Embedding

keras.layers.Embedding(input_dim, output_dim, embeddings_initializer='uniform', embeddings_regularizer=None, activity_regularizer=None, embeddings_constraint=None, mask_zero=False, input_length=None)

將**正整數(索引值)**轉換爲固定尺寸的稠密向量。 例如: [[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]
該層只能用作模型中的第一層。
例子

model = Sequential()
model.add(Embedding(1000, 64, input_length=10))
# 模型將輸入一個大小爲 (batch, input_length) 的整數矩陣。
# 輸入中最大的整數(即詞索引)不應該大於 999 (詞彙表大小)
# 現在 model.output_shape == (None, 10, 64),其中 None 是 batch 的維度。

input_array = np.random.randint(1000, size=(32, 10))

model.compile('rmsprop', 'mse')
output_array = model.predict(input_array)
assert output_array.shape == (32, 10, 64)

參數

  • input_dim: int > 0。詞彙表大小, 即,最大整數 index + 1。
    output_dim: int >= 0。詞向量的維度。
  • embeddings_initializer: embeddings 矩陣的初始化方法 (詳見 initializers)。
  • embeddings_regularizer: embeddings matrix 的正則化方法 (詳見 regularizer)。
  • embeddings_constraint: embeddings matrix 的約束函數 (詳見 constraints)。
  • mask_zero: 是否把 0 看作爲一個應該被遮蔽的特殊的 “padding” 值。 這對於可變長的 循環神經網絡層 十分有用。 如果設定爲 True,那麼接下來的所有層都必須支持 masking,否則就會拋出異常。 如果 mask_zero 爲 True,作爲結果,索引 0 就不能被用於詞彙表中 (input_dim 應該與 vocabulary + 1 大小相同)。
  • input_length: 輸入序列的長度,當它是固定的時。 如果你需要連接 Flatten 和 Dense 層,則這個參數是必須的 (沒有它,dense 層的輸出尺寸就無法計算)。

輸入尺寸
尺寸爲 (batch_size, sequence_length)的 2D 張量。
輸出尺寸
尺寸爲(batch_size, sequence_length, output_dim)的 3D 張量。

BatchNormalization

keras.layers.BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True, beta_initializer='zeros', gamma_initializer='ones', moving_mean_initializer='zeros', moving_variance_initializer='ones', beta_regularizer=None, gamma_regularizer=None, beta_constraint=None, gamma_constraint=None)

批量標準化層 (Ioffe and Szegedy, 2014)。
在每一個批次的數據中標準化前一層的激活項, 即,應用一個維持激活項平均值接近 0,標準差接近 1 的轉換。
參數
axis: 整數,需要標準化的軸 (通常是特徵軸)。 例如,在 data_format=“channels_first” 的 Conv2D 層之後, 在 BatchNormalization 中設置 axis=1。
momentum: 移動均值和移動方差的動量。
epsilon: 增加到方差的小的浮點數,以避免除以零。
center: 如果爲 True,把 beta 的偏移量加到標準化的張量上。 如果爲 False, beta 被忽略。
scale: 如果爲 True,乘以 gamma。 如果爲 False,gamma 不使用。 當下一層爲線性層(或者例如 nn.relu), 這可以被禁用,因爲縮放將由下一層完成。
beta_initializer: beta 權重的初始化方法。
gamma_initializer: gamma 權重的初始化方法。
moving_mean_initializer: 移動均值的初始化方法。
moving_variance_initializer: 移動方差的初始化方法。
beta_regularizer: 可選的 beta 權重的正則化方法。
gamma_regularizer: 可選的 gamma 權重的正則化方法。
beta_constraint: 可選的 beta 權重的約束方法。
gamma_constraint: 可選的 gamma 權重的約束方法。
輸入尺寸
可以是任意的。如果將這一層作爲模型的第一層, 則需要指定 input_shape 參數 (整數元組,不包含樣本數量的維度)。
輸出尺寸
與輸入相同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章