推荐答案
在 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
可以方便地实现线性变换,并在神经网络中广泛应用。