这节课中介绍了卷积网络的基本组成部分(全连接层,激活函数,卷积层,池化层,标准化等),下节课讨论了卷积神经网络的发展历史以及几种经典结构是如何构建的

前言

在之前提到的全连接神经网络中,我们直接把一个比如说32 * 32 * 3的图像展开成一个3072*1的向量,然后使用向量与权重矩阵点积得到结果,这实际上是不太合理的,从某种意义上说,我们破坏了原本图像的空间信息,把它简单的看成一个一维向量,而在卷积神经网络中,我们引入了卷积层,能够帮助我们在保存原本图像的空间信息的情况下,对图像特征进行提取

卷积层



如上图所示我们引入了一个卷积核或者说filter,与原始图像进行卷积运算,就是我们把卷积核在原始图像上从起始位置开始滑动,依次对每个5 * 5的区域与filter点积,再加上偏置项,其实就是进行$W^{T}x + b$的运算,这样一个区域得到一个输出,最终一行我们可以得到$32 - 5 + 1 = 28$个输出结果,也就意味着最终我们可以得到一张$1 \times 28 \times 28$的激活图

更进一步地,我们可以使用不同的filter,来获得不同的激活图,组成我们的卷积层:



更一般地形式:



我们可以看到$C_{out}$代表着一个卷积层中filter的数目,同样也与输出层的维度保持一致,而$C_{in}$一般都是与上一层的输入保持一致

我们可以将不同的卷积层进行叠加,记得注意要在卷积层之后还要加入一个relu层,否则两个卷积层的连接和一个卷积层毫无区别:

我们可以采用和之前一样的可视化方法,看看卷积层实际上做了什么:



我们可以看出卷积层提供的图像模板,和我们之前用线性分类器或者全连接网络得到的很不一样,这里的模板大多是一些边缘或者颜色信息,从另一个角度说,卷积层其实起到了提取图像特征的作用,我们可以把这些模板都看作图像的某种特征

在之前我们也提到过,输入层图像在经过卷积层之后,它的大小会缩减,实际上也损失了某种图像信息,我们不想这样,于是引入了padding,在原本的图像周围加上0,保证图像的维度不变:

现在我们来看另一个问题:



在经过不同卷积层之后,对于输出层来说,想要去学习全局的图像,看到全局的图像非常困难,所以我们需要下采样来缩小图像,便于特征的提取,这样我们引入了步长stride的概念,就是我们的卷积核在图像上滑动时,是一次滑动stride步长:

然后我们来看看关于卷积层的其它信息,比如说可学习的参数:



显然每个filter矩阵的每个参数都是可学习的,同时也不要忘了偏置项

比如说运算次数:



总共有10240个输出,每个输出都是通过点积(75次运算)得到

最后总结一些常见参数设置:

池化层

池化层也是一种下采样的方法,可以实现图像缩小与特征降维,常用的有平均池化与最大池化:



max pooling就是取对应kernel size区域里面的最大值,同样这里也可以设置步长值

常用的设置如下,我们可以发现池化层是只有超参数设置的,没有任何可学习的参数



下图是一个卷积神经网络的架构,我们可以看到使用卷积层与池化层,可以实现空间的降维但是通道数提升,我认为这意味着我们得到了更多更简单但是更有用的图像特征:

normalization

batch normalization是在2015年发现的一种可以极大地提升训练神经网络速度的方法,可以使其快速收敛,但是小哥哥老师在课上指出,他觉得原论文的数学原理的阐述并不是很有道理

