Skip to content

Latest commit

 

History

History
127 lines (95 loc) · 4.22 KB

elementwise_add_cn.rst

File metadata and controls

127 lines (95 loc) · 4.22 KB

elementwise_add

.. py:function:: paddle.fluid.layers.elementwise_add(x, y, axis=-1, act=None, name=None)




该OP是逐元素相加算子,输入 x 与输入 y 逐元素相加,并将各个位置的输出元素保存到返回结果中。

等式为:

Out = X + Y
  • X:多维Tensor。
  • Y:维度必须小于等于X维度的Tensor。
对于这个运算算子有2种情况:
  1. YshapeX 相同。
  2. YshapeX 的连续子序列。
对于情况2:
  1. Y 匹配 X 的形状(shape),其中 axisYX 上的起始维度的位置。
  2. 如果 axis 为-1(默认值),则 axis= rank(X)-rank(Y)
  3. 考虑到子序列,Y 的大小为1的尾部维度将被忽略,例如shape(Y)=(2,1)=>(2)。

例如:

shape(X) = (2, 3, 4, 5), shape(Y) = (,)
shape(X) = (2, 3, 4, 5), shape(Y) = (5,)
shape(X) = (2, 3, 4, 5), shape(Y) = (4, 5), with axis=-1(default) or axis=2
shape(X) = (2, 3, 4, 5), shape(Y) = (3, 4), with axis=1
shape(X) = (2, 3, 4, 5), shape(Y) = (2), with axis=0
shape(X) = (2, 3, 4, 5), shape(Y) = (2, 1), with axis=0

参数

  • x (Variable)- 多维 TensorLoDTensor。数据类型为 float32float64int32int64
  • y (Variable)- 多维 TensorLoDTensor。数据类型为 float32float64int32int64
  • axis (int32,可选)- y 的维度对应到 x 维度上时的索引。默认值为 -1。
  • act (str,可选)- 激活函数名称,作用于输出上。默认值为None。详细请参考 :ref:`api_guide_activations`,常见的激活函数有:relu tanh sigmoid 等。
  • name (str,可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为 None。

返回

维度与 x 相同的 TensorLoDTensor,数据类型与 x 相同。

返回类型

Variable。

代码示例 1

import paddle.fluid as fluid
import numpy as np
def gen_data():
    return {
        "x": np.array([2, 3, 4]),
        "y": np.array([1, 5, 2])
    }
x = fluid.layers.data(name="x", shape=[3], dtype='float32')
y = fluid.layers.data(name="y", shape=[3], dtype='float32')
z = fluid.layers.elementwise_add(x, y)
# z = x + y
place = fluid.CPUPlace()
exe = fluid.Executor(place)
z_value = exe.run(feed=gen_data(),
                    fetch_list=[z.name])
print(z_value) # [3., 8., 6.]

代码示例 2

import paddle.fluid as fluid
import numpy as np
def gen_data():
    return {
        "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'),
        "y": np.random.randint(1, 5, size=[3, 4]).astype('float32')
    }
x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32')
y = fluid.layers.data(name="y", shape=[3,4], dtype='float32')
z = fluid.layers.elementwise_add(x, y, axis=1)
# z = x + y
place = fluid.CPUPlace()
exe = fluid.Executor(place)
z_value = exe.run(feed=gen_data(),
                    fetch_list=[z.name])
print(z_value) # z.shape=[2,3,4,5]

代码示例 3

import paddle.fluid as fluid
import numpy as np
def gen_data():
    return {
        "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'),
        "y": np.random.randint(1, 5, size=[5]).astype('float32')
    }
x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32')
y = fluid.layers.data(name="y", shape=[5], dtype='float32')
# z = x + y
z = fluid.layers.elementwise_add(x, y, axis=3)
place = fluid.CPUPlace()
exe = fluid.Executor(place)
z_value = exe.run(feed=gen_data(),
                    fetch_list=[z.name])
print(z_value) # z.shape=[2,3,4,5]