【pytorch图像分类】AlexNet网络结构

2023-11-07

目录

1、前言

2、网络创新 

过拟合:

LRN:Local Response Normalization

归一化

3、网络结构图:

4.代码实现 

5.总结


1、前言

AlexNet 是 2012 年 ISLVRC2012 (Image Large Scale Visual Recognition Challenge) 竞赛的冠军网络,原始论文为ImageNet Classification with Deep Convolutional Neural Networks。

当时传统算法已经达到性能瓶颈,然而 AlexNet 将分类准确率由传统的 70%+ 提升到 80%+。它是由 Hinton 和他的学生 Alex Krizhevsky 设计的。也就是在那年之后,每年的 ImageNet LSVRC 挑战赛都被深度学习模型霸占着榜首,深度学习开始迅速发展。

注:ISLVRC2012 包括以下三部分:

  • 训练集:1281167 张已标注图片
  • 验证集:50000 张已标注图片
  • 测试集:100000 张未标注图片

2、网络创新 

  • 首次利用GPU进行网络加速训练,两块GPU并行运算

  • 使用ReLU激活函数,而不是sigmoid或者Tanh,

  • LRN对局部的特征进行归一化,结果作为ReLU激活函数的输入能有效降低错误率

  • 全连接层的前连层使用了Dropout随机失活神经元操作,防止过拟合

过拟合:

 

LRN:Local Response Normalization

是AlexNet中首次引入的归一化方法,但是在BatchNorm之后就很少使用这种方法了,这里对其概念进行简单理解

 

 

归一化

(1)为了后面数据处理的方便,归一化的确可以避免一些不必要的数值问题。

(2)为了程序运行时收敛加快。 下面图解。

(3)同一量纲。样本数据的评价标准不一样,需要对其量纲化,统一评价标准。这算是应用层面的需求。

(4)避免神经元饱和。啥意思?就是当神经元的激活在接近0或者1时会饱和,在这些区域,梯度几乎为0,这 样,在反向传播过程中,局部梯度就会接近0,这会有效地“杀死”梯度。

(5)保证输出数据中数值小的不被吞食。

 

3、网络结构图:

 

Conv1:

input_Size : [224,224,3]

kernels:48*2=96

Kernel_size:11

stride:4

padding :[1,2] (上下1列0,左右2列0)推理出来的 出现的原因是下面的公式计算出来有小数

N = w -F+2p)/S +1 = (224-11+(1+2))/4+1

output_size:[55,55,96]

Maxpool1:

只改变特征层的高度和宽度,深度不会改变

N = (W-F+2P)/S +1 = (55-3)/2+1

 

input_Size : [55,55,96]
Kernel_size:3
padding =0
stride = 2
output_size: [27,27,96] 

 Conv2:

N =(w -F+2p)/S +1 = (27-5+2*2)/1 +1

input_Size : [27,27,96] 
kernels:128*2=256
Kernel_size:5
padding = [2,2]    
stride = 1
output_size: [27,27,256] 

Conv3:

N = (w -F+2p)/S +1 = (13-3+2)/1+1 = 13

input_Size : [13,13,256] 
kernels:128*2=192*2
Kernel_size:3
padding = [1,1]
stride = 1
output_size: [13,13,384] 

 Conv4:

N = (w -F+2p)/S +1 = (13-3+2)/1+1 = 13

input_Size : [13,13,384] 
kernels:128*2=192*2
Kernel_size:3
padding = [1,1]
stride = 1
output_size: [13,13,384] 

 Conv5:

N = (w -F+2p)/S +1 = (13-3+2)/1+1 = 13

input_Size : [13,13,384] 
kernels:128*2=128*2 =256    #输出通道
Kernel_size:3
padding = [1,1]
stride = 1
output_size: [13,13,256]

Maxpool3 :

N = (W-F+2P)/S +1 = (13-3)/2+1 =6

input_Size : [13,13,256] 
kernels:128*2=256
Kernel_size:3
padding = 0
stride = 2
output_size: [6,6,256]

4.代码实现 

import torch
from torch import nn
from torch.nn import Flatten

