LeNet网络模型的搭建与训练

使用pytorch自己从头搭建一个Lenet分类器网络及其训练、检测脚本 使用pytorch从0搭建Lenet分类网络 阅读详情

1.网络结构的搭建

import torch.nn as nn
import torch.nn.functional as F
# 继承nn.Module
# 计算公式:N=(W-F+2P)/S+1,W为输入图片尺寸W×W,F为Filter大小,P为padding大小,S为stride
# F=dilation×(kernel_size-1)+1
class LeNet(nn.Module):
    def __init__(self):
        super(LeNet,self).__init__()
        self.conv1=nn.Conv2d(in_channels=3,out_channels=16,kernel_size=5,stride=1,padding=0)
        self.pool1=nn.MaxPool2d(kernel_size=2,stride=2)
        self.conv2=nn.Conv2d(16,32,5)
        self.pool2=nn.MaxPool2d(2,2)
        self.fc1=nn.Linear(32*5*5,120)
        self.fc2=nn.Linear(120,84)
        self.fc3=nn.Linear(84,10)
    
    def forward(self,x):
        # input(3,32,32) F=1×(5-1)+1,N=(32-5+2×0)/1+1=28,output(16,28,28)
        x=F.relu(self.conv1(x)) 
        x=self.pool1(x) # output(16,14,14)
        # N=(14-5)/1+1=10,output(16,10,10)
        x=F.relu(self.conv2(x))
        x=self.pool2(x) # output(32,5,5)
        x=x.view(-1,32*5*5) # output(32*5*5)
        x=F.relu(self.fc1(x)) # output(120)
        x=F.relu(self.fc2(x)) # output(84)
        x=self.fc3(x) # output(10)
        return x

2.模型的训练

import torch
import torchvision
import torch.nn as nn
from model import LeNet
import torch.optim as optim
import torchvision.transforms as transforms
import matplotlib.pyplot as  plt
import numpy as np


def main():
    # 图片处理
    transform = transforms.Compose([
        transforms.ToTensor(),
        transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))
    ])
    # CIFAR10数据集,50000张训练图片
    # 第一次下载使用时要将download设置为true才能自动去下载数据集
    train_set = torchvision.datasets.CIFAR10(
        root='./data',
        train=True,
        download=False,
        transform=transform
    )
    train_loader = torch.utils.data.DataLoader(
        train_set, 
        batch_size=36,
        shuffle=True, 
        num_workers=0
    )

    # 10000张验证图片
    val_set = torchvision.datasets.CIFAR10(
        root='./data',
        train=False,
        download=False,
        transform=transform
    )
    val_loader = torch.utils.data.DataLoader(
        val_set,
        batch_size=10000,
        shuffle=False,
        num_workers=0
    )
    val_data_iter = iter(val_loader)
    val_image,val_label = val_data_iter.next()
    
    # classes = ('plane', 'car', 'bird', 'cat','deer', 'dog', 'frog', 'horse', 'ship', 'truck')
    # def imshow(img):
    #     img =img/2+0.5
    #     np_img= img.numpy()
    #     plt.imshow(np.transpose(np_img,(1,2,0)))
    #     plt.show()
    # # 打印标签
    # print(' '.join('%5s'% classes[val_label[j]] for j in range(4)))
    # # 展示图片
    # imshow(torchvision.utils.make_grid(val_image))
    net = LeNet()
    loss_function = nn.CrossEntropyLoss()
    optimizer = optim.Adam(net.parameters(),lr=0.001)
    for epoch in range(5):
        running_loss = 0.0
        for step,data in enumerate(train_loader,start=0):
            # get the inputs:data is a list of[inputs,labels]
            inputs,labels = data
            # zero the parameter gradients
            optimizer.zero_grad()
            # forward+backward+optimize
            outputs = net(inputs) 
            loss = loss_function(outputs,labels)
            loss.backward()
            optimizer.step()

            # print statistics
            running_loss+=loss.item()
            if step%500 == 499:# print every 500  mini-batches
                with torch.no_grad():
                    outputs = net(val_image)#[batch,10]
                    predict_y = torch.max(outputs,dim=1)[1]
                    accuracy = torch.eq(predict_y,val_label).sum().item()/val_label.size(0)
                    print('[%d,%5d] train_loss:%.3f test_accuracy:%.3f'%(epoch+1,step+1,running_loss/500,accuracy))
                    running_loss = 0.0
    print("Finished Training!!!")

    save_path = './Lenet.pth'
    torch.save(net.state_dict(),save_path)




