当前位置: 首页 > news >正文

深度卷积神经网络AlexNet

在提出LeNet后卷积神经网络在计算机视觉和机器学习领域中报有名气,但是卷积神经网络并没有主导这些领域,因为LeNet在小数据集上取得了很好的效果,在更大,更真实的数据集上训练卷积神经网络的性能 和可行性有待研究,20世纪90年代初到2012年间的大部分时间里,神经网络往往被其他机器学习方法超越,支持向量机。

在计算机视觉中,直接将神经网络与其他机器学习方法进行表也不公平,卷积神经网络的输入事原始像素值经过简单预处理的像素值组成,但是在使用传统机器学习方法时,在传统机器学习方法中,计算机视觉流水线时经过手工精心设计的特征流水线组成的,这些传统方法,大部分的进展都来自对特征有了更聪明的想法,并且学习到的算法往往归于事后的解释。

因此,与训练端到端系统不同,经典机器学习的流水线看起来更像下面这样。

(1)获取一个有趣的数据集,收集这些数据集需要传感器,

(2)根据光学,几何学,其他知识以及偶然的发现,手动对待特征数据集进行预处理。

(3) 通过标准的特征提取算法,如SIFT或者其他手动调整的流水线来输入数据。

(4)将提取的特征送入最喜欢的分类器中,以训练分类器。

当人们和机器学习研究人员交谈时,会发现机器学习研究人员相信机器学习即重要又美丽:

7.1.1 学习表征

一种预测这个领域发展的方法时观察图像特征的提取方法,图像特征都是机械的计算出来的,设计一套新的特征函数。改进结果并撰写论文。SIFT,SURF,HOG 定向梯度直方图,都占据了主导地位。

在合理的复杂性前提下,特征应该由多个共同学习的神经网络层组成,每个层都有课学习的参数,机器视觉中,底层可能检查边缘,颜色和纹理,实际上,

7.1.2 AlexNet

2012年AlexNet横空出世,证明了学习到的特征可以超越手动设计的特征,AlexNet使用8层卷积神经网络,以很大的优势赢得了2012年ImageNet图像识别挑战赛。

AlexNet和LeNet非常类似。

LeNet

全连接层 10 ->全连接层 84 ->全连接层 120->

2x2欧拿冠军汇聚层

5x5卷积层 16

2x2 平均汇聚层

5x5卷积层

图片28x28

AlexNet

全连接 1000

全连接层 4096

全连接层 4096

3x3最大汇聚层

3x3卷积层

3x3卷积层

3x3最大汇聚层

5x5卷积层

3x3最大汇聚层

11x11 卷积层

图片 3x244x244

AlexNet LeNet5深得多AlexNet8组成5卷积2全选隐藏1全连接输出

2 AlexNet使用ReLU而不是sigmoid 作为激活函数

1 模型设计

AlexNet第一层卷积窗口形状11x11由于imageNet中大多数图像高和MNIST图像10因此需要一个更大卷积窗口捕获目标第二层卷积窗口形状缩减5x5然后3x3此外第一层第二层第五层卷积层之后加入窗口形状3x3步骤2最大汇聚层而且AlexNet卷积通道LeNet10

在最后一个卷积层两个全连接分别有4096输出这两个巨大全连接层1GB模型参数早期GPU显存有限原始AlexNet才用了数据流设计使得每个GPU负责存储计算模型一半参数幸运现在GPU现存相对充裕所以很少需要GPU分解模型

2 激活函数

AlexNetsigmoid激活函数改为简单ReLU激活函数一方面ReLU激活函数的计算更简单不需要sigmoig激活函数复杂求幂运算另一方面使用补参数初始化方法ReLU激活函数使训练模型更加容易sigmoid激活函数输出非常接近于0或者1这些区域梯度几乎0因此反向传播无法继续更新一些模型参数ReLU激活函数区间梯度1因此如果模型参数没有正确初始化sigmoid函数可以能区间得到几乎0梯度从而使模型无法得到有效训练

3 容量控制预处理