class AlexNet(nn.Module):
    def __init__(self,num_class=1000,init_weight=False):
        super(AlexNet,self).__init__()

        self.features = nn.Sequential(
            nn.Conv2d(in_channels=3,out_channels=48,kernel_size=11,stride=4,padding=2), # input[3, 224, 224]  output[48, 55, 55]
            nn.ReLU(inplace=True),
            nn.MaxPool2d(kernel_size=3,stride=2) ,
            nn.Conv2d(in_channels=48,out_channels=128,kernel_size=5,padding=2),
            nn.ReLU(inplace=True),
            nn.MaxPool2d(kernel_size=3,stride=2),
            nn.Conv2d(in_channels=128,out_channels=192,kernel_size=3,padding=1),
            nn.ReLU(inplace=True),
            nn.Conv2d(in_channels=192,out_channels=192,kernel_size=3,padding=1),
            nn.ReLU(inplace=True),
            nn.Conv2d(in_channels=192,out_channels=128,kernel_size=3,padding=1),
            nn.ReLU(inplace=True),
            nn.MaxPool2d(kernel_size=3,stride=2),

        )

        self.classifier = nn.Sequential(
            nn.Dropout(p=0.5),
            nn.Linear(128*6*6 , 2048),
            nn.ReLU(inplace=True),
            nn.Dropout(p=0.5),
            nn.Linear(2048,2048),
            nn.ReLU(inplace=True),
            nn.Linear(2048,num_class),

        )
        if init_weight:
            self._initialize_weights()


    def forward(self,x):
        x = self.features(x)
        # self.flatten = nn.Flatten(start_dim=1,end_dim=-1)  #0维是batch_size,所以不用拉平,即从第二维拉平
        # x = self.flatten(x)
        # print(x.size())
        x = torch.flatten(x, start_dim=1)
        x = self.classifier(x)
        return x

    def _initialize_weights(self):
        for m in self.modules():
            if isinstance(m, nn.Conv2d):
                nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')
                if m.bias is not None:
                    nn.init.constant_(m.bias, 0)
            elif isinstance(m, nn.Linear):
                nn.init.normal_(m.weight, 0, 0.01)
                nn.init.constant_(m.bias, 0)

