比较与torch.Bilinear的功能差异
torch.nn.Bilinear
torch.nn.Bilinear(
in1_features,
in2_features,
out_features,
bias=True)(input1, input2) -> Tensor
更多内容详见torch.nn.Bilinear。
mindspore.nn.BiDense
mindspore.nn.BiDense(
in1_channels,
in2_channels,
out_channels,
weight_init=None,
bias_init=None,
has_bias=True)(input1, input2) -> Tensor
更多内容详见mindspore.nn.BiDense。
差异对比
PyTorch:双线性全连接层。
MindSpore:MindSpore此API实现功能与PyTorch基本一致。可以通过 weight_init
和 bias_init
分别设置权重和偏置的初始化方法,PyTorch无此功能。
分类 |
子类 |
PyTorch |
MindSpore |
差异 |
---|---|---|---|---|
参数 |
参数1 |
in1_features |
in1_channels |
功能一致,参数名不同 |
参数2 |
in2_features |
in2_channels |
功能一致,参数名不同 |
|
参数3 |
out_features |
out_channels |
功能一致,参数名不同 |
|
参数4 |
- |
weight_init |
权重参数的初始化方法,PyTorch无此参数 |
|
参数5 |
- |
bias_init |
偏置参数的初始化方法,PyTorch无此参数 |
|
参数6 |
bias |
has_bias |
功能一致,参数名不同 |
|
输入 |
输入1 |
input1 |
input1 |
功能一致 |
输入2 |
input2 |
input2 |
功能一致 |
代码示例
# PyTorch
import torch
m = torch.nn.Bilinear(20, 30, 40)
input1 = torch.randn(128, 20)
input2 = torch.randn(128, 30)
output = m(input1, input2)
print(output.shape)
# torch.Size([128, 40])
# MindSpore
import mindspore
m = mindspore.nn.BiDense(20, 30, 40)
input1 = mindspore.ops.randn(128, 20)
input2 = mindspore.ops.randn(128, 30)
output = m(input1, input2)
print(output.shape)
# (128, 40)