if __name__ =='__main__':
    main()

3.模型的预测检验

import torch
import torchvision.transforms as transforms
from PIL import Image
from model import LeNet

def main():
    transform = transforms.Compose([
        transforms.ToTensor(),
        transforms.Resize((32,32)),
        transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))
    ])
    classes=('plane', 'car', 'bird', 'cat','deer', 'dog', 'frog', 'horse', 'ship', 'truck')
    net=LeNet()
    net.load_state_dict(torch.load('Lenet.pth'))
    im = Image.open('1.jpg')
    im = transform(im) # [C,H,W]
    im = torch.unsqueeze(im,dim=0) # [N,C,H,W]
    with torch.no_grad():
        outputs = net(im)
        predict = torch.max(outputs,dim=1)[1].numpy()
    print(classes[int(predict)])


if __name__ == '__main__':
    main()

 

 

HLS:卷积神经网络LeNet5的实现与测试 目录一、引言二、LeNet5的学习三、数学知识补充四、HLS代码设计引言引言 一、引言 1、开发环境。 Windows10、Vivado2018.2、Vivado HLS与Xilinx SDK。 2、LeNet5概述。 1994年,CNN网络,手写字符识别与分类,确立了CNN结构,适合入门。 LeNet5共分为7层: C1,卷积层 S2,池化层 C3,卷积层 S4,池化层 C5,卷积层 F6,全连接层 OUTPUT,全连接层 二、LeNet5的学习 LeNet5每层结构内容的学习。 1°输入层INPU 阅读详情

相关推荐

paddle2.0高层API快速实现LeNet(MNIST手写数字识别)

文章目录paddle2.0高层API快速实现LeNet(MNIST手写数字识别)DL万能公式数据加载和预处理查看数据搭建LeNet-5卷积神经网络网络模型可视化模型配置模型评估模型预测批量预测单张图片预测部署上线保存模型继续调优训练保存预测模型 paddle2.0高层API快速实现LeNet(MNIST手写数字识别) 『深度学习7日打卡营·快速入门特辑』 零基础解锁深度学习神器飞桨框架高层API,七天时间助你掌握CV、NLP领域最火模型及应用。 课程地址 传送门:https://aistudio.bai

qq_40326280的博客 956

作业3:LetNet 网络实现

作业3:LeNet 网络实现报告 LeNet-5 网络模型作为卷积神经网络中的开创性工作,提出了三大思想: 局部感知 权值共享 下采样 因为图像特征分布在图像的像素上,利用卷积操作可以在多个位置提取相类似的特征,于是有了局部感知。另外由于当年并没有计算能力强悍的 GPU 来辅助训练神经网络,因此通过下采样层有效地加快训练和提取更高维特征,能够节省参数和计算,这与当年的技术相比是一个关键的优势。另外原论文中提到,全卷积不应该被放在第一层,图像特征有着高度的空间相关性,因此权值共享可以充分利用图

diligent_lee的博客 5258

【图像分类】卷积神经网络之LeNet5网络模型实现MNIST手写数字识别

卷积神经网络之LeNet5网络模型实现MNIST手写数字识别,文末附完整项目代码和数据集

学无止境、积少成多、厚积薄发 1669

LeNet模型及代码详解

LeNet框架及代码

weixin_42457110的博客 3973

【CarMaker实战指南】从零构建环形测试场景与车辆连续仿真

本文详细介绍了如何使用CarMaker软件从零构建环形测试场景与实现车辆连续仿真。通过分步指导搭建闭环道路、连接交叉路口、规划车辆轨迹等核心操作,帮助用户掌握CarMaker的基础应用技巧,并提供了常见问题排查与进阶优化建议,适用于车辆耐久性测试和自动驾驶算法验证等场景。

weixin_29274969的博客 235

matlab实现MSK调制解调

文章目录一、要求二、设计三、代码四、结果五、结论 一、要求 画出MSK信号产生的信息、I路、Q路信号对比图以及接收端解调的信息恢复的对比图。 二、设计 1.MSK调制 2.MSK解调 三、代码 clear all;clc; N=20; T=1; fc=10; Fs=100; bitstream=randi([0,1],1,N); bitstream1=2*bitstream-1; b0=1; for i=1:N encode_output(i)=b0*bitstream

