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


Python mxnet.symbol.contrib.foreach用法及代碼示例


用法:

mxnet.symbol.contrib.foreach(body, data, init_states, name='foreach')

參數

  • body(a Python function.) - 在迭代中定義計算。
  • data(a symbol or a list of symbols.) - 輸入數據。
  • init_states(a Symbol or nested lists of symbols.) - 循環狀態的初始值。
  • name(string.) - 操作符的名稱。

返回

  • outputs(a Symbol or nested lists of Symbols.) - 從所有迭代的輸出中連接的輸出數據。
  • states(a Symbol or nested lists of Symbols.) - 上次迭代中的循環狀態。

使用用戶定義的計算對維度 0 上的符號運行 for 循環。

此運算符模擬 for 循環,並且主體具有 for 循環迭代的計算。它在輸入 NDArrays 的每個切片上運行 body 中的計算。

body 將兩個參數作為輸入並輸出兩個元素的元組,如下所示:

出,狀態 = 身體(數據 1,狀態)

data1 可以是符號或符號列表。如果 data 是一個符號,則 data1 是一個符號。否則,data1 是一個符號列表,並且與數據具有相同的大小。 states 是符號列表,大小與init_states 相同。類似地,out 可以是一個符號或符號列表,它們被連接起來作為 foreach 的第一個輸出;上次執行 body 的狀態是 foreach 的第二個輸出。

foreach 隻能輸出輸出數據或狀態。如果用戶隻想要狀態,body 函數可以返回 ([], states)。同樣,如果用戶隻想輸出數據,body 函數可以返回 (out, [])。

當輸入數據為 NDArray 時,該算子的計算相當於下麵的偽代碼:

states = init_states
outs = []
for i in data.shape[0]:
    s = data[i]
    out, states = body(s, states)
    outs.append(out)
outs = stack(*outs)

例子

>>> step = lambda data, states: (data + states[0], [states[0] * 2])
>>> data = mx.sym.var('data')
>>> states = [mx.sym.var('state')]
>>> outs, states = mx.sym.contrib.foreach(step, data, states)

相關用法


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