【DL小结2】CNN前向、反向传播及常用结构
CNN伟大之处在于通过感受野和权值共享减少了神经网络需要训练的参数的个数。
图像的空间联系是局部的,就像人是通过一个局部的感受野去感受外界图像一样,每一个神经元都不需要对全局图像做感受,每个神经元只感受局部的图像区域,然后在更高层,将这些感受不同局部的神经元综合起来就可以得到全局的信息了。这样,就可以减少连接的数目,也就是减少神经网络需要训练的权值参数的个数了。
feature map
特征映射,是输入图像和卷积核卷积后生成的图像特征。每个feature map通过1个卷积核提取输入的1个特征。我们需要多个卷积核来提取输入的多个特征。边长的计算公式是:
output_h =(originalSize_h+padding*2-kernelSize_h)/stride +1
CNN的核心思想:将局部感受野、权值共享以及下采样这3种结构思想结合起来获得了某种程度的位移、尺度、形变不变性。
1.结构
- 若干卷积层(+RELU激活函数)
- 若干池化层(无激活函数)
- 全连接层(+sigmoid/tanh激活函数,最后一层是softmax输出层)
2.前向传播算法
3.反向传播
4.常用CNN结构
4.1 CNN演化历史图
卷积层每层的通道数是人工设置,比如64,128,256等。
4.2 LeNet-5(1998)
最早的CNN,用于识别邮编,结构为:
CONV-POOL-CONV-POOL-CONV-FC
- 网络:3个卷积层,2个池化层,1个全连接层
- 卷积层5*5,步长1
- 池化层(MAX)2*2,步长1
4.3 AlexNet(2012)
突破点:
- 大数据:李飞飞团队ImageNet;
- GPU:高度并行
- 防止梯度消失:ReLU非线性激活函数
- 降低过拟合:数据增强、Dropout
- 网络加深:5个卷积层,3个全连接层
4.4 VGGNet(2014)
VGG一共有6种不同的网络结构,但是每种结构都有含有5组卷积,每组卷积都使用3x3的卷积核,每组卷积后进行一个2x2最大池化,最后是3个全连接层。主要参数来自全连接层。
VGG16包含了16个隐藏层(13个卷积层和3个全连接层),下图D列
VGG19包含了19个隐藏层(16个卷积层和3个全连接层),下图E列
VGG16/19相比AlexNet的一个改进是采用连续的几个3x3的卷积核代替AlexNet中的较大卷积核(11x11,7x7,5x5),在保证具有相同感知野的条件下,提升了网络的深度,且减少参数数量。
- 连续使用两个3x3的卷积核的感受野相当于5x5,
- 连续使用三个3x3的卷积核的感受野相当于7x7。
使用多个3x3的卷积核的作用:
- 使用了多次非线性函数而非1次,增加了函数的判别能力。
- 减少了参数的数量
使用1x1卷积核的作用:
引入了非线性激活函数,增加决策函数的非线性。
VGG优点
- 结构简洁,整个网络都使用了同样大小的卷积核尺寸(3x3)和最大池化尺寸(2x2)。
- 几个小滤波器(3x3)卷积层的组合比一个大滤波器(5x5或7x7)卷积层好:
- 验证了通过不断加深网络结构可以提升性能。
VGG缺点
耗费更多计算资源,并且使用了更多的参数(来自全连接层),导致更多的内存占用(140M)。
4.5 GoogleNet(2014)
- 用更多的卷积,更深的层次,得到更好的结构。
- 采用了模块化的结构,方便增添和修改。
- 网络最后采用了global average pooling(GAP)来代替全连接层
(1)全连接层使feature map的维度减少,进而输入到softmax,但是由于参数量大造成计算量大且容易过拟合。
(2)GAP的思路是将上述全连接层和sofrmax层两个过程合二为一,剔除了全连接层黑箱子操作的特征,直接赋予了每个channel实际的类别意义。
(3)GAP的意义是对整个网络从结构上做正则化防止过拟合。但是可能会造成收敛速度减慢。 - 核心结构: Inception
在 Inception 出现之前,大部分流行 CNN 仅仅是把卷积层堆叠得越来越多,使网络越来越深,以此希望能够得到更好的性能。而简单地堆叠较大的卷积层非常消耗计算资源。
Inception 模块的目的是设计一种具有优良局部拓扑结构的网络,即对输入图像并行地执行多个卷积运算或池化操作,并将所有输出结果拼接为一个非常深的特征图。从而,
(1)既达到稀疏的减少参数的效果(将自然全连接变成稀疏连接)
(2)又能利用硬件中密集矩阵优化的优势(将稀疏矩阵聚类为较为密集的子矩阵来提高计算性能)
4.6 ResNet(2015)
- 网络层数:50-200层
- 提出本质:解决层次比较深时无法训练的问题
- 特殊之处:设计了“bottleneck”,相当于在网络中增加了直连通道,使得输入可以直达输出,而优化的目标由原来的拟合输出H(x)变成输出和输入的差H(x)-x,其中H(X)是某一层原始的期望映射输出,x是输入。
- 残差模块:在ResNet网络结构中会用到两种残差模块,
(1)以两个3x3的卷积网络串接在一起作为一个残差模块
(2)以1x1、3x3、1x1的3个卷积网络串接在一起作为一个残差模块。
【DL小结2】CNN前向、反向传播及常用结构相关推荐
- LSTM模型与前向反向传播算法
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 前 言 在循环神经网络(RNN)模型与前向反向传播算法中,我们总 ...
- 循环神经网络(RNN)模型与前向反向传播算法
在前面我们讲到了DNN,以及DNN的特例CNN的模型和前向反向传播算法,这些算法都是前向反馈的,模型的输出和模型本身没有关联关系.今天我们就讨论另一类输出和模型间有反馈的神经网络:循环神经网络(Rec ...
- cnn卷积神经网络反向传播,cnn正向传播和反向传播
如何对CNN网络的卷积层进行反向传播 在多分类中,CNN的输出层一般都是Softmax.RBF在我的接触中如果没有特殊情况的话应该是"径向基函数"(RadialBasisFunct ...
- CNN反向传播源码实现——CNN数学推导及源码实现系列(4)
前言 本系列文章链接: CNN前置知识:模型的数学符号定义--卷积网络从零实现系列(1)_日拱一两卒的博客-CSDN博客https://blog.csdn.net/yangwohenmai1/arti ...
- 深度学习(四):卷积神经网络(CNN)模型结构,前向传播算法和反向传播算法介绍。
在前面我们讲述了DNN的模型与前向反向传播算法.而在DNN大类中,卷积神经网络(Convolutional Neural Networks,以下简称CNN)是最为成功的DNN特例之一.CNN广泛的应用 ...
- 前向传播、反向传播、更新梯度
1. 从误差传递的角度以动图演示前.反向传播 ①前向传播计算误差 ②反向传播传递误差 ③前向传播更新梯度 2.从梯度传递的角度以计算演示前.反向传播 使用的网络示例 ①前向传播计算误差 首先根据输入 ...
- 随时间的反向传播算法 BPTT
本文转自:https://www.cntofu.com/book/85/dl/rnn/bptt.md 随时间反向传播(BPTT)算法 先简单回顾一下RNN的基本公式: st=tanh(Uxt+Wst− ...
- 【深度学习理论】一文搞透pytorch中的tensor、autograd、反向传播和计算图
转载:https://zhuanlan.zhihu.com/p/145353262 前言 本文的主要目标: 一遍搞懂反向传播的底层原理,以及其在深度学习框架pytorch中的实现机制.当然一遍搞不定两 ...
- 反向传播不香了?解读 Hinton 大佬的 Forward-Forward 算法
今天解读一篇Hinton大佬最近分享的论文. 在最近的NeurIPS2022会议上,图灵奖得主Hinton作为演讲嘉宾,分享了一个题为<The Forward-Forward Algoritm: ...
- 使用torch.autograd.function解决dist.all_gather不能反向传播问题
1. 问题来源 最近在用mmcv复现Partial FC模型,看到源码中,有单独写的前向反向传播,甚是疑惑- 源码: # Features all-gather total_features = to ...
最新文章
- img summernote 加类_控制好情绪 的动态 - SegmentFault 思否
- Flutter开发之ListView使用第三方pull_to_refresh加载更多(36)
- Function in loop and closure
- linux apt-get 源,Ubuntu应用之——apt-get更改源地址
- 机器人局部避障的动态窗口法(dynamic window approach) (转)
- Java中常见数据结构:list与map
- ad 4层板设计实例文件_案例 | 美研【风险管理专业】1620Fall 310+申请实例
- 初识Mysql(part12)--我需要知道的3条Mysql语句之插入数据
- Good Bye 2017 G. New Year and Original Order 数位dp + 按数贡献
- $(window).load(function(){})跟$(document).ready(function(){})跟$(function(){})区别
- 3dmax材质通道插件_3dmax插件外挂神器【疯狂模渲大师蓝色经典版】第九章:渲染后期教程...
- 关于郑州大学校园网锐捷客户端禁止热点分享,禁止多网卡的解决办法
- 二次规划——学习笔记
- spyder替换_Spyder简单使用
- 盗版始祖——海盗湾(The Pirate Bay)
- 决胜最后一公里 外卖O2O须达信息化标准
- 微信小程序流量主怎么开通,小程序流量主开通步骤
- Google Earth Engine(GEE)——影像导出谷歌硬盘发生错误Error: Exported bands must have compatible data types
- Response的Header属性详解
- sherlock常用算法指令总结
热门文章
- chrome失去响应问题
- 9月6日 星期二 晴(晚上有雨)
- Jsp链接传值中文乱码问题解决
- Linux报文硬件时间戳,linux 时间戳,打戳代码分析,用于PTP报文协议(示例代码)...
- 递增的整数序列链表的插入_leetcode673_go_最长递增子序列的个数
- python脚本画pie饼图_小白学Python(11)——pyecharts,绘制饼图 Pie
- 省赛第七场(fzu1881 ~fzu1889)
- linux 进程 cpu 100,清理linux中占用CPU 100%的病毒
- 获取天气预报API_统计最容易生病时间段
- 金融现金贷用户数据分析和用户画像