5.总结

  • AlexNet的架构与LeNet相似,但使用了更多的卷积层和更多的参数来拟合大规模的ImageNet数据集。

  • 今天,AlexNet已经被更有效的架构所超越,但它是从浅层网络到深层网络的关键一步。

  • 尽管AlexNet的代码只比LeNet多出几行,但学术界花了很多年才接受深度学习这一概念,并应用其出色的实验结果。这也是由于缺乏有效的计算工具。

  • Dropout、ReLU和预处理是提升计算机视觉任务性能的其他关键步骤。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【pytorch图像分类】AlexNet网络结构 的相关文章

  • 如何恢复tensorflow inceptions检查点文件(ckpt)?

    I have inception resnet v2 2016 08 30 ckpt文件是预先训练的初始模型 我想使用恢复这个模型 saver restore sess ckpt filename 但为此 我将需要编写训练该模型时使用的变量
  • 使用 MongoDB 作为我们的主数据库,我应该使用单独的图数据库来实现实体之间的关系吗?

    我们目前正在为一家专业公司内部实施类似 CRM 的解决方案 由于存储信息的性质以及信息的不同值和键 我们决定使用文档存储数据库 因为它完全适合目的 在本例中我们选择 MongoDB 作为此 CRM 解决方案的一部分 我们希望存储实体之间的关
  • 类的 IPython 表示

    我正在使用我创建的模块尝试 IPython 但它没有显示类对象的实际表示 相反 它显示类似的内容 TheClass module TheClass name I heavily在这个模块中使用元类 我有真正有意义的类表示 应该向用户显示 是
  • Gunicorn 工作人员无论如何都会超时

    我正在尝试通过gunicorn运行一个简单的烧瓶应用程序 但是无论我做什么 我的工作人员都会超时 无论是否有针对应用程序的活动 工作人员在我设置任何内容后总是会超时timeout值到 是什么导致它们超时 当我发出请求时 请求成功通过 但工作
  • 如何在 __init__ 中使用await设置类属性

    我如何定义一个类await在构造函数或类体中 例如我想要的 import asyncio some code class Foo object async def init self settings self settings setti
  • 从Django中具有外键关系的两个表中检索数据? [复制]

    这个问题在这里已经有答案了 This is my models py file from django db import models class Author models Model first name models CharFie
  • 在 Django Admin 中调整字段大小

    在管理上添加或编辑条目时 Django 倾向于填充水平空间 但在某些情况下 当编辑 8 个字符宽的日期字段或 6 或 8 个字符的 CharField 时 这确实是一种空间浪费 字符宽 然后编辑框最多可容纳 15 或 20 个字符 我如何告
  • 为什么 web2py 在启动时崩溃?

    我正在尝试让 web2py 在 Ubuntu 机器上运行 所有文档似乎都表明要在 nix 系统上运行它 您需要下载源代码并执行以下操作 蟒蛇 web2py py 我抓住了source http www web2py com examples
  • 打印数字时添加千位分隔符[重复]

    这个问题在这里已经有答案了 我真的不知道这个问题的 名称 所以它可能是一个不正确的标题 但问题很简单 如果我有一个数字 例如 number 23543 second 68471243 我想要它使print 像这样 23 54368 471
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • 未知错误:Chrome 无法启动:异常退出

    当我使用 chromedriver 对 Selenium 运行测试时 出现此错误 selenium common exceptions WebDriverException Message unknown error Chrome fail
  • python的shutil.move()在linux上是原子的吗?

    我想知道python的shutil move在linux上是否是原子的 如果源文件和目标文件位于两个不同的分区上 行为是否不同 或者与它们存在于同一分区上时的行为相同吗 我更关心的是如果源文件和目标文件位于同一分区上 shutil move
  • 通过Python连接到Bigquery:ProjectId和DatasetId必须非空

    我编写了以下脚本来通过 SDK 将 Big Query 连接到 Python 如下所示 from google cloud import bigquery client bigquery Client project My First Pr
  • Django 视图中的“请求”是什么

    在 Django 第一个应用程序的 Django 教程中 我们有 from django http import HttpResponse def index request return HttpResponse Hello world
  • 将 Matlab 的 datenum 格式转换为 Python

    我刚刚开始从 Matlab 迁移到 Python 2 7 在读取 mat 文件时遇到一些问题 时间信息以 Matlab 的日期数字格式存储 对于那些不熟悉它的人 日期序列号将日历日期表示为自固定基准日期以来已经过去的天数 在 MATLAB
  • PySpark groupByKey 返回 pyspark.resultiterable.ResultIterable

    我试图找出为什么我的 groupByKey 返回以下内容 0
  • Python:Goslate 翻译请求返回“503:服务不可用”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 这个问题似乎不是关于主要由程序员使用的特定编程问
  • 制作一份 Python 文档的 PDF 文件

    Python 官方网站提供 PDF 文档下载 但它们是按章节分隔的 我下载了源代码并构建了 PDF 文档 这些文档也是单独的 PDF 我怎么能够从源代码中的 Makefile 构建一个 PDF 文件 我认为这样阅读起来会更方便 如果连接单独
  • 如何在 Flask 中的视图函数/会话之间传递复杂对象

    我正在编写一个 Web 应用程序 当 且仅当 用户登录时 该应用程序从第三方服务器接收大量数据 这些数据被解析为自定义对象并存储在list 现在 用户在应用程序中使用这些数据 调用不同的视图 例如发送不同的请求 我不确定什么是最好的模式在视
  • 将索引与值交换的最快方法

    考虑pd Series s s pd Series list abcdefghij list ABCDEFGHIJ s A a B b C c D d E e F f G g H h I i J j dtype object 交换索引和值并

