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


Python tf.foldr用法及代碼示例


foldr 在從維度 0 的 elems 解壓縮的張量列表中。(不推薦使用的參數值)

用法

tf.foldr(
    fn, elems, initializer=None, parallel_iterations=10, back_prop=True,
    swap_memory=False, name=None
)

參數

  • fn 要執行的可調用對象。
  • elems 張量或(可能是嵌套的)張量序列,每個張量都將沿其第一維展開。結果切片的嵌套序列將是 fn 的第一個參數。
  • initializer (可選)張量或(可能是嵌套的)張量序列,作為累加器的初始值。
  • parallel_iterations (可選)允許並行運行的迭代次數。
  • back_prop (可選)已棄用。 False 禁用對反向傳播的支持。更喜歡使用tf.stop_gradient
  • swap_memory (可選)True 啟用GPU-CPU 內存交換。
  • name (可選)返回張量的名稱前綴。

返回

  • 張量或(可能嵌套的)張量序列,由從最後一個到第一個從 elems 解包的張量列表連續應用 fn 產生。

拋出

  • TypeError 如果 fn 不可調用。

警告:不推薦使用某些參數值:(back_prop=False)。它們將在未來的版本中被刪除。更新說明:back_prop=False 已棄用。考慮改用 tf.stop_gradient。代替:results = tf.foldr(fn, elems, back_prop=False) 使用:results = tf.nest.map_structure(tf.stop_gradient, tf.foldr(fn, elems))

此 foldr 運算符重複地將可調用的 fn 應用於從最後到第一個的元素序列。元素由從 elems 解包的張量組成。可調用的 fn 將兩個張量作為參數。第一個參數是從前麵的 fn 調用計算的累加值,第二個參數是 elems 的當前位置的值。如果initializer 為None,則elems 必須至少包含一個元素,並且它的第一個元素用作初始值設定項。

假設 elems 被解壓縮到 values 中,這是一個張量列表。結果張量的形狀是 fn(initializer, values[0]).shape

此方法還允許 multi-arity elemsfn 的輸出。如果elems 是張量的(可能是嵌套的)列表或元組,則這些張量中的每一個都必須具有匹配的第一個(解包)維度。 fn 的簽名可能與 elems 的結構匹配。也就是說,如果 elems(t1, [t2, t3, [t4, t5]]) ,那麽 fn 的適當簽名是: fn = lambda (t1, [t2, t3, [t4, t5]]):

例子:

elems = [1, 2, 3, 4, 5, 6]
sum = foldr(lambda a, x:a + x, elems)
# sum == 21

相關用法


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