深度学习(04)-- 典型CNN结构(LeNet5 ,AlexNet)
LeNet5
LeNet5可以说是最早的卷积神经网络了,它发表于1998年,论文原文Gradient-Based Learning Applied to Doucment Recognition作者是Yann Le Cun等。下面对LeNet5网络架构进行简单的说明,有兴趣的同学可以去参考原文,论文原文地址 http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf。
Conv1: f=[5,5], s=[1,1], padding=’valid’
Pool1: f=[2,2], s=[2,2]
Conv2: f=[5,5], s=[1,1], padding=’valid’
Pool2: f=[2,2], s=[1,1]
fc1: 1024 relu
fc2: 200 relu
fc3: 6 softMax
(m,64,64,3)-(m,60,60,8)-(m,30,30,8)-(m,26,26,16)-(m,13,13,16)
(m,1024)-(m,200)-(m,6)
def LeNet5(input_shape=(64,64,3), classes=6):X_input = Input(input_shape)X = Conv2D(filters=8, kernel_size=(5,5), strides=(1,1), padding='valid',name='conv1')(X_input)X = MaxPooling2D((2,2), strides=(2,2), name='maxpool1')(X)X = Conv2D(filters=16, kernel_size=(5,5), strides=(1,1), padding='valid',name='conv2')(X)X = MaxPooling2D((2,2), strides=(2,2), name='maxpool2')(X)X = Flatten()(X)X = Dense(1024, activation='relu', name='fc1')(X)X = Dense(200, activation='relu', name='fc2')(X)X = Dense(classes, activation='softmax', name='fc3')(X)model = Model(inputs=X_input, outputs=X, name='LeNet5')return model
卷积神经网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入与输出之间的精确的数学表达式,只要用已知的模式对卷积神经网络加以训练,网络就具有输入与输出之间的映射能力。卷积网络是有监督学习,所以它的样本集都形如:(输入向量,理想输出向量)之类的向量对构成。
在训练之前,所有权值都用一些不同的小随机数进行初始化,小的随机数可以保证网络不会因权值太大而进入饱和状态,从而导致训练失败。不同则保证网络可以正常学习。
如果要是用相同的数去初始化矩阵,网络会没有学习的能力。
网络的训练过程为:
分为四步:
(1) 在一批数据中取样(Sample a batch of data)
(2)前向过程计算得到损失(Forward prop it through the graph, get loss)
(3)反向传播计算梯度(Backprop to calculate the gradient)
(4)利用梯度进行梯度的更新(Updata the parameters using the gradient)
这里,网络的训练主要分为2个大的阶段:
第一阶段,向前传播阶段:
1)从样本集中取一个样本(X,Yp),将X输入网络;
2)计算相应的实际输出Op。
在此阶段,信息从输入层经过逐级的变换,传送到输出层。这个过程也是网络在完成训练后正常运行时执行的过程。在此过程中,网络执行的是计算(实际上就是输入与每层的权值矩阵相点乘,得到最后的输出结果):
Op=Fn(…(F2(F1(XpW(1))W(2))…)W(n))
第二阶段,向后传播阶段
1)算实际输出Op与相应的理想输出Yp的差;
2)按极小化误差的方法反向传播调整权矩阵。
AlexNet
1、AlexNet网络结构
2、AlexNet应用在手势RGB图片
网络结构
Input (64,64,3)Conv1 f=[5,5], s=[1,1], (60,60,8) Relu1
Maxpool1 f=[2,2], s=[2,2], (30,30,8) LRN1Conv2 f=[5,5] , s=[1,1] , (26,26,16) Relu2
Maxpool2 f=[2,2], s=[2,2], (13,13,16) LRN2Conv3 f=[3,3], s=[1,1], padding=’same’, (13,13,32) Relu3Conv4 f=[3,3], s=[1,1], padding=’same’, (13,13,32) Relu4Conv5 f=[3,3], s=[1,1], padding=’same’, (13,13,16) Relu5
Avepool1 f=[3,3], s=[2,2], (6,6,16)Flatten 6*6*16Fc1 1024 Relu6 Dropout1Fc2 1024 Relu7 Dropout2Fc3 6 Softmax
代码实现
def AlexNet(input_shape=(64,64,3), classes=6):X_input = Input(input_shape)"conv layer 1"X = Conv2D(filters=8, kernel_size=(5,5), strides=(1,1), padding='valid',name='conv1')(X_input)X = Activation('relu')(X)X = MaxPooling2D((2,2), strides=(2,2), name='maxpool1')(X)# X = LRN2D(alpha=0.0001, beta=0.75)(X)"conv layer 2"X = Conv2D(filters=16, kernel_size=(5,5), strides=(1,1), padding='valid',name='conv2')(X)X = Activation('relu')(X)X = MaxPooling2D((2,2), strides=(2,2), name='maxpool2')(X)# X = LRN2D(alpha=0.0001, beta=0.75)(X)"conv layer 3"X = Conv2D(filters=32, kernel_size=(3,3), strides=(1,1), padding='same',name='conv3')(X)X = Activation('relu')(X)"conv layer 4"X = Conv2D(filters=32, kernel_size=(3,3), strides=(1,1), padding='same',name='conv4')(X)X = Activation('relu')(X)"conv layer 5"X = Conv2D(filters=16, kernel_size=(3,3), strides=(1,1), padding='same',name='conv5')(X)X = Activation('relu')(X)X = AveragePooling2D((3,3), strides=(2,2), name='maxpool3')(X)"flatten, fc1, fc2, fc3"X = Flatten()(X)X = Dense(1024, activation='relu', name='fc1')(X)X = Dense(1024, activation='relu', name='fc2')(X)X = Dense(classes, activation='softmax', name='fc3')(X)model = Model(inputs=X_input, outputs=X, name='AlexNet')return model
深度学习(04)-- 典型CNN结构(LeNet5 ,AlexNet)相关推荐
- 深度学习 --- 卷积神经网络CNN(LeNet-5网络详解)
卷积神经网络(Convolutional Neural Network,CNN)是一种前馈型的神经网络,其在大型图像处理方面有出色的表现,目前已经被大范围使用到图像分类.定位等领域中.相比于其他神经网 ...
- 深度学习 --- 卷积神经网络CNN(LeNet-5网络学习算法详解)
上一节我们详细探讨了LeNet-5网络的架构,但是还没有解释该网络是如何进行学习的,如何更新权值的,本节将接着上一节进一步CNN的学习机制和权值更新过程,这里请大家一定要对CNN网络有一个清晰的认识, ...
- 【深度学习】Swin Transformer结构和应用分析
[深度学习]Swin Transformer结构和应用分析 文章目录 1 引言 2 Swin Transformer结构 3 分析3.1 Hierarchical Feature Representa ...
- 【深度学习】如何从结构出发更好的改进一个神经网络(二)
[深度学习]如何从结构出发更好的改进一个神经网络(二) 文章目录 1 空洞卷积(dilated convolution) 2 PReLU 3 LeakyReLU可以解决神经元"死亡" ...
- 【深度学习】如何从结构出发更好的改进一个神经网络
[深度学习]如何从结构出发更好的改进一个神经网络 文章目录 1 降采样和升采样 2 UNet++模型诞生 3 参数多了是导致UNet++比UNet好吗 4 一些思路 5 改进卷积结构5.1 转置卷积5 ...
- 花书+吴恩达深度学习(二三)结构化概率模型(贝叶斯网络、马尔可夫随机场)
文章目录 0. 前言 1. 有向模型 2. 无向模型 3. 因子图 4. 分离和d-分离 5. 从图模型中采样 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 花书+吴恩达深 ...
- 深度学习 | MATLAB实现CNN卷积神经网络结构及参数概述
深度学习 | MATLAB实现CNN卷积神经网络结构及参数概述 目录 深度学习 | MATLAB实现CNN卷积神经网络结构及参数概述 基本介绍 模型描述 训练过程 计算函数 参考资料 基本介绍 卷积神 ...
- 大数据深度学习下的车辆结构化——明景车辆结构化分析
大数据深度学习下的车辆结构化--明景车辆结构化分析 车辆全特征结构化识别技术是计算机人工智能.图像处理.计算机视觉.模式识别等相关技术的综合应用.目前涉车涉驾案件的快速增长,以及车辆结构化.智慧城市应 ...
- 深度学习(05)--典型CNN结构(VGG13,16,19)
文章目录 目录 1.VGG结构 2.VGG结构解释 3.3*3卷积核的优点 4.VGG的muti-scale方法 5.VGG的应用 目录 1.VGG结构 LeNet5用大的卷积核来获取图像的相似特 ...
- 深度学习--卷积神经网络CNN
主要内容 1. 神经网络 1.1 感知器 1.2 Sigmoid神经元 1.3 神经网络 2. 卷积神经网络CNN 2.1 卷积神经网络结构 2.2 数据输入层 2.3 卷积层 2.3.1 局部感知( ...
最新文章
- HBase总结(十三)HBase Shell 常用命令及例子
- ES6转ES5:Gulp+Babel
- 计算机乘除法运算中部分积和余数的符号位选择与位移的关系
- Jdk1.8新特性(三)——方法引用::
- java Socket通信(一)
- P6847-[CEOI2019]Magic Tree【dp,线段树合并】
- Linux: shell命令 eval (有图有代码有真相!!!)
- java 操作redis
- [新功能]查看好友最新随笔
- 为提升效率,阿里取消周报制度?醒醒吧,自动化报表才是出路
- python tkinter treeview 高亮_满满的成就感~如何用python让你的想法拥有可操作性?(一)...
- java 叉号关闭_求助 java 如何编写JFrame窗体右上角红色打叉关闭按钮的事件?
- 凭据分配没有加密oracle_远程连接身份验证错误,又找不到加密Oracle修正
- Oracle网格控制器OMA端安装Yast
- numpy tricks(一)—— 多维数组的阈值化处理
- ios实例开发精品文章推荐(8.13)
- java 重复流_Java Logger控制台流重复输出 - java
- Linux 操作系统原理 — 内存 — 大页内存
- 2021PMP最全大纲内容整理
- 视频教程-思科CCNP专题系列②:EIGRP路由协议-思科认证
热门文章
- 将Linux下编译的warning警告信息输出到文件中
- Wince6 Eboot中加入开机画面
- 培智学校计算机课教案,培智数学教案
- LSGO软件技术团队2015~2016学年第十周(1102~1108)总结
- 【转】.net框架读书笔记---CLR内存管理\垃圾收集(一)
- 【转】Microsoft Teams快速上手系列-02Teams组成概述及使用分享
- 集卡php源码,独角数卡自动发卡网PHP源码+教程:虚拟产品自助售卖
- vb checkbox选中和不选中_UE4 4.23 RetainerBox 选中框位置不正确
- 一篇关于Qt开发技巧的文章收藏
- 【JS 逆向百例】网洛者反爬练习平台第四题:JSFuck 加密