pytorch实现卷积神经网络(LeNet5)

本文介绍了如何使用PyTorch构建经典的LeNet5卷积神经网络,并详细展示了训练MNIST数据集的过程,包括训练损失、准确率以及在测试集上的表现,并在训练完成后保存了最优模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 建立LeNet5主干网络

import torch
from torch import nn

# 定义网络模型
class LeNet5(nn.Module):
    #初始化网络
    def __init__(self):
        super(LeNet5, self).__init__()
        
        self.c1 = nn.Conv2d(in_channels=1, out_channels=64, kernel_size=5, padding=2)        
        self.Sigmoid = nn.Sigmoid()
        self.s2 = nn.AvgPool2d(kernel_size=2, stride=2)       
        self.c3 = nn.Conv2d(in_channels=64, out_channels=128, kernel_size=5)
        self.s4 = nn.AvgPool2d(kernel_size=2, stride=2)
        self.c5 = nn.Conv2d(in_channels=128, out_channels=256, kernel_size=5)
        
        self.flatten = nn.Flatten()
        self.f6 = nn.Linear(in_features=256, out_features=512)
        self.output = nn.Linear(in_features=512, out_features=10)
        
    def forward(self, x):
        x = self.Sigmoid(self.c1(x))
        x = self.s2(x)
        x = self.Sigmoid(self.c3(x))
        x = self.s4(x)
        x = self.c5(x)
        x = self.flatten(x)
        x = self.f6(x)
        x = self.output(x)
        return x

if __name__=="__main__":
    x = torch.rand([1, 1, 28, 28])
    model = LeNet5()
    y = model(x)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值