Time_book的博客 1万+

【深度学习】Numpy实现简单神经网络

原文地址:点击访问 许久未更,是因为开学之后学习任务太充实了。每天都有做不完的事情,每件事情都又想把它做好。 我航中秋国庆假期长达8天,真应了那句话:该放的假一天不少,该补的课一次没有。期间,有多门作业要完成。今天,为大家推送简单神经网络的实现,是我的《人工智能加速器》的作业。 实验内容 搭建基本的多层神经网络,并在给定测试集上进行精度测试。 注1:不使用深度学习框架完成网络搭建。 注2:不限制编程语言,推荐使用python进行神经网络搭建,允许使用numpy等工具包。 注3:使用给定的.

qq_38904659的博客 1317

WRF-BEM相关参数说明

本参数适用于WRF-BEM模拟武汉市气候。

m0_60013472的博客 1896

适合入门深度学习的项目!!!搭建LeNet-5网络模型——2 训练模型搭建

上一节里,我们的网络模型放在一个名为net.py的文件里,这里我们调用它进行了模型的训练和测试,并将最优的模型保存在指定路径里。

qq_51206550的博客 463

一种基于频域滤波法消除干扰项与角谱法重构技术的数字全息显微台阶形貌测量实例分析

一种基于频域滤波法消除干扰项与角谱法重构技术的数字全息显微台阶形貌测量实例分析

简单光学 2035

AI人工智能全模态大模型架构:推动智能交通发展的架构设计

本文旨在阐述全模态大模型在智能交通领域的架构设计原理和应用方法。我们将探讨如何利用多模态AI技术解决交通流量预测、事故预警、路线优化等关键问题。文章将从基础概念入手,逐步深入技术细节,最后探讨实际应用和未来发展方向。全模态大模型:能够处理和理解多种数据模态(如图像、文本、语音等)的大型AI模型智能交通系统(ITS):利用先进技术优化交通流量和安全性的综合系统多模态融合:将不同数据源的信息整合处理的技术核心概念回顾全模态大模型是能够处理多种数据类型的强大AI系统。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 835

caffe示例实现之4在MNIST手写数字数据集上训练与测试LeNet

from: http://blog.youkuaiyun.com/liumaolincycle/article/details/47336921 本文主要来自Caffe作者Yangqing Jia网站给出的examples。 @article{jia2014caffe, Author = {Jia, Yangqing and Shelhamer, Evan and Donahue, Jeff an

凌风探梅的专栏 3293

【ARM Trace32(劳特巴赫) 使用介绍 13 -- Trace32 Var 变量篇】

例如我们已经知道一个符号(可能是变量或者函数)的地址,怎么确定这个地址是一个变量还是一个函数呢?如果是变量的话,变量名是啥?变量定义的位置在哪?如果是函数,函数名是啥?函数定义的位置又在哪呢?查看结构体变量 str_t32 的值。例如我们已经知道了一个符号的地址为。在map文件中的地址为。

CodingCos的博客 2350

Pytorch手写数字识别LeNet模型

LeNet网络 LeNet网络过卷积层时候保持分辨率不变,过池化层时候分辨率变小。实现如下 from PIL import Image import cv2 import matplotlib.pyplot as plt import torchvision from torchvision import transforms import torch from torch.utils.data import DataLoader import torch.nn as nn import numpy as

weixin_44823313的博客 1582

【WRF实操】四层嵌套网格设计-以粤港澳大湾区GBA为例

四层嵌套网格设计-以粤港澳大湾区GBA为例

WW、forever的博客 822

开源3D激光SLAM算法的异同点、优劣势与适配场景总结

本文对比分析了主流开源3D激光SLAM方案的核心差异与适用场景。LOAM架构简洁但精度较低;LeGO-LOAM轻量化适合地面机器人;LIO-SAM采用因子图优化支持多传感器融合;LVI-SAM通过视觉-激光-惯性三重冗余提升鲁棒性;FAST-LIO系列基于滤波架构实现超高实时性。选型需权衡传感器配置(纯激光/激光+IMU/激光+视觉)、运动状态(高速/常规)、计算资源等因素:资源受限选LeGO-LOAM或Faster-LIO,高速运动选FAST-LIO系列,退化环境选LVI-SAM,全局一致性需求选LIO-

Studying…… 651

手写数字识别从训练到部署全流程详解——Pytorch深度学习网络搭建与模型训练

