温馨提示×

pytorch全连接层在前向传播

小樊
81
2024-12-25 19:45:26
栏目: 深度学习

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方法中,我们调用线性层来执行前向传播。

接下来,我们创建了一个全连接层的实例,并使用一个随机输入张量进行前向传播。最后,我们打印输出张量的形状,以验证其是否符合预期。

0