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


Python tf.compat.v1.nn.static_rnn用法及代碼示例


創建由 RNNCell cell 指定的循環神經網絡。 (已棄用)

用法

tf.compat.v1.nn.static_rnn(
    cell, inputs, initial_state=None, dtype=None, sequence_length=None, scope=None
)

參數

  • cell RNNCell 的一個實例。
  • inputs 一個長度為 T 的輸入列表,每個輸入都是一個形狀為 [batch_size, input_size]Tensor 或此類元素的嵌套元組。
  • initial_state (可選)RNN 的初始狀態。如果 cell.state_size 是整數,則它必須是具有適當類型和形狀的 Tensor [batch_size, cell.state_size] 。如果 cell.state_size 是一個元組,這應該是一個具有形狀 [batch_size, s] for s in cell.state_size 的張量的元組。
  • dtype (可選)初始狀態和預期輸出的數據類型。如果未提供 initial_state 或 RNN 狀態具有異構 dtype,則為必需。
  • sequence_length 指定輸入中每個序列的長度。一個 int32 或 int64 向量(張量)大小 [batch_size] ,值在 [0, T)
  • scope 創建的子圖的變量範圍;默認為"rnn"。

返回

  • 一對(輸出,狀態),其中:
    • 輸出是一個長度為 T 的輸出列表(每個輸入一個),或這些元素的嵌套元組。

    • state 是最終狀態

拋出

  • TypeError 如果cell 不是 RNNCell 的實例。
  • ValueError 如果 inputsNone 或空列表,或者無法通過形狀推斷從輸入推斷輸入深度(列大小)。

警告:此函數已棄用。它將在未來的版本中刪除。更新說明:請使用keras.layers.RNN(cell, unroll=True),相當於這個API

生成的最簡單的 RNN 網絡形式是:

state = cell.zero_state(...)
  outputs = []
  for input_ in inputs:
    output, state = cell(input_, state)
    outputs.append(output)
  return (outputs, state)

但是,還有一些其他選項可用:

可以提供初始狀態。如果提供了sequence_length向量,則進行動態計算。這種計算方法不會計算超過 minibatch 的最大序列長度的 RNN 步長(從而節省計算時間),並以示例的序列長度正確地將狀態傳播到最終狀態輸出。

執行的動態計算是,在時間 t 為批次行 b

(output, state)(b, t) =
    (t >= sequence_length(b))
      ? (zeros(cell.output_size), states(b, sequence_length(b) - 1))
     :cell(input(b, t), state(b, t - 1))

相關用法


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