當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python tf.nn.dropout用法及代碼示例


計算 dropout:隨機將元素設置為零以防止過度擬合。

用法

tf.nn.dropout(
    x, rate, noise_shape=None, seed=None, name=None
)

參數

  • x 浮點張量。
  • rate 與 x 具有相同類型的標量 Tensor。每個元素被丟棄的概率。例如,設置 rate=0.1 將丟棄 10% 的輸入元素。
  • noise_shape 一維整數 Tensor ,表示隨機生成的保持/丟棄標誌的形狀。
  • seed 一個 Python 整數。用於創建隨機種子。有關行為,請參見tf.random.set_seed
  • name 此操作的名稱(可選)。

返回

  • x 形狀相同的張量。

拋出

  • ValueError 如果 rate 不在 [0, 1) 中,或者如果 x 不是浮點張量。 rate=1 是不允許的,因為輸出將全為零,這可能不是預期的。

警告:你應該考慮使用tf.nn.experimental.stateless_dropout而不是這個函數。和...之間的不同tf.nn.experimental.stateless_dropout這個函數類似於tf.random.stateless_uniformtf.random.uniform.請參見隨機數生成TF 中各種 RNG 係統的詳細說明指南。正如指南所述,傳統的有狀態 RNG 操作像tf.random.uniformtf.nn.dropout尚未棄用,但非常不鼓勵,因為它們的狀態難以控製。

注意:dropout 的行為在 TensorFlow 1.x 和 2.x 之間發生了變化。轉換 1.x 代碼時,請使用命名參數以確保行為保持一致。

另請參閱:tf.keras.layers.Dropout 用於 dropout 層。

Dropout 對於正則化 DNN 模型很有用。輸入元素被隨機設置為零(並且其他元素被重新縮放)。這鼓勵每個節點獨立有用,因為它不能依賴其他節點的輸出。

更準確地說:xrate 元素的概率設置為 0 。其餘元素按 1.0 / (1 - rate) 放大,以便保留預期值。

tf.random.set_seed(0)
x = tf.ones([3,5])
tf.nn.dropout(x, rate = 0.5, seed = 1).numpy()
array([[2., 0., 0., 2., 2.],
     [2., 2., 2., 2., 2.],
     [2., 0., 2., 0., 2.]], dtype=float32)
tf.random.set_seed(0)
x = tf.ones([3,5])
tf.nn.dropout(x, rate = 0.8, seed = 1).numpy()
array([[0., 0., 0., 5., 5.],
     [0., 5., 0., 5., 0.],
     [5., 0., 5., 0., 5.]], dtype=float32)
tf.nn.dropout(x, rate = 0.0) == x
<tf.Tensor:shape=(3, 5), dtype=bool, numpy=
  array([[ True,  True,  True,  True,  True],
         [ True,  True,  True,  True,  True],
         [ True,  True,  True,  True,  True]])>

默認情況下,每個元素都是獨立保留或刪除的。如果指定了noise_shape,則必須廣播到x的形狀,並且隻有具有noise_shape[i] == shape(x)[i]的維度才會做出獨立的決定。這對於從圖像或序列中刪除整個通道很有用。例如:

tf.random.set_seed(0)
x = tf.ones([3,10])
tf.nn.dropout(x, rate = 2/3, noise_shape=[1,10], seed=1).numpy()
array([[0., 0., 0., 3., 3., 0., 3., 3., 3., 0.],
     [0., 0., 0., 3., 3., 0., 3., 3., 3., 0.],
     [0., 0., 0., 3., 3., 0., 3., 3., 3., 0.]], dtype=float32)

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.nn.dropout。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。