[ paddle 参数更多 ]torch.nn.LazyLinear

torch.nn.LazyLinear

torch.nn.LazyLinear(out_features, bias=True, device=None, dtype=None)

paddle.nn.Linear

paddle.nn.Linear(in_features,
                 out_features,
                 weight_attr=None,
                 bias_attr=None,
                 name=None)

其中,Paddle 不支持 in_features 参数的延迟初始化,PyTorch 的 bias 与 Paddle 的 bias_attr 用法不一致,具体如下:

参数映射

PyTorch PaddlePaddle 备注
- in_features 表示线性变换层输入单元的数目,PyTorch 无此参数,Paddle 需要根据实际输入 Tensor 的单元的数目进行设置。
out_features out_features 表示线性变换层输出单元的数目。
bias - 是否在输出中添加可学习的 bias。
device - 指定 Tensor 的设备,Paddle 无此参数,一般对网络训练结果影响不大,可直接删除。
dtype - Tensor 的所需数据类型,Paddle 无此参数,一般对网络训练结果影响不大,可直接删除。
- weight_attr 指定权重参数的属性,PyTorch 无此参数,Paddle 保持默认即可。
- bias_attr 指定偏置参数的属性, 当bias_attr设置为 bool 类型时与 PyTorch 的作用一致。

转写示例

in_channels: 输入通道数

在 PyTorch 中,使用 LazyConvTranspose3d 时可以不指定 in_channels,它会在第一次前向传播时根据输入 Tensor 的形状自动确定;而在 Paddle 中,创建 Conv3DTranspose 时必须明确指定 in_channels 参数,其值应与输入 Tensor 的通道数保持一致。

# PyTorch 写法
linear = torch.nn.LazyLinear(out_features=10)
input = torch.randn(3, 5)  # 5 是输入单元数
output = linear(input)  # 此时 in_features 会根据输入 Tensor 的形状自动设置为 5

# Paddle 写法
linear = paddle.nn.Linear(in_features=5, out_features=10)  # 需要明确指定 in_features
input = paddle.randn([3, 5])  # 5 是输入单元数
output = linear(input)

bias: 是否在输出中添加可学习的 bias

# PyTorch 写法
torch.nn.LazyLinear(out_features=4, bias=True)

# Paddle 写法
paddle.nn.Linear(in_features=2, out_features=4) # in_features 需要根据实际输入单元数进行设置
# PyTorch 写法
torch.nn.LazyLinear(out_features=4, bias=False)

# Paddle 写法
paddle.nn.Linear(in_features=2, out_features=4, bias_attr=False) # in_features 需要根据实际输入单元数进行设置