AlexNet通过暂退 控制全连接模型复杂度LeNet使用了权重衰减为了进一步扩增数据AlexNet在训练时增加了大量图像增强数据翻转载切变色这使得模型健壮更大样本量有效减少过拟合

import torch

from torch import nn

from d2l import torch as d2l

net = nn.Sequential (

#这里使用一个11x11更大窗口来捕获对象

#同时步幅4减少输出高度宽度

#另外输出通道远大于LeNet

nn.Conv2d(1, 96, kernel_size=11, stride=4, padding=1), nn.ReLU(),

nn.MaxPool2d(kernel_size=3, stride=2)

#减小卷积窗口使用填充2来使得输入与输出宽一致并且增大输出通道数

nn.Conv2d(96, 256, kernel_size=5,padding=2), nn.ReLU(),

nn.MaxPool2d(kernel_szie=3, stride=2)

#使用3链接卷积层较小卷积窗口

#除了最后卷积层输出通道数进一步增加

#在前两个卷积层之后汇聚层不用于减少输入高度宽度

nn.Conv2d(256, 384, kernel_size=3, padding=1), nn.ReLU(),

nn.Conv2d(384, 384, kernel_size=3, padding=1), nn.ReLU(),

nn.Conv2d(384, 384, kernel_size=3, padding=1), nn.ReLU(),

nn.MaxPool2d(kernel_szie=3, stride=2),

nn.Flatten(),

#这里全连接层输出数量LeNet好几倍使用退缓解过拟合

nn.Linear(6400, 4096), nn.ReLU(),

nn.Dropout(p=0.5),

nn.Linear(4096, 4096), nn.ReLU(),

nn.Dropout(p=0.5),

#最后是输出层因为这里使用Fashion - MNIST所以类别10

nn.Linear(4096, 10)

我们构造高度宽度都为224单通道数据来观察每一层输出形状7-2AlexNet架构相匹配

x = torch.randn(1,1,,224,224)

for layer in net:

x=layer(x)

)

http://www.dtcms.com/a/342584.html

相关文章:

  • 【NVIDIA-B200】生产报错 Test CUDA failure common.cu:1035 ‘system not yet initialized‘
  • Docker 搭建 Gitlab 实现自动部署Vue项目
  • NW755NW776美光固态闪存NW863NX595
  • 【永洪BI】报告脚本-JavaScript使用【完整版】
  • Vue 项目中父子传值使用Vuex异步数据不更新问题
  • Postman来做API安全测试:身份验证缺陷漏洞测试
  • 药品追溯码(溯源码)采集系统(二):门诊发药后端
  • 【Linux系统】进程信号:信号的产生和保存
  • 使用EasyExcel 导出复杂的合并单元格
  • 第四届中国高校机器人实验教学创新大赛团队参赛总结
  • selenium一些进阶方法如何使用
  • 大模型0基础开发入门与实践:第11章 进阶:LangChain与外部工具调用
  • 打破传统课程模式,IP变现的创新玩法 | 创客匠人
  • 从零开始学 Selenium:浏览器驱动、元素定位与实战技巧
  • 微服务:现代软件架构的主流范式
  • Linux mmap内存映射
  • 集中式负载均衡 vs. 分布式负载均衡
  • 【赵渝强老师】Redis Cluster分布式集群
  • #千问海报大赛
  • 订单簿动力学与深度学习模型的融合大单识别与短期市场价格波动预测
  • Java多线程编程基础篇
  • 多级缓存一致性矩阵:ABP vNext 下的旁路 / 写穿 / 写回组合实战
  • Qt的moveToThread使用
  • SQL-leetcode—3451. 查找无效的 IP 地址
  • centos常用命令
  • Visual Studio Code (VS Code) 工作区配置文件的作用
  • CentOS7安装部署NexusRepository
  • 【Spring Cloud 微服务】2.守护神网关Gateway
  • 告别人工建模:AI 自动化 ETL 工具对比,数据 pipeline 搭建时间缩短 60% 的实践
  • 洛谷 P2656 采蘑菇-普及+/提高