VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • Python中的pytorch卷积神经网络LeNet

LeNet 是一个经典的卷积神经网络(CNN),由 Yann LeCun 在上世纪90年代开发,用于手写数字识别(如 MNIST 数据集)。尽管它的结构相对简单,但它是现代深度学习和卷积神经网络发展的基础之一。在 PyTorch 中实现 LeNet 是一个很好的练习,可以帮助你理解 CNN 的基本构建块。
 
下面是一个使用 PyTorch 实现的 LeNet 的基本示例:
 
import torch
import torch.nn as nn
import torch.nn.functional as F
 
class LeNet(nn.Module):
    def __init__(self):
        super(LeNet, self).__init__()
        # 第一层卷积层,输入通道数 1(灰度图),输出通道数 6,卷积核大小 5x5
        self.conv1 = nn.Conv2d(1, 6, 5)
        # 第二层池化层,池化核大小 2x2
        self.pool = nn.MaxPool2d(2, 2)
        # 第三层卷积层,输入通道数 6(上一层输出),输出通道数 16,卷积核大小 5x5
        self.conv2 = nn.Conv2d(6, 16, 5)
        # 第四层是全连接层,将卷积层的输出展平后作为输入
        # 需要先计算展平后的特征数量:((输入高度-卷积核高度+2*padding)/stride+1) * ((输入宽度-卷积核宽度+2*padding)/stride+1) * 输出通道数
        # 对于 MNIST 数据集,输入图像大小为 32x32,经过两层卷积和池化后,大小变为 (32-5+0)/2/2 = 7x7
        # 因此,展平后的特征数量为 7*7*16
        self.fc1 = nn.Linear(7 * 7 * 16, 120)
        self.fc2 = nn.Linear(120, 84)
        self.fc3 = nn.Linear(84, 10)  # 假设是 10 类分类问题,如 MNIST 的 0-9 数字
 
    def forward(self, x):
        # 第一层卷积和ReLU激活
        x = self.pool(F.relu(self.conv1(x)))
        # 第二层卷积和ReLU激活,接着是池化
        x = self.pool(F.relu(self.conv2(x)))
        # 展平特征图
        x = torch.flatten(x, 1)
        # 全连接层
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        x = self.fc3(x)
        return x
 
# 实例化模型
net = LeNet()
print(net)
 
# 假设有一个输入张量 x(模拟一张 32x32 的灰度图像)
# x = torch.randn(1, 1, 32, 32)  # 形状为 (batch_size, channels, height, width)
# 输出 = net(x)
# print(output.shape)  # 应该是 torch.Size([1, 10]),表示 10 个类别的预测分数
 
请注意,这个 LeNet 的实现是针对灰度图像(单通道)的,如 MNIST 数据集中的图像。如果你的输入图像是彩色的(RGB),你需要将第一个卷积层的输入通道数从 1 改为 3。
 
此外,这个实现没有包括 LeNet 原始版本中可能包含的一些其他特性,如 Sigmoid 激活函数在输出层的使用(尽管在现代深度学习实践中,Softmax 函数通常与交叉熵损失函数一起使用来替代 Sigmoid+交叉熵的组合)。这个示例使用了 ReLU 激活函数,它在现代 CNN 中更为常见。

 
最后,如果你对python语言还有任何疑问或者需要进一步的帮助,请访问https://www.xin3721.com 本站原创,转载请注明出处:https://www.xin3721.com/Python/python50423.html


相关教程