随机推荐

  • 自动化测试_49自动化测试中最常见的Selenium异常

    自动化测试 开发人员将始终在编写代码时牢记不同的场景 但是在某些情况下 实现可能无法按预期工作 相同的原则也适用于测试代码 该代码主要用于测试现有产品的功能 发现bug并使产品100 无缺陷 正确地说 真理总是比小说更陌生 当您执行Sele
  • matlab 杨氏双缝干涉实验

    目录 一 算法原理 二 代码实现 三 结果展示 本文由CSDN点云侠原创 原文链接 如果你不是在点云侠的博客中看到该文章 那么此处便是不要脸的爬虫 一 算法原理 杨氏双缝干涉实验是利用分波振面法获得相干光束的典型例子 如图1 所示 在普通单
  • 系列:7、 Kubernetes 安全性

    Kubernetes 安全性 我们将讨论 Kubernetes 安全性 当我们在使用 Kubernetes 时 出于安全原因 我们有时会希望限制网络的访问或限制某些用户查看或运行某些命令等 为此 我们必须使用不同的 Kubernetes 概
  • 探秘app.asar

    开发过Electron客户端的都知道 在package json的build节点下 如果设置 asar true 软件打包时会把程序文件合成为一个app asar文件 软件安装后 可以在安装目录的resources子目录下找到它 packa
  • GitBash:修改GitBash主题配色和字体

    打开GitBash 使用命令 cd 然后 vi minttyrc 使用下列内容替换已有内容 Font Consolas FontHeight 13 ForegroundColour 131 148 150 BackgroundColour
  • 送书【新书】

    文末查看送书规则 Apache ECharts incubating 下文简称ECharts 是由百度捐献给Apache开源软件基金会的一个开源可视化工具 目前广泛应用于PC端和移动端的大部分浏览器 截至本书完稿时 该项目正在Apache开
  • 在Visual Studio 2019中使用Qt5.14.2并配置相关路径(含opencv/halcon)联合编程配置

    1 Qt下载安装 参考链接 https blog csdn net weixin 41977337 article details 106859728 1 QT下载 推荐下载Qt5 12 3版本 5 12为LTS长期支持版本 官方下载链接
  • Shell在日常工作中的应用实践

    作者 京东物流 李光新 1 Shell可以帮我们做什么 作为一名测试开发工程师 在与linux服务器交互过程中 大都遇到过以下这些问题 一次申请多台服务器 多台服务器需要安装相同软件 配置相同的环境 同样的操作需要重复多次 工作中经常会使用
  • std::string___CH_22

    22 1 std string and std wstring The standard library contains many useful classes but perhaps the most useful is std str
  • java对比数据库_对比不同的数据库连接的异同

    博主在学习和使用数据库连接时 遇到的问题 这个几个数据库连接究竟有什么不同 到底什么时候该使用哪个会更好一点 带着这个问题我们先去了解常见的数据库连接 1 常见的数据库连接有哪些 在我们初期学习 使用数据库时 用的最多的莫过于MySQL 简
  • 09_Redux的应用

    目录 一 什么是redux 二 redux的应用 2 1 求和案例 2 1 1 纯react版本 2 1 2 redux版本 1 测试版本 2 正式版本 三 react redux 3 1 react redux的使用 1 UI组件 com
  • Windows安装Python(图解)亲测有效!!!

    目录 1 下载Python 2 安装 2 1 自定义安装 并添加 环境变量 2 2 中间多步 Next 3 测试是否安装成功 在 Windows 上安装 Python 和安装普通软件一样简单 下载安装包以后猛击 下一步 即可 如果安装多个版
  • Zabbix的聚合图形配置

    Zabbix的聚合图形配置 一 查看现有的聚合图形 二 编辑聚合图形 三 查看编辑好的聚合图形 一 查看现有的聚合图形 二 编辑聚合图形 三 查看编辑好的聚合图形
  • C程序设计(第四版)学习笔记

    1 for语句 for fahr 0 fahr lt 300 fahr fahr 20 第一部分是初始化部分 仅在进入循环前执行一次 第二部分是条件部分 如果结果值为真 则执行循环体 此后将执行第三部分 增加步长 2 我们通常把函数定义中圆
  • Tensorflow中with tf.Session as sess 与 sess = tf.Session 的区别(学习笔记一)

    第一部分 python中with as 的用法 本文转自https blog csdn net weixin 42118374 article details 80437050 纯属为了个人收藏查阅用 如侵权 请联系删除 谢谢 结论就是 w
  • jeesite上传文件

    RequestMapping value saveFile public String saveFile Document document Model model RedirectAttributes redirectAttributes
  • 报错Unmet dependencies. Try ‘apt --fix-broken install‘ with no packages (or specify a solution).解决方法

    在Ubuntu中用apt get安装软件 系统报出Unmet dependencies错误 Unmet dependencies Try apt fix broken install with no packages or specify
  • windows10下编译zlib库

    系列文章目录 文章目录 系列文章目录 前言 一 问题原因 二 准备 具体操作 编译zlib工程 前言 我使用CMake编译zlib源码 出现警告 CMake Deprecation Warning at CMakeLists txt 1 c
  • 0.0.0.0,localhost,127.0.0.0的区别

    一 0 0 0 0 不同场景不同意思 在服务器中 0 0 0 0表示本机上的任意ip地址 比如本机有内外网两个ip 那么当服务A开通0 0 0 0的访问后 通过两个ip都可以访问服务A 比如 3306端口监听在127 0 0 1 只有本机客
  • 【pytorch图像分类】AlexNet网络结构

    目录 1 前言 2 网络创新 过拟合 LRN Local Response Normalization 归一化 3 网络结构图 4 代码实现 5 总结 1 前言 AlexNet 是 2012 年 ISLVRC2012 Image Large