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


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


運算符將 dropout 添加到給定單元的輸入和輸出。

繼承自:Module

用法

tf.nn.RNNCellDropoutWrapper(
    *args, **kwargs
)

參數

  • cell 一個 RNNCell,一個到 output_size 的投影被添加到它。
  • input_keep_prob unit Tensor or float 在0和1之間,輸入保持概率;如果它是常數且為 1,則不會添加輸​​入 dropout。
  • output_keep_prob unit Tensor or float 0和1之間,輸出保持概率;如果它是常數且為 1,則不會添加輸​​出 dropout。
  • state_keep_prob unit Tensor or float 0和1之間,輸出保持概率;如果它是常數且為 1,則不會添加輸出 dropout。狀態丟失是在單元的輸出狀態上執行的。注意何時應用 dropout 的狀態組件state_keep_prob(0, 1)也由參數決定dropout_state_filter_visitor(例如,默認情況下,dropout 永遠不會應用於c的組成部分LSTMStateTuple)。
  • variational_recurrent Python 布爾值。如果True,然後在每次運行調用的所有時間步中應用相同的 dropout 模式。如果設置了這個參數,input_size 必須提供。
  • input_size (可選)(可能是嵌套的元組)TensorShape包含預期要傳入的輸入張量的深度的對象DropoutWrapper.需要和使用當且當 variational_recurrent = Trueinput_keep_prob < 1.
  • dtype (可選)dtype輸入、狀態和輸出張量。需要和使用當且當 variational_recurrent = True.
  • seed (可選)整數,隨機種子。
  • dropout_state_filter_visitor (可選),默認值:(見下文)。采用狀態的任何層次級別並返回 Python 布爾值的標量或深度 = 1 結構的函數,該結構說明了應刪除狀態中的哪些項。此外,如果函數返回 True ,則會在此子級別上應用 dropout。如果函數返回 False ,則不會在整個子級別上應用 dropout。默認行為:對除 LSTMCellState 對象的內存(c)狀態之外的所有條件執行 dropout,並且不要嘗試將 dropout 應用於 TensorArray 對象:def dropout_state_filter_visitor(s): if isinstance(s, LSTMCellState):# Never perform dropout on the c state. return LSTMCellState(c=False, h=True) elif isinstance(s, TensorArray):return False return True
  • **kwargs 基礎層的關鍵字參數字典。

拋出

  • TypeError 如果 cell 不是 RNNCell ,或者提供了 keep_state_fn 但未提供 callable
  • ValueError 如果任何 keep_probs 不在 0 和 1 之間。

屬性

  • activity_regularizer 該層輸出的可選正則化函數。
  • compute_dtype 層計算的 dtype。

    這相當於 Layer.dtype_policy.compute_dtype 。除非使用混合精度,否則這與 Layer.dtype 相同,即權重的 dtype。

    層會自動將其輸入轉換為計算 dtype,這會導致計算和輸出也位於計算 dtype 中。這是由 Layer.call 中的基礎層類完成的,因此如果實現自己的層,則不必插入這些轉換。

    compute_dtype 為 float16 或 bfloat16 以保持數值穩定性時,層通常會以更高的精度執行某些內部計算。在這種情況下,輸出通常仍然是 float16 或 bfloat16。

  • dtype 層權重的 dtype。

    這相當於 Layer.dtype_policy.variable_dtype 。除非使用混合精度,否則這與 Layer.compute_dtype 相同,即圖層計算的 dtype。

  • dtype_policy 與該層關聯的 dtype 策略。

    這是 tf.keras.mixed_precision.Policy 的一個實例。

  • dynamic 圖層是否動態(eager-only);在構造函數中設置。
  • input 檢索層的輸入張量。

    僅當該層隻有一個輸入時才適用,即如果它連接到一個傳入層。

  • input_spec InputSpec說明該層輸入格式的實例。

    創建圖層子類時,可以設置 self.input_spec 以使圖層在調用時運行輸入兼容性檢查。考慮 Conv2D 層:它隻能在秩為 4 的單個輸入張量上調用。因此,您可以在 __init__() 中設置:

    self.input_spec = tf.keras.layers.InputSpec(ndim=4)

    現在,如果您嘗試在不是 4 級的輸入上調用圖層(例如,形狀為 (2,) 的輸入,它將引發 nicely-formatted 錯誤:

    ValueError:Input 0 of layer conv2d is incompatible with the layer:
    expected ndim=4, found ndim=1. Full shape received:[2]

    可以通過input_spec 指定的輸入檢查包括:

    • 結構(例如,單個輸入、2 個輸入的列表等)
    • Shape
    • 排名(ndim)
    • Dtype

    有關詳細信息,請參閱tf.keras.layers.InputSpec

  • losses 使用添加的損失列表add_loss()API。

    訪問此屬性時會創建變量正則化張量,因此非常安全:訪問 tf.GradientTape 下的 losses 會將梯度傳播回相應的變量。

    class MyLayer(tf.keras.layers.Layer):
      def call(self, inputs):
        self.add_loss(tf.abs(tf.reduce_mean(inputs)))
        return inputs
    l = MyLayer()
    l(np.ones((10, 1)))
    l.losses
    [1.0]
    inputs = tf.keras.Input(shape=(10,))
    x = tf.keras.layers.Dense(10)(inputs)
    outputs = tf.keras.layers.Dense(1)(x)
    model = tf.keras.Model(inputs, outputs)
    # Activity regularization.
    len(model.losses)
    0
    model.add_loss(tf.abs(tf.reduce_mean(x)))
    len(model.losses)
    1
    inputs = tf.keras.Input(shape=(10,))
    d = tf.keras.layers.Dense(10, kernel_initializer='ones')
    x = d(inputs)
    outputs = tf.keras.layers.Dense(1)(x)
    model = tf.keras.Model(inputs, outputs)
    # Weight regularization.
    model.add_loss(lambda:tf.reduce_mean(d.kernel))
    model.losses
    [<tf.Tensor:shape=(), dtype=float32, numpy=1.0>]
  • metrics 使用添加的指標列表add_metric()API。
    input = tf.keras.layers.Input(shape=(3,))
    d = tf.keras.layers.Dense(2)
    output = d(input)
    d.add_metric(tf.reduce_max(output), name='max')
    d.add_metric(tf.reduce_min(output), name='min')
    [m.name for m in d.metrics]
    ['max', 'min']
  • non_trainable_weights 該層跟蹤的所有不可訓練權重的列表。

    不可訓練的權重在訓練期間不會更新。它們預計將在 call() 中手動更新。

  • output 檢索層的輸出張量。

    僅當該層隻有一個輸出時才適用,即如果它連接到一個傳入層。

  • output_size
  • state_size
  • supports_masking 該層是否支持使用 compute_mask 計算掩碼。
  • trainable
  • trainable_weights 該層跟蹤的所有可訓練權重的列表。

    可訓練權重在訓練期間通過梯度下降進行更新。

  • variable_dtype Layer.dtype 的別名,權重的 dtype。
  • weights 返回所有層變量/權重的列表。
  • wrapped_cell

相關用法


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