batch normalization主要思想就是将输入标准化,不同神经网络有不同形式,训练与测试集上方式也不同(这里主要是因为训练集我们可以求数据的均值方差,但是我们显然无法在测试集上这样做

训练集:



测试集:



卷积神经网络:

而batch normalization常常在全连接层与卷积层之后,下图我们可以看到这种方法有着诸多好处:

事实上还有其它不同的normalization方法:







batch normalization是在c这个面上即不同样本的同一个通道的特征做归一化,layer是在n对应的面即同一个样本的不同通道做归一化,instance对应的是每个样本每个通道的归一化

下面这张图来自知乎:https://zhuanlan.zhihu.com/p/56542480

这是专栏文章的一篇讲的比较好,关于batch normalization同专栏的另一篇文章:https://zhuanlan.zhihu.com/p/54171297

umich cv-4-1 卷积网络基本组成部分介绍的更多相关文章

  1. TCN时间卷积网络——解决LSTM的并发问题

    TCN是指时间卷积网络,一种新型的可以用来解决时间序列预测的算法.在这一两年中已有多篇论文提出,但是普遍认为下篇论文是TCN的开端. 论文名称: An Empirical Evaluation of ...

  2. 基于孪生卷积网络(Siamese CNN)和短时约束度量联合学习的tracklet association方法

    基于孪生卷积网络(Siamese CNN)和短时约束度量联合学习的tracklet association方法 Siamese CNN Temporally Constrained Metrics T ...

  3. 使用Caffe完成图像目标检测 和 caffe 全卷积网络

    一.[用Python学习Caffe]2. 使用Caffe完成图像目标检测 标签: pythoncaffe深度学习目标检测ssd 2017-06-22 22:08 207人阅读 评论(0) 收藏 举报 ...

  4. 最全面的图卷积网络GCN的理解和详细推导,都在这里了!

    目录 目录 1. 为什么会出现图卷积神经网络? 2. 图卷积网络的两种理解方式 2.1 vertex domain(spatial domain):顶点域(空间域) 2.2 spectral doma ...

  5. 【论文阅读】ConvNeXt:A ConvNet for the 2020s 新时代卷积网络

    一.ConvNext Highlight 核心宗旨:基于ResNet-50的结构,参考Swin-Transformer的思想进行现代化改造,知道卷机模型超过trans-based方法的SOTA效果. ...

  6. EdgeFormer: 向视觉 Transformer 学习,构建一个比 MobileViT 更好更快的卷积网络

    ​  前言 本文主要探究了轻量模型的设计.通过使用 Vision Transformer 的优势来改进卷积网络,从而获得更好的性能. 欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结.最新技术跟 ...

  7. PRML读书会第五章 Neural Networks(神经网络、BP误差后向传播链式求导法则、正则化、卷积网络)

    主讲人 网神 (新浪微博:@豆角茄子麻酱凉面) 网神(66707180) 18:55:06 那我们开始了啊,前面第3,4章讲了回归和分类问题,他们应用的主要限制是维度灾难问题.今天的第5章神经网络的内 ...

  8. 学习笔记TF028:实现简单卷积网络

    载入MNIST数据集.创建默认Interactive Session. 初始化函数,权重制造随机噪声打破完全对称.截断正态分布噪声,标准差设0.1.ReLU,偏置加小正值(0.1),避免死亡节点(de ...

  9. 全卷积网络 FCN 详解

    背景 CNN能够对图片进行分类,可是怎么样才能识别图片中特定部分的物体,在2015年之前还是一个世界难题.神经网络大神Jonathan Long发表了<Fully Convolutional N ...

  10. 学习笔记CB009:人工神经网络模型、手写数字识别、多层卷积网络、词向量、word2vec

    人工神经网络,借鉴生物神经网络工作原理数学模型. 由n个输入特征得出与输入特征几乎相同的n个结果,训练隐藏层得到意想不到信息.信息检索领域,模型训练合理排序模型,输入特征,文档质量.文档点击历史.文档 ...

随机推荐

  1. kibana基本操作

    kibana基本应用 一.简介 ​ Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的.你可以用kibana搜索.查看存放在Elasticsearch中的数据 ...

  2. LeetCode 周赛上分之旅 #33 摩尔投票派上用场

    ️ 本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 [BaguTree Pro] 知识星球提问. 学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思 ...

  3. Linux 命令:gpasswd 管理用户组

    工作中经常需要将用户加入docker组,可执行如下操作: sudo gpasswd -a ec2-user docker newgrp # 不用加sudo gpasswd gpasswd -h Usa ...

  4. Python数据可视化-折线图

    Python数据可视化-折线图 一.JSON数据格式 1.1 什么是json JSON是一种轻量级的数据交互格式.可以按照JSON指定的格式去组织和封装数据 JSON本质上是一个带有特定格式的字符串 ...

  5. mysql根据mysqlbinlog恢复找回被删除的数据库

    年初和朋友一起做了个项目,到现在还没收到钱呢,今天中午时候突然听说之前的数据库被攻击了,业务数据库全部被删除.看有没有什么办法恢复,要是恢复不了,肯定也别想拿钱了吧? README FOR RECOV ...

  6. 零基础入门——从零开始学习PHP反序列化笔记(一)

    靶场环境搭建 方法一:PHPstudy搭建 GitHub地址 https://github.com/mcc0624/php_ser_Class 方法二:Docker部署 pull镜像文件 docker ...

  7. 开源.NetCore通用工具库Xmtool使用连载 - XML操作篇

    [Github源码] <上一篇> 介绍了Xmtool工具库中的发送短信类库,今天我们继续为大家介绍其中的XML操作类库. XML操作是软件开发过程中经常会遇到的情况:包括XML内容的遍历解 ...

  8. el-date-picker 在表单中宽度(width)问题

    在使用element-plus的日期选择组件 el-date-picker的时候,发现form表单内的日期选择框并不能跟el-input 一样把宽度撑满.而是要小一圈. 这样在排版中显得不太整齐,但是 ...

  9. VScode软件的安装以及C/C++环境配置的方法

    今天和大家分享一下VScode软件的安装以及C/C++环境配置的方法.手把手教大家入门. 1,下载VScode编译器 (1)    官网下载链接:https://code.visualstudio.c ...

  10. 6、Mybatis之高级查询

    6.1.创建接口.映射文件和测试类 ++++++++++++++++++++++++++分割线++++++++++++++++++++++++++ 注意namespace属性值为对应接口的全限定类名 ...