addmm¶
- paddle.sparse. addmm ( input, x, y, beta=1.0, alpha=1.0, name=None ) [source]
-
Note
This API is only supported from
CUDA 11.0
.Applies matrix multiplication for x and y , input is added to the final result. The equation is:
\[out = alpha * x * y + beta * input\]The supported input/output Tensor layout are as follows:
Note
input[SparseCsrTensor] + x[SparseCsrTensor] @ y[SparseCsrTensor] -> out[SparseCsrTensor] input[DenseTensor] + x[SparseCsrTensor] @ y[DenseTensor] -> out[DenseTensor] input[SparseCooTensor] + x[SparseCooTensor] @ y[SparseCooTensor] -> out[SparseCooTensor] input[DenseTensor] + x[SparseCooTensor] @ y[DenseTensor] -> out[DenseTensor]
It supports backward propagation.
Dimensions input , x , y must be same and >= 2D. Automatic broadcasting of Tensor is not supported.
- Parameters
-
input (SparseTensor|DenseTensor) – The input tensor. Shape is [*, M, N]. The data type can be float32 or float64.
x (SparseTensor) – The input SparseTensor. Shape is [*, M, K]. The data type can be float32 or float64.
y (SparseTensor|DenseTensor) – The input tensor. Shape is [*, K, N]. The data type can be float32 or float64.
beta (float, optional) – Coefficient of input . Default: 1.0
alpha (float, optional) – Coefficient of x * y . Default: 1.0
name (str, optional) – Name for the operation (optional, default is None). For more information, please refer to Name.
- Returns
-
Tensor type, date type and shape is the same with input .
- Return type
-
SparseTensor|DenseTensor
Examples
>>> >>> import paddle >>> paddle.device.set_device('gpu') >>> # dense + csr @ dense -> dense >>> input = paddle.rand([3, 2]) >>> crows = [0, 1, 2, 3] >>> cols = [1, 2, 0] >>> values = [1., 2., 3.] >>> x = paddle.sparse.sparse_csr_tensor(crows, cols, values, [3, 3]) >>> y = paddle.rand([3, 2]) >>> out = paddle.sparse.addmm(input, x, y, 3.0, 2.0) >>> # dense + coo @ dense -> dense >>> input = paddle.rand([3, 2]) >>> indices = [[0, 1, 2], [1, 2, 0]] >>> values = [1., 2., 3.] >>> x = paddle.sparse.sparse_coo_tensor(indices, values, [3, 3]) >>> y = paddle.rand([3, 2]) >>> out = paddle.sparse.addmm(input, x, y, 3.0, 2.0)