Linear

class paddle.nn.Linear ( in_features, out_features, weight_attr\=None, bias_attr\=None, name\=None ) [源代码]

线性变换层 。对于每个输入Tensor

Linear - 图1

,计算公式为:

Linear - 图2

其中,

Linear - 图3

Linear - 图4

分别为权重和偏置。

Linear层只接受一个Tensor作为输入,形状为

Linear - 图5

,其中

Linear - 图6

表示可以为任意个额外的维度。 该层可以计算输入Tensor与权重矩阵

Linear - 图7

的乘积,然后生成形状为 [batch_size,∗,out_features][batch_size,∗,out_features] 的输出Tensor。 如果 bias_attrbias_attr 不是False,则将创建一个偏置参数并将其添加到输出中。

参数

  • in_features (int) – 线性变换层输入单元的数目。

  • out_features (int) – 线性变换层输出单元的数目。

  • weight_attr (ParamAttr, 可选) – 指定权重参数的属性。默认值为None,表示使用默认的权重参数属性,将权重参数初始化为0。具体用法请参见 ParamAttr

  • bias_attr (ParamAttr|bool, 可选) – 指定偏置参数的属性。 bias_attrbias_attr 为bool类型且设置为False时,表示不会为该层添加偏置。 bias_attrbias_attr 如果设置为True或者None,则表示使用默认的偏置参数属性,将偏置参数初始化为0。具体用法请参见 ParamAttr 。默认值为None。

  • name (str,可选) – 具体用法请参见 Name ,一般无需设置,默认值为None。

属性

weight

本层的可学习参数,类型为 Parameter

bias

本层的可学习偏置,类型为 Parameter

形状

  • 输入:形状为 [batch_size,∗,in_features][batch_size,∗,in_features] 的多维Tensor。

  • 输出:形状为 [batch_size,∗,out_features][batch_size,∗,out_features] 的多维Tensor。

代码示例

  1. import paddle
  2. # Define the linear layer.
  3. weight_attr = paddle.ParamAttr(
  4. name="weight",
  5. initializer=paddle.nn.initializer.Constant(value=0.5))
  6. bias_attr = paddle.ParamAttr(
  7. name="bias",
  8. initializer=paddle.nn.initializer.Constant(value=1.0))
  9. linear = paddle.nn.Linear(2, 4, weight_attr=weight_attr, bias_attr=bias_attr)
  10. # linear.weight: [[0.5 0.5 0.5 0.5]
  11. # [0.5 0.5 0.5 0.5]]
  12. # linear.bias: [1. 1. 1. 1.]
  13. x = paddle.randn((3, 2), dtype="float32")
  14. # x: [[-0.32342386 -1.200079 ]
  15. # [ 0.7979031 -0.90978354]
  16. # [ 0.40597573 1.8095392 ]]
  17. y = linear(x)
  18. # y: [[0.23824859 0.23824859 0.23824859 0.23824859]
  19. # [0.9440598 0.9440598 0.9440598 0.9440598 ]
  20. # [2.1077576 2.1077576 2.1077576 2.1077576 ]]