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


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