PyTorch中的全连接层(fully connected layer)通常用于将输入向量转换为具有特定数量输出神经元的向量。在前向传播期间,全连接层会接收输入张量,执行矩阵乘法,并添加一个偏置向量,然后通过激活函数生成输出张量。
下面是一个简单的示例,展示了如何在PyTorch中实现全连接层的前向传播:
import torch import torch.nn as nn # 定义一个简单的全连接层 class FullyConnectedLayer(nn.Module): def __init__(self, input_size, output_size): super(FullyConnectedLayer, self).__init__() self.linear = nn.Linear(input_size, output_size) def forward(self, x): # 执行矩阵乘法和偏置加法 out = self.linear(x) return out # 创建一个全连接层的实例 input_size = 784 # 假设输入是一个 28x28 的图像 output_size = 10 # 输出是一个包含 10 个类别的向量 fc_layer = FullyConnectedLayer(input_size, output_size) # 创建一个随机输入张量 input_tensor = torch.randn(1, input_size) # 批量大小为 1,输入大小为 784 # 前向传播 output_tensor = fc_layer(input_tensor) print("Output tensor shape:", output_tensor.shape) # 输出形状应为 [1, 10]
在这个示例中,我们首先定义了一个名为FullyConnectedLayer
的类,该类继承自nn.Module
。我们在构造函数中初始化了一个线性层(nn.Linear
),该层将输入大小映射到输出大小。在forward
方法中,我们调用线性层来执行前向传播。
接下来,我们创建了一个全连接层的实例,并使用一个随机输入张量进行前向传播。最后,我们打印输出张量的形状,以验证其是否符合预期。