前言

对于卷积神经网络(cnn)这一章不打算做数学方面深入了解,所以只是大致熟悉了一下原理和流程,了解了一些基本概念,所以只是做出了一些总结性的笔记。

感谢B站的视频 https://www.bilibili.com/video/BV1j7411f7Ru?spm_id_from=333.337.search-card.all.click

很不错的讲解

全连接神经网络的缺点

两个神经元,为了求出隐藏层和输出层最佳的(w,b),我们就要求四个偏导,期间还得为链式求导付出3次连乘的代价。倘若我们的网络层次越深,偏导连乘也就越多,付出的计算代价也就越大。紧接着,一个网络层不单止一个神经元,它可能会有多个神经元,那么多个神经元的输出作为下一级神经元的输入时,就会形成多个复杂的嵌套关系

卷积层

如果信息过于冗余,那么我们能否去除冗余取出精华部分呢?卷积层就是干这个的,通俗易懂来说就是压缩提纯。

卷积核是怎么工作呢,我们可以把蓝色矩阵看做卷积层的上一层,绿色矩阵看做卷积层,在蓝色矩阵上蠕动的便是卷积核。卷积核通过与他所覆盖蓝色矩阵的一部分进行卷积运算,然后把结果映射到绿色矩阵中。



卷积核在滑动过程中做的卷积运算就是卷积核w与其所覆盖的区域的数进行点积,最后将结果映射到卷积层

卷积层的工作方式,就是个压缩提纯的过程,而且每个卷积层不单止一个卷积核,它是可以多个的,所以大家会看到输出的特征图在“变胖”,因为特征图的上一级经过多个卷积核压缩提纯,每个卷积核对应一层,多层叠加就会“变胖”。

局部连接和权值共享

全连接神经网络的局限性在于它的网络层与层之间是全连接的,这就导致了整个训练过程要更新多对(w,b)为此CNN特定引入了局部连接和权值共享的两个特性,来减少训练的计算量。重点看权值共享这张图,它同时也采用了局部连接,总共就有3*4=12个权值,再加上权值共享,我们就只用求3个权值了,大大减少了我们的计算量。

池化层

般来说,卷积层后面都会加一个池化层,可以将它理解为对卷积层输出的特征图进一步特征抽样,池化层主要分为两种:

  • Max pooling(最大池化) 就是在方块中直接选数值最大的方块投射到另一个矩阵中
  • Average pooling(平均池化) 就是在方块中计算出所有包含值的平均值投射到另一个矩阵中

卷积网络的整体结构

一个典型的卷积网络是由卷积层、汇聚层、全连接层交叉堆叠而成.目前常用的卷积网络整体结构如图所示.一个卷积块为连续M个卷积层和b个汇聚层(M通常设置为25,b为0或1).一个卷积网络中可以堆叠N个连续的卷积块,然后在后面接着K个全连接层(N的取值区间比较大,比如1100或者更大;K一般为0~2)

目前,卷积网络的整体结构趋向于使用更小的卷积核(比如 1 × 1 和 3 × 3)以及更深的结构(比如层数大于 50).此外,由于卷积的操作性越来越灵活(比如不同的步长),汇聚层的作用也变得越来越小,因此目前比较流行的卷积网络中,汇聚层的比例正在逐渐降低,趋向于全卷积网络.

几种典型的卷积神经网络

  • LeNet-5

    LeNet-5虽然提出的时间比较早,但它是一个非常成功的神经网络模型.基于LeNet-5的手写数字识别系统在 20世纪90 年代被美国很多银行使用,用来识别支票上面的手写数字.LeNet-5的网络结构如图

  • AlexNet

    AlexNet是第一个现代深度卷积网络模型,其首次使用了很多现代深度卷积网络的技术方法,比如使用 GPU 进行并行训练,采用了ReLU作为非线性激活函数,使用Dropout防止过拟合,使用数据增强来提高模型准确率等.AlexNet赢得了2012年ImageNet图像分类竞赛的冠军.AlexNet的结构如图所示,包括5个卷积层、3个汇聚层和3个全连接层(其中最后一层是使用 Softmax 函数的输出层).因为网络规模超出了当时的单个GPU的内存限制,AlexNet将网络拆为两半,分别放在两个GPU上,GPU间只在某些层(比如第3层)进行通信.

  • Inception网络

    在卷积网络中,如何设置卷积层的卷积核大小是一个十分关键的问题.在Inception 网络中,一个卷积层包含多个不同大小的卷积操作,称为Inception 模块.Inception网络是由有多个Inception模块和少量的汇聚层堆叠而成.Inception模块同时使用1 × 1、3 × 3、5 × 5等不同大小的卷积核,并将得到的特征映射在深度上拼接(堆叠)起来作为输出特征映射.



    Inception 网络有多个版本,其中最早的 Inception v1 版本就是非常著名的GoogLeNet
  • 残差网络

    残差网络(Residual Network,ResNet)通过给非线性的卷积层增加直连边(Shortcut Connection)(也称为残差连接(Residual Connection))的方式来提高信息的传播效率假设在一个深度网络中,我们期望一个非线性单元(可以为一层或多层的卷积层)f(x;O)去逼近一个目标函数为h(x).如果将目标函数拆分成两部分:恒等函数(Identity Function)x和残差函数(Residue Function)h(x)-x.

    根据通用近似定理,一个由神经网络构成的非线性单元有足够的能力来近似逼近原始目标函数或残差函数,但实际中后者更容易学习 [He et al., 2016].因此,原来的优化问题可以转换为:让非线性单元(; )去近似残差函数ℎ() − ,并用(; ) + 去逼近ℎ().

    下面给出了一个典型的残差单元示例.残差单元由多个级联的(等宽)卷积层和一个跨层的直连边组成,再经过ReLU激活后得到输出.

