PyTorch 中如何使用 torch.nn.Linear 层?

推荐答案

在 PyTorch 中,torch.nn.Linear 是一个全连接层,用于实现线性变换。它的基本用法如下:

-- -------------------- ---- -------
------ -----
------ -------- -- --

- -------------- --------- -
------------ - ------------------------- ---------------

- ------------ ------------ ------------
------------ - -------------- ---

- -----------
------------- - --------------------------

--------------------

在这个例子中,nn.Linear 层将输入张量的每个样本从 10 维空间映射到 5 维空间。

本题详细解读

1. torch.nn.Linear 的参数

  • in_features:输入特征的数量,即输入张量的最后一维的大小。
  • out_features:输出特征的数量,即输出张量的最后一维的大小。
  • bias:是否使用偏置项,默认为 True。如果设置为 False,则线性变换不会添加偏置项。

2. 输入和输出的形状

  • 输入张量的形状通常为 (batch_size, in_features),其中 batch_size 是批量大小,in_features 是输入特征的数量。
  • 输出张量的形状为 (batch_size, out_features),其中 out_features 是输出特征的数量。

3. 线性变换的公式

torch.nn.Linear 实现的线性变换可以表示为: [ \text{output} = \text{input} \times \text{weight}^T + \text{bias} ] 其中:

  • weight 是一个形状为 (out_features, in_features) 的可学习参数矩阵。
  • bias 是一个形状为 (out_features,) 的可学习参数向量。

4. 使用场景

torch.nn.Linear 通常用于神经网络的隐藏层或输出层,特别是在全连接网络(如多层感知机)中。它可以与其他层(如激活函数、Dropout 层等)结合使用,构建复杂的神经网络模型。

5. 示例代码解释

  • nn.Linear(10, 5) 定义了一个线性层,将 10 维输入映射到 5 维输出。
  • input_tensor = torch.randn(3, 10) 创建了一个形状为 (3, 10) 的随机输入张量,表示批量大小为 3,每个样本有 10 个特征。
  • output_tensor = linear_layer(input_tensor) 将输入张量传递给线性层,得到形状为 (3, 5) 的输出张量。

通过这种方式,torch.nn.Linear 可以方便地实现线性变换,并在神经网络中广泛应用。

纠错
反馈