在这里为了方便大家了解与入门深度学习开发,我以最简单的手写数字识别,通过Pytorch框架对LeNet-5网络进行构建与模型训练,,对Pytorch框架的使用与训练的全流程做一个详细的记录说明

best2012power的博客 2628

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Pytorch学习基础——LeNet从训练到测试

在上一篇Pytorch学习基础——CNN基本结构搭建中介绍了如何使用Pytorch.nn类搭建网络模型,结合MNIST数据集进行训练测试。 实现步骤: 导入必要的包并设置超参数: import torch import torchvision import torch.nn as nn from torch.autograd import Variable import torchvisio...

qq_37172182的博客 749

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Lenet 学习笔记 pytorch官方demo代码复现

Lenet 学习笔记 pytorch官方demo

weixin_45897172的博客 778

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

pytorch复现lenet5模型,并检测自己手写的数字图片

利用pytorch实现lenet5网络模型第一步:用pytorch框架搭建lenet5模型第一层为卷积层+池化层:conv2d+maxpool第二层为卷积层+池化层:conv2d+maxpool第三层和第四层为全连接层Linear第二步:数据集整理第三步:训练方法train(),训练数据第四步 test(),计算准确率第五步:detect(),可视化测试模型 写在前面: 利用框架搭建模型相对比较简单,但是也会遇到很多问题,网上资料很多,搭建模型的方法大同小异,但是在我尝试了用两种方法搭建出来模型,无论是训练

yuejich的博客 2807

序列的卷积和运算及其过程的可视化呈现_【动手学计算机视觉】第十五讲:卷积神经网络之LeNet...

点击蓝字关注我 LeNet是由2019年图灵奖获得者、深度学习三位顶级大牛之二的Yann LeCun、Yoshua Bengio于1998年提出,它也被认为被认为是最早的卷积神经网络模型。但是,由于算力和数据集的限制,卷积神经网络提出之后一直都被传统目标识别算法(特征提取+分类器)所压制。终于在沉寂了14年之后的2012年,AlexNet在ImageNet挑战赛上一骑绝尘,使得卷积神经...

weixin_39901332的博客 362

计算机视觉——飞桨深度学习实战-深度学习网络模型

手写数字分类数据集来源MNIST数据集,该数据集可以公开免费获取。该数据集中的训练集样本数量为60000个,测试集样本数量为10000个。每个样本均是由28×28像素组成的矩阵,每个像素点的值是标量,取值范围在0至255之间,可以认为该数据集的颜色通道数为1。数据分为图片和标签,图片是28*28的像素矩阵,标签为0~9共10个数字。

炼丹上岸 2175

【caffe学习笔记——mnist】mnist手写数据集训练和测试

http://blog.youkuaiyun.com/liumaolincycle/article/details/47336921 本文主要来自Caffe作者Yangqing Jia网站给出的examples。 @article{jia2014caffe, Author = {Jia, Yangqing and Shelhamer, Evan and Donahue, Jeff and Ka

nuc_jingzhi的博客 1108

经典网络复现----Lenet(Pytorch)

LeNet-5是一个较简单的卷积神经网络。下图显示了其结构:输入的二维图像,先经过两次卷积层到池化层,再经过全连接层,最后使用softmax分类作为输出层。(灰度图像) 需要知道卷积后的矩阵尺寸大小计算公式 model.py import torch.nn as nn import torch.nn.functional as F class LeNet(nn.Module): def __init__(self): super(LeNet, self).__i.

qq_38235017的博客 507

【PyTorch】3.1 模型创建与nn.Module

任务简介: 学习nn.Module类以及搭建网络模型步骤。 详细说明: 本节介绍网络模型的基本类nn.Module,nn.Module是所有网络层的基本类,它拥有8个有序字典,用于管理模型属性,本节课中将要学习如何构建一个Module。然后通过网络结构和计算图两个角度去观察搭建一个网络模型需要两个步骤:第一步,搭建子模块;第二步,拼接子模块。 一、网络模型创建步骤 1.机器学习模型训练步骤 2. 模型创建步骤 3. 模型构建两要素 测试代码: import os os.en...

尊新必威的博客 673

MindSpore入门——模型创建和训练

模型的创建和训练

weixin_47365232的博客 1325
上一篇: MyBatis注解开发
下一篇: AlexNet网络搭建(pytorch版)
Caoyy686868
博客等级 码龄8年 5742粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Caoyy686868

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值