小结

卷积神经网络其实是一个捷径,把大的图像变小,类似于我找电脑图片,不需要一张一张点开,只需要看缩略图就行了

目前卷积神经网络学习告一段落,打算开始进行一些实战,还没想好先开始pytorch还是先开始rnn

【学习笔记】卷积神经网络 (CNN )的更多相关文章

  1. 深度学习之卷积神经网络CNN及tensorflow代码实例

    深度学习之卷积神经网络CNN及tensorflow代码实例 什么是卷积? 卷积的定义 从数学上讲,卷积就是一种运算,是我们学习高等数学之后,新接触的一种运算,因为涉及到积分.级数,所以看起来觉得很复杂 ...

  2. 深度学习之卷积神经网络CNN及tensorflow代码实现示例

    深度学习之卷积神经网络CNN及tensorflow代码实现示例 2017年05月01日 13:28:21 cxmscb 阅读数 151413更多 分类专栏: 机器学习 深度学习 机器学习   版权声明 ...

  3. 深度学习之卷积神经网络(CNN)的应用-验证码的生成与识别

    验证码的生成与识别 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10755361.html 目录 1.验证码的制 ...

  4. 深度学习之卷积神经网络(CNN)详解与代码实现(一)

    卷积神经网络(CNN)详解与代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10430073.html 目 ...

  5. 深度学习之卷积神经网络CNN

    转自:https://blog.csdn.net/cxmscb/article/details/71023576 一.CNN的引入 在人工的全连接神经网络中,每相邻两层之间的每个神经元之间都是有边相连 ...

  6. 深度学习之卷积神经网络(CNN)详解与代码实现(二)

    用Tensorflow实现卷积神经网络(CNN) 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10737065. ...

  7. TensorFlow 深度学习笔记 卷积神经网络

    Convolutional Networks 转载请注明作者:梦里风林 Github工程地址:https://github.com/ahangchen/GDLnotes 欢迎star,有问题可以到Is ...

  8. 【转载】 深度学习之卷积神经网络(CNN)详解与代码实现(一)

    原文地址: https://www.cnblogs.com/further-further-further/p/10430073.html ------------------------------ ...

  9. 卷积神经网络(CNN)学习笔记1:基础入门

    卷积神经网络(CNN)学习笔记1:基础入门 Posted on 2016-03-01   |   In Machine Learning  |   9 Comments  |   14935  Vie ...

  10. 卷积神经网络CNN学习笔记

    CNN的基本结构包括两层: 特征提取层:每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征.一旦该局部特征被提取后,它与其它特征间的位置关系也随之确定下来: 特征映射层:网络的每个计算层由多 ...

随机推荐

  1. Visdom

    安装visdom pip install visdom 启动visdom服务 python -m visdom.server visdom绘制各种图形: visdom属性介绍: 实例: from vi ...

  2. Root用户无法使用Tab补齐解决

    1. sudo vim /etc/bash.bashrc 2.取消以下注释 #if [ -f /etc/bash_completion ]; then # . /etc/bash_completion ...

  3. 用KVM安装MacOS/OSX

    基本步骤按照大牛的步骤https://github.com/kholia/OSX-KVM 黑果镜像建议用黑果小兵的:macOS Big Sur(我试过,大牛的更卡),里面的双EFI就很够用. 将镜像名 ...

  4. 【摸鱼神器】UI库秒变低代码工具——表单篇(二)子控件

    上一篇介绍了表单控件,这一篇介绍一下表单里面的各种子控件的封装方式. 主要内容 需求分析 子控件的分类 子控件属性的分类 定义 interface. 定义子控件的的 props. 定义 json 文件 ...

  5. 苹果手机和Windows之间互传文件

    参考链接:https://jingyan.baidu.com/article/a378c960c46804f229283064.html 实现原理:就是使用Samba服务,windows共享一个文件夹 ...

  6. 基于串口校时的数字钟设计(verilog实现)

    任务: 电路图设计: 设计: 模块1:1.先设计一个计数时钟,为了仿真方便,这里把1000ns当作1s. 创建一个计数器second_lim,当计数到1000/20时清零,即1s. 秒显示器secon ...

  7. 高级数据结构学习笔记 / Data Structure(updating)

    树状数组   查询操作:O(logn) 修改操作:O(logn) #define lowbit(x) (x & -x) int tr[N]; // 树状数组 // 添加c个大小为x的数值 vo ...

  8. 常用的函数式接口_Consumer接口和常用的函数式接口_Consumer接口的默认方法andThen

    Consumer接口 java,util.function.Consumer接口则正好与Supplier接口相反,它不是生产一个数据,而是消费一个数据,其数据类型由泛型决定 抽象方法:accept C ...

  9. 从零开始实现lmax-Disruptor队列(六)Disruptor 解决伪共享、消费者优雅停止实现原理解析

    MyDisruptor V6版本介绍 在v5版本的MyDisruptor实现DSL风格的API后.按照计划,v6版本的MyDisruptor作为最后一个版本,需要对MyDisruptor进行最终的一些 ...

  10. 【P1809 过河问题】题解

    贪心,我们设时间序列为 \(\{a_i\}\),长度为 \(n\)(先排序 \(\{a_i\}\)). 分类讨论(其中的「\(1\)」「\(2\)」等均指「速度第 \(1\) 人」「速度第 \(2\) ...