版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010255642/article/details/82384489
mxnet.ndarray.contrib.
foreach
(body, data, init_states)
运行循环,在NDArrays在0维度上使用用户定义的计算
这个操作
这个操作符模拟了一个for循环,并且body有一个for循环迭代的计算。body以两个参数作为输入,并输出两个元素的元组,如下所示:
out, states = body(data1, states)
data1是NDArray的列表或NDArray,如果data是一个NDArray,则data1是一个NDArray,否则,data1是一个NDArrays的列表且有和data同样的大小。states是一个NDArrays的列表,有与init_states相同的大小。out是NDArray或NDArray的列表,它被连接为为foreach第一个输出。states来自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)
Parameters: |
|
---|---|
Returns: |
|
Examples
>>> 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)