图像分类篇-1:LeNet

目录

前言

 pytorch官方demo

 1. 环境

2. LeNet介绍  

3. 具体demo搭建

3.1 demo下载

3.2 demo的流程

3.3 demo-model.py

3.4 demo-train.py

3.5 demo-predict.py


前言

这个是按照B站up主的教程学习这方面知识的时候自己做的的笔记和总结,可能有点乱,主要是按照我自己的记录习惯

参考内容来自:


 pytorch官方demo

 1. 环境

                


2. LeNet介绍  


3. 具体demo搭建

3.1 demo下载

  1. 下载来源:下载来源

3.2 demo的流程

  1. model.py——定义LeNet模型
  2. train.py——加载数据集并训练,训练集计算loss,测试集计算accuracy,保存训练好的网络参数
  3. predict.py——得到训练好的网络参数后,用自己找的图像进行分类测试(调用模型进行预测的一个脚本)

3.3 demo-model.py

import torch.nn as nn
import torch.nn.functional as F

'''
模型
1.定义一个类
·   1.初始化函数:搭建中需要使用的网络层结构
    2.forward函数:定义正向传播的过程
'''
class LeNet(nn.Module):
    def __init__(self):
        super(LeNet, self).__init__()
        # 使用super函数:因为在定义类的过程中继承了nn.Module这个类
        # super():解决在多层继承中调用父类方法中可能出现的一系列问题——继承父类的构造函数
        self.conv1 = nn.Conv2d(3, 16, 5)
        # 定义卷积层 3:输入特征的深度// 16:16个卷积核// 5:卷积核尺度5*5
        self.pool1 = nn.MaxPool2d(2, 2)
        # 池化层大小2*2 步距也为2的池化操作(池化层只改变特征矩阵的高和宽,不影响深度)
        self.conv2 = nn.Conv2d(16, 32, 5)
        # 第二个卷积层 输入深度为16,因为第一个输出深度为16
        # 此处为32个卷积核,卷积核的尺度为5*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) # 此处的10需要根据训练集进行修改,这里使用的cifar-10是具有10个类别的分类任务,所以这里是10

    def forward(self, x):
        x = F.relu(self.conv1(x))    # input(3, 32, 32) output(16, 28, 28)
        # 经过卷积后的矩阵尺寸大小计算公式:N = (W - F + 2P)/S + 1
        # 输入图片大小W*W// Filter大小为F*F// 步长S// padding的像素数P
        # W = 32// 故此处计算(32- 5 + 2*0)/1 + 1 = 28 因为上面设置了conv1为16的卷积核所以是(16, 28, 28)
        x = self.pool1(x)            # output(16, 14, 14) # 经过下采样,宽度和高度缩减一半
        x = F.relu(self.conv2(x))    # output(32, 10, 10)
        # 输入为14*14 (14 - 5 + 2*0)/1 + 1 = 10 输出10*10
     
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值