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


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


用法:

mxnet.ndarray.contrib.foreach(body, data, init_states)

參數

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

返回

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

使用用戶定義的計算在維度 0 上運行一個 for 循環。

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

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

out, states = body(data1, states)

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

當輸入數據為 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.nd.random.uniform(shape=(2, 10))
>>> states = [mx.nd.random.uniform(shape=(10))]
>>> outs, states = mx.nd.contrib.foreach(step, data, states)

相關用法


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