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
方法中,我们调用线性层来执行前向传播。
接下来,我们创建了一个全连接层的实例,并使用一个随机输入张量进行前向传播。最后,我们打印输出张量的形状,以验证其是否符合预期。