当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。