Keras 2 API 文件 / 層 API / 正規化層 / Dropout 層

Dropout 層

[原始碼]

Dropout 類別

tf_keras.layers.Dropout(rate, noise_shape=None, seed=None, **kwargs)

對輸入套用 Dropout。

Dropout 層在訓練期間,會以 rate 的頻率隨機將輸入單元設定為 0,這有助於防止過擬合。未設定為 0 的輸入會放大 1/(1 - rate) 倍,使得所有輸入的總和保持不變。

請注意,Dropout 層僅在 training 設定為 True 時才會套用,以便在推論期間不丟棄任何值。使用 model.fit 時,training 會自動正確設定為 True,在其他情況下,您可以在呼叫層時將 kwarg 明確設定為 True。

(這與將 Dropout 層設定為 trainable=False 是相反的。trainable 不會影響層的行為,因為 Dropout 沒有任何可在訓練期間凍結的變數/權重。)

>>> tf.random.set_seed(0)
>>> layer = tf.keras.layers.Dropout(.2, input_shape=(2,))
>>> data = np.arange(10).reshape(5, 2).astype(np.float32)
>>> print(data)
[[0. 1.]
 [2. 3.]
 [4. 5.]
 [6. 7.]
 [8. 9.]]
>>> outputs = layer(data, training=True)
>>> print(outputs)
tf.Tensor(
[[ 0.    1.25]
 [ 2.5   3.75]
 [ 5.    6.25]
 [ 7.5   8.75]
 [10.    0.  ]], shape=(5, 2), dtype=float32)

參數

  • rate:介於 0 和 1 之間的浮點數。要丟棄的輸入單元比例。
  • noise_shape:一維整數張量,表示將與輸入相乘的二元 Dropout 遮罩的形狀。例如,如果您的輸入形狀為 (batch_size, timesteps, features),並且您希望所有時間步長的 Dropout 遮罩都相同,則可以使用 noise_shape=(batch_size, 1, features)
  • seed:用作隨機種子的 Python 整數。

呼叫參數

  • inputs:輸入張量(任何階數)。
  • training:Python 布林值,指示層是否應以訓練模式(新增 Dropout)或推論模式(不做任何操作)運行。