mindspore.ops.bidense

mindspore.ops.bidense(input1, input2, weight, bias=None)[source]

Applies bilinear dense connected layer for input1 and input2. The bilinear dense function is defined as:

\[output = x_{1}^{T}Ax_{2} + b\]

\(x_{1}\) represents input1 , \(x_{2}\) represents input2 , \(A\) represents weight , \(b\) represents bias .

Warning

This is an experimental API that is subject to change or deletion.

Parameters
  • input1 (Tensor) – Input Tensor of shape \((*, in1\_channels)\), where \(*\) means any number of additional dimensions. All but the last dimension should be the same with input2.

  • input2 (Tensor) – Input Tensor of shape \((*, in2\_channels)\), where \(*\) means any number of additional dimensions. All but the last dimension should be the same with input1.

  • weight (Tensor) – The weight applied to the input1 and input2. The shape is \((out\_channels, in1\_channels, in2\_channels)\).

  • bias (Tensor, optional) – Additive biases to the output. The shape is \((out\_channels)\) or \(()\). Defaults: None , the bias is 0.

Returns

Tensor, shape \((*, out\_channels)\), where \(*\) means any number of additional dimensions. All but the last dimension should be the same with the input Tensors.

Raises
  • TypeError – If input1 is not Tensor.

  • TypeError – If input2 is not Tensor.

  • TypeError – If weight is not Tensor.

  • TypeError – If bias is not Tensor.

  • ValueError – If dimensions except the last of ‘input1’ are different from ‘input2’ .

Supported Platforms:

Ascend GPU CPU

Examples

>>> import mindspore
>>> from mindspore import Tensor, ops
>>> input1 = mindspore.Tensor([[-1.1283, 1.2603],
...                            [0.0214, 0.7801],
...                            [-1.2086, 1.2849]], mindspore.float32)
>>> input2 = mindspore.Tensor([[-0.4631, 0.3238, 0.4201],
...                            [0.6215, -1.0910, -0.5757],
...                            [-0.7788, -0.0706, -0.7942]], mindspore.float32)
>>> weight = mindspore.Tensor([[[-0.3132, 0.9271, 1.1010],
...                             [0.6555, -1.2162, -0.2987]],
...                            [[1.0458, 0.5886, 0.2523],
...                             [-1.3486, -0.8103, -0.2080]],
...                            [[1.1685, 0.5569, -0.3987],
...                             [-0.4265, -2.6295, 0.8535]],
...                            [[0.6948, -1.1288, -0.6978],
...                             [0.3511, 0.0609, -0.1122]]], mindspore.float32)
>>> output = ops.bidense(input1, input2, weight)
>>> print(output)
[[-2.0612743 0.5581219 0.22383511 0.8667302]
 [1.4476739 0.12626505 1.6552988 0.21297503]
 [0.6003161 2.912046 0.5590313 -0.35449564]]