addmm

fluid.layers.addmm(input, x, y, alpha=1.0, beta=1.0, name=None)

计算x和y的乘积,将结果乘以标量alpha,再加上input与beta的乘积,得到输出。其中input与x、y乘积的维度必须是可广播的。

计算过程的公式为:

addmm - 图1

参数

  • input (Variable) : 输入Tensor input,数据类型支持float32, float64。
  • x (Variable) : 输入Tensor x,数据类型支持float32, float64。
  • y (Variable) : 输入Tensor y,数据类型支持float32, float64。
  • alpha (float,可选) : 乘以x*y的标量,数据类型支持float32, float64,默认值为1.0。
  • beta (float,可选) : 乘以input的标量,数据类型支持float32, float64,默认值为1.0。
  • name (str,可选)- 具体用法请参见 Name ,一般无需设置,默认值为None。

返回

计算得到的Tensor。Tensor数据类型与输入input数据类型一致。

返回类型

变量(Variable)

代码示例

  1. import numpy as np
  2. import paddle
  3. import paddle.fluid as fluid
  4. input = fluid.data(name='input', shape=[2, 2], dtype='float32')
  5. x = fluid.data(name='x', shape=[2, 2], dtype='float32')
  6. y = fluid.data(name='y', shape=[2, 2], dtype='float32')
  7. out = fluid.layers.addmm( input=input, x=x, y=y, alpha=5.0, beta=0.5 )
  8. data_x = np.ones((2, 2)).astype(np.float32)
  9. data_y = np.ones((2, 2)).astype(np.float32)
  10. data_input = np.ones((2, 2)).astype(np.float32)
  11. place = fluid.CUDAPlace(0) if fluid.core.is_compiled_with_cuda() else fluid.CPUPlace()
  12. exe = fluid.Executor(place)
  13. results = exe.run(fluid.default_main_program(),
  14. fetch_list=[out], feed={"input": data_input, 'x': data_x, "y": data_y})
  15. print(np.array(results[0]))
  16. # [[10.5 10.5]
  17. # [10.5 10.5]]