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模型详细分析相关推荐

  1. OSI七层模型及TCP/IP四层模型详细分析

    在计算机网络中有OSI七层模型及TCP/IP四层模型的说法,而且也是计算机很重要的知识.下面我们就来分析一下它们: OSI七层模型及TCP/IP四层模型的对比: 从上面两张图我们知道,每层之间是相互独 ...

  2. linux i2c模型 rtc模型 详细分析,Linux RTC驱动分析(一)----pcf8563驱动和class.c

    来逐一分析. 看一个设备驱动,一般都从模块初始化和退出函数开始,pcf8563.c的为: static int __init pcf8563_init(void) { return i2c_add_d ...

  3. 时间序列分析教程(四):AR与MA模型详细分析(公式推导,慎入)

    之前从比较浅的角度介绍了AR.MA.ARMA等模型,最近在课堂上发现其实还有很多细节可以深究.如果只是想要简单了解这些模型然后应用,我个人觉得之前的文章已经足够了,而如果有兴趣更深入地了解AR和MA模 ...

  4. 网络IO模型详细分析

    截取自[原文链接] 常见的IO模型有阻塞.非阻塞.IO多路复用,异步.以一个生动形象的例子来说明这四个概念.周末我和女友去逛街,中午饿了,我们准备去吃饭.周末人多,吃饭需要排队,我和女友有以下几种方案 ...

  5. kaggle猫狗分类的总结(AlexNet模型, keras框架),完整实验流程,源代码和详细解析

    现在将已掌握的知识进行总结,方便以后自己写网络增加思路. 首先数据集下载:链接:https://pan.baidu.com/s/1U4N0PCNfyIP9iHLidVb9xA 提取码:vcvl ker ...

  6. Yolov1目标检测算法详细分析

    Yolov1目标检测算法详细分析 Yolov1介绍 这是继RCNN,fast-RCNN 和 faster-RCNN之后,rbg(Ross Girshick)大神挂名的又一大作,起了一个很娱乐化的名字: ...

  7. android 串口开发_详细分析Esp8266上电信息打印的数据,如何做到串口通讯上电不乱码打印...

    01 写在前面: 上篇关于如何在内置仅1M的Esp8285做到 OTA 升级的同步到微信公众号,竟然被安信可的某些运维人员看到了,想要转载,我很欣慰,竟然自己的笔记可以被这么大型的公司员工认可! 我是 ...

  8. 新手向:从不同的角度来详细分析Redis

    最近对华为云分布式缓存产品Redis做了一些研究,于是整理了一些基本的知识拿出来与大家分享,首先跟大家分享的是,如何从不同的角度来详细使用Redis. 小编将从以下9个角度来进行详细分析,希望可以帮到 ...

  9. linux注册函数机制,Linux可信计算机制模块详细分析之函数实现机制(1)字符设备驱动...

    原标题:Linux可信计算机制模块详细分析之函数实现机制(1)字符设备驱动 2.3 函数实现机制 2.3.1 Linux 字符设备驱动 在linux 3.5.4中,用结构体cdev描述字符设备,cde ...

最新文章

  1. Tomcat 7.0~10.0zip版,安装版,其他一键式全部下载
  2. IOS设备唯一标示符的方案比较
  3. activemq和jms_保证主题,JMS规范和ActiveMQ的消息传递
  4. 狗狗手机壁纸|爱宠必备
  5. 微信有电脑客户端吗_一台电脑如何开多个微信?你学会了吗?
  6. Docker Kubernetes k8s 从入门到精通 阿里云实战命令
  7. LPDIRECTDRAW7编译错误的解决方法
  8. lr背景虚化_【教程】人像后期LR+PS超详细流程+思路分析
  9. Latex系列2---段落编写+标题编写+目录生成
  10. uniapp实现吸顶效果、滚动吸顶(分类、筛选、排序、搜索等滚动到顶部自动固定、吸顶)
  11. 《三国群英传2网络版》英勇兵资料大汇总,看这一篇就够了
  12. sql三表查子项目和
  13. 中学教学01教学概述02教学过程03教学原则与方法
  14. 计算机读书笔记10000,读书笔记:抓住1/10000的机会
  15. 基于STC89C52单片机的计数器
  16. [引用]薛毅: 制造“冷漠”的大学
  17. ubuntu安装eclipse报错问题集
  18. 流氓软件终结者:Windows Defender
  19. Linux环境进程间通信系列(五):共享内存
  20. 扭矩大好还是马力大好_扭矩和马力的区别是什么

热门文章

  1. python xlwings库对于excel单元格的操作
  2. package.json 中的波浪号(~)和插入符号(^)有什么区别?
  3. DROID-SLAM: Deep Visual SLAM for Monocular, Stereo, and RGB-D Cameras论文阅读笔记
  4. html文本框如何固定不动,css如何让div固定不动?
  5. ThinkPad开机停留在boot menu界面、进不了系统的解决方法
  6. 高晓松《晓说》为何这么红?
  7. matlab n维插值,简单调研多维插值方法
  8. python @ 用法
  9. Java学习----多态性
  10. python爬取歌曲的全部评论