AlexNet模型详细分析
Alex在2012年提出的alexnet网络结构模型引爆了神经网络的应用热潮,并赢得了2012届图像识别大赛的冠军,使得CNN成为在图像分类上的核心算法模型。
上面这种图就是AlexNet的网络结构
改网络的亮点在于:
(1)首次使用了GPU进行网络加速训练。
(2)使用了ReLU激活函数,而不是传统的Sigmoid激活函数以及Tanh激活函数。
(3)使用了LRN局部响应归一化。
(4)在全连接层的前两层中使用了Droupout随机失活神经元操作,以减少过拟合。
对于AlexNet有5层卷积层,三个全连接层。
卷积层C1
该层的处理流程是: 卷积–>ReLU–>池化–>归一化。
卷积,输入是227×227,使用96个11×11×3的卷积核,得到的FeatureMap为55×55×96。
ReLU,将卷积层输出的FeatureMap输入到ReLU函数中。
池化,使用3×3步长为2的池化单元(重叠池化,步长小于池化单元的宽度),输出为27×27×96((55−3)/2+1=27)
局部响应归一化,使用k=2,n=5,α=10−4,β=0.75进行局部归一化,输出的仍然为27×27×96,输出分为两组,每组的大小为27×27×48
卷积层C2
该层的处理流程是:卷积–>ReLU–>池化–>归一化
卷积,输入是2组27×27×48。使用2组,每组128个尺寸为5×5×48的卷积核,并作了边缘填充padding=2,卷积的步长为1. 则输出的FeatureMap为2组,每组的大小为27×27 times128. ((27+2∗2−5)/1+1=27)
ReLU,将卷积层输出的FeatureMap输入到ReLU函数中
池化运算的尺寸为3×3,步长为2,池化后图像的尺寸为(27−3)/2+1=13,输出为13×13×256
局部响应归一化,使用k=2,n=5,α=10−4,β=0.75进行局部归一化,输出的仍然为13×13×256,输出分为2组,每组的大小为13×13×128
卷积层C3
该层的处理流程是: 卷积–>ReLU
卷积,输入是13×13×256,使用2组共384尺寸为3×3×256的卷积核,做了边缘填充padding=1,卷积的步长为1.则输出的FeatureMap为13×13 times384
ReLU,将卷积层输出的FeatureMap输入到ReLU函数中
卷积层C4
该层的处理流程是: 卷积–>ReLU
该层和C3类似。
卷积,输入是13×13×384,分为两组,每组为13×13×192.使用2组,每组192个尺寸为3×3×192的卷积核,做了边缘填充padding=1,卷积的步长为1.则输出的FeatureMap为13×13 times384,分为两组,每组为13×13×192
ReLU,将卷积层输出的FeatureMap输入到ReLU函数中
卷积层C5
该层处理流程为:卷积–>ReLU–>池化
卷积,输入为13×13×384,分为两组,每组为13×13×192。使用2组,每组为128尺寸为3×3×192的卷积核,做了边缘填充padding=1,卷积的步长为1.则输出的FeatureMap为13×13×256
ReLU,将卷积层输出的FeatureMap输入到ReLU函数中
池化,池化运算的尺寸为3×3,步长为2,池化后图像的尺寸为 (13−3)/2+1=6,即池化后的输出为6×6×256
全连接层FC6
该层的流程为:(卷积)全连接 -->ReLU -->Dropout
卷积->全连接: 输入为6×6×256,该层有4096个卷积核,每个卷积核的大小为6×6×256。由于卷积核的尺寸刚好与待处理特征图(输入)的尺寸相同,即卷积核中的每个系数只与特征图(输入)尺寸的一个像素值相乘,一一对应,因此,该层被称为全连接层。由于卷积核与特征图的尺寸相同,卷积运算后只有一个值,因此,卷积后的像素层尺寸为4096×1×1,即有4096个神经元。
ReLU,这4096个运算结果通过ReLU激活函数生成4096个值
Dropout,抑制过拟合,随机的断开某些神经元的连接或者是不激活某些神经元
全连接层FC7
流程为:全连接–>ReLU–>Dropout
全连接,输入为4096的向量
ReLU,这4096个运算结果通过ReLU激活函数生成4096个值
Dropout,抑制过拟合,随机的断开某些神经元的连接或者是不激活某些神经元
输出层
第七层输出的4096个数据与第八层的1000个神经元进行全连接,经过训练后输出1000个float型的值,这就是预测结果。
from tensorflow.keras import layers, models, Model, Sequentialdef AlexNet_v1(im_height=224, im_width=224, class_num=1000):#num 是分类的类别# tensorflow中的tensor通道排序是NHWCinput_image = layers.Input(shape=(im_height, im_width, 3), dtype="float32") # output(None, 224, 224, 3)x = layers.ZeroPadding2D(((1, 2), (1, 2)))(input_image) # output(None, 227, 227, 3)x = layers.Conv2D(48, kernel_size=11, strides=4, activation="relu")(x) # output(None, 55, 55, 48)x = layers.MaxPool2D(pool_size=3, strides=2)(x) # output(None, 27, 27, 48)x = layers.Conv2D(128, kernel_size=5, padding="same", activation="relu")(x) # output(None, 27, 27, 128)x = layers.MaxPool2D(pool_size=3, strides=2)(x) # output(None, 13, 13, 128)x = layers.Conv2D(192, kernel_size=3, padding="same", activation="relu")(x) # output(None, 13, 13, 192)x = layers.Conv2D(192, kernel_size=3, padding="same", activation="relu")(x) # output(None, 13, 13, 192)x = layers.Conv2D(128, kernel_size=3, padding="same", activation="relu")(x) # output(None, 13, 13, 128)x = layers.MaxPool2D(pool_size=3, strides=2)(x) # output(None, 6, 6, 128)x = layers.Flatten()(x) # output(None, 6*6*128)x = layers.Dropout(0.2)(x)x = layers.Dense(2048, activation="relu")(x) # output(None, 2048)x = layers.Dropout(0.2)(x)x = layers.Dense(2048, activation="relu")(x) # output(None, 2048)x = layers.Dense(class_num)(x) # output(None, 5)predict = layers.Softmax()(x)model = models.Model(inputs=input_image, outputs=predict)return model
AlexNet模型详细分析相关推荐
- OSI七层模型及TCP/IP四层模型详细分析
在计算机网络中有OSI七层模型及TCP/IP四层模型的说法,而且也是计算机很重要的知识.下面我们就来分析一下它们: OSI七层模型及TCP/IP四层模型的对比: 从上面两张图我们知道,每层之间是相互独 ...
- linux i2c模型 rtc模型 详细分析,Linux RTC驱动分析(一)----pcf8563驱动和class.c
来逐一分析. 看一个设备驱动,一般都从模块初始化和退出函数开始,pcf8563.c的为: static int __init pcf8563_init(void) { return i2c_add_d ...
- 时间序列分析教程(四):AR与MA模型详细分析(公式推导,慎入)
之前从比较浅的角度介绍了AR.MA.ARMA等模型,最近在课堂上发现其实还有很多细节可以深究.如果只是想要简单了解这些模型然后应用,我个人觉得之前的文章已经足够了,而如果有兴趣更深入地了解AR和MA模 ...
- 网络IO模型详细分析
截取自[原文链接] 常见的IO模型有阻塞.非阻塞.IO多路复用,异步.以一个生动形象的例子来说明这四个概念.周末我和女友去逛街,中午饿了,我们准备去吃饭.周末人多,吃饭需要排队,我和女友有以下几种方案 ...
- kaggle猫狗分类的总结(AlexNet模型, keras框架),完整实验流程,源代码和详细解析
现在将已掌握的知识进行总结,方便以后自己写网络增加思路. 首先数据集下载:链接:https://pan.baidu.com/s/1U4N0PCNfyIP9iHLidVb9xA 提取码:vcvl ker ...
- Yolov1目标检测算法详细分析
Yolov1目标检测算法详细分析 Yolov1介绍 这是继RCNN,fast-RCNN 和 faster-RCNN之后,rbg(Ross Girshick)大神挂名的又一大作,起了一个很娱乐化的名字: ...
- android 串口开发_详细分析Esp8266上电信息打印的数据,如何做到串口通讯上电不乱码打印...
01 写在前面: 上篇关于如何在内置仅1M的Esp8285做到 OTA 升级的同步到微信公众号,竟然被安信可的某些运维人员看到了,想要转载,我很欣慰,竟然自己的笔记可以被这么大型的公司员工认可! 我是 ...
- 新手向:从不同的角度来详细分析Redis
最近对华为云分布式缓存产品Redis做了一些研究,于是整理了一些基本的知识拿出来与大家分享,首先跟大家分享的是,如何从不同的角度来详细使用Redis. 小编将从以下9个角度来进行详细分析,希望可以帮到 ...
- linux注册函数机制,Linux可信计算机制模块详细分析之函数实现机制(1)字符设备驱动...
原标题:Linux可信计算机制模块详细分析之函数实现机制(1)字符设备驱动 2.3 函数实现机制 2.3.1 Linux 字符设备驱动 在linux 3.5.4中,用结构体cdev描述字符设备,cde ...
最新文章
- Tomcat 7.0~10.0zip版,安装版,其他一键式全部下载
- IOS设备唯一标示符的方案比较
- activemq和jms_保证主题,JMS规范和ActiveMQ的消息传递
- 狗狗手机壁纸|爱宠必备
- 微信有电脑客户端吗_一台电脑如何开多个微信?你学会了吗?
- Docker Kubernetes k8s 从入门到精通 阿里云实战命令
- LPDIRECTDRAW7编译错误的解决方法
- lr背景虚化_【教程】人像后期LR+PS超详细流程+思路分析
- Latex系列2---段落编写+标题编写+目录生成
- uniapp实现吸顶效果、滚动吸顶(分类、筛选、排序、搜索等滚动到顶部自动固定、吸顶)
- 《三国群英传2网络版》英勇兵资料大汇总,看这一篇就够了
- sql三表查子项目和
- 中学教学01教学概述02教学过程03教学原则与方法
- 计算机读书笔记10000,读书笔记:抓住1/10000的机会
- 基于STC89C52单片机的计数器
- [引用]薛毅: 制造“冷漠”的大学
- ubuntu安装eclipse报错问题集
- 流氓软件终结者:Windows Defender
- Linux环境进程间通信系列(五):共享内存
- 扭矩大好还是马力大好_扭矩和马力的区别是什么
热门文章
- python xlwings库对于excel单元格的操作
- package.json 中的波浪号(~)和插入符号(^)有什么区别?
- DROID-SLAM: Deep Visual SLAM for Monocular, Stereo, and RGB-D Cameras论文阅读笔记
- html文本框如何固定不动,css如何让div固定不动?
- ThinkPad开机停留在boot menu界面、进不了系统的解决方法
- 高晓松《晓说》为何这么红?
- matlab n维插值,简单调研多维插值方法
- python @ 用法
- Java学习----多态性
- python爬取歌曲的全部评论