mindspore.ops.bidense
- mindspore.ops.bidense(input1, input2, weight, bias=None)[源代码]
对输入 input1 和 input2 应用双线性全连接操作。双线性全连接函数定义如下
\[output = input1^{T} weight input2 + bias\]警告
这是一个实验性API,后续可能修改或删除。
- 参数:
input1 (Tensor) - 输入Tensor,shape是 \((*, in1\_channels)\) ,其中 \(*\) 表示任意的附加维度,除最后一维外的维度与 input2 保持一致。
input2 (Tensor) - 输入Tensor,shape是 \((*, in2\_channels)\) ,其中 \(*\) 表示任意的附加维度,除最后一维外的维度与 input1 保持一致。
weight (Tensor) - 输入Tensor的权重,shape是 \((out\_channels, in1\_channels, in2\_channels)\) 。
bias (Tensor,可选) - 添加在输出结果的偏差,shape是 \((out\_channels)\) 或 \(()\) 。默认值:
None
,偏差为0。
- 返回:
Tensor,shape是 \((*, out\_channels)\) ,其中 \(*\) 表示任意的附加维度。输出Tensor除最后一维外其他维度与所有输入Tensor保持一致。
- 异常:
TypeError - input1 不是Tensor。
TypeError - input2 不是Tensor。
TypeError - weight 不是Tensor。
TypeError - bias 不是Tensor。
ValueError - 如果除了最后一维,input1 其他维度与 input2 有不同。
- 支持平台:
Ascend
GPU
CPU
样例:
>>> 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]]