卷积神经网络 CNN 学习笔记
激活函数Relu
最近几年卷积神经网络中,激活函数往往不选择sigmoid或tanh函数,而是选择relu函数。Relu函数的定义
$$f(x)= max(0,x)$$
Relu函数图像如下图所示:
CNN示例
上图是一个CNN的示意图,一个卷积神经网络由若干卷积层、Pooling层、全连接层组成。你可以构建各种不同的卷积神经网络,它的常用架构模式为:
INPUT -> [[CONV]*N -> POOL?]*M -> [FC]*K
也就是N个卷积层叠加,然后(可选)叠加一个Pooling层,重复这个结构M次,最后叠加K个全连接层。
Convolution Layer 表示卷积层
Pooling Layer 表示池化
Convolution Layer
卷积层的主要是作用是对数据进行卷积操作。
卷积操作可以理解为,将数据特种进行提取的一个过程。
比如 一张图片,要检测图片中存在的边缘,也就是边缘检测,那么首先建立两个filter,分别代表横竖边缘,然后拿着filte去跟input的image进行计算,得到卷积后的结果,根据卷积后的结果进行判断是否存在边缘情况。
另一种情况,一张手写数字的图片,需要进行识别,那么需要对该图片进行特种提取,建立特种提取的方式就是建立filter的过程,然后用filter去对该image进行计算,得到我们想要提取的特种数据。
卷积层输出值的计算
我们用一个简单的例子来讲述如何计算卷积,然后,我们抽象出卷积层的一些重要概念和计算方法。
假设有一个55的图像,使用一个33的filter进行卷积,想得到一个3*3的Feature Map,如下所示:
公式如下:
$$a_{i,j}=f(\sum_{m=0}{2}\sum_{n=0}{2}w_{m,n}x_{i+m,j+n}+w_b)\qquad(式1)$$
详细参考:https://www.zybuluo.com/hanbingtao/note/485480
Pooling Layer
池化主要的作用是对卷积后的数据进行整合的一个过程,同时对数据进行降维的操作。
比如在上面的距离过程中,两张图片都会在卷积后形成特征数据,但是这些特征数据中,有很多数据对我们的结果影响可以并不大,那么我们可以对特征数据进行池化后,形成新的特征数据。
Pooling层输出值的计算
Pooling层主要的作用是下采样,通过去掉Feature Map中不重要的样本,进一步减少参数数量。Pooling的方法很多,最常用的是Max Pooling。Max Pooling实际上就是在nn的样本中取最大值,作为采样后的样本值。下图是22 max pooling:
卷积神经网络的训练
卷积层训练
训练公式:
$$\delta{l-1}=\sum_{d=0}D\delta_dl*W_dl\circ f'(net^{l-1})\qquad(式9)$$
符号$\circ$表示element-wise product,即将矩阵中每个对应元素相乘,$d$表示深度$D$的实力,$l$表示层。
$\delta_d^l$表示$d$深度下$l$层的误差项
$W_d^l$表示$d$深度下$l$层的权重
$net^{l-1}$表示$d$深度下$l$层的加权输入
加权输入公式:
\begin{align}
netl&=conv(Wl, a^{l-1})+w_b\
a{l-1}_{i,j}&=f{l-1}(net^{l-1}_{i,j})
\end{align}
Pooling层的训练
无论max pooling还是mean pooling,都没有需要学习的参数。因此,在卷积神经网络的训练中,Pooling层需要做的仅仅是将误差项传递到上一层,而没有梯度的计算。
Max Pooling误差项的传递
对于max pooling,下一层的误差项的值会原封不动的传递到上一层对应区块中的最大值所对应的神经元,而其他神经元的误差项的值都是0。如下图所示(假设$a{l-1}_{1,1}、a{l-1}{1,4}、a{l-1}_{4,1}a{l-1}{4,4}$为所在区块中的最大输出值):
对于mean pooling,下一层的误差项的值会平均分配到上一层对应区块中的所有神经元。如下图所示:
PS:上面两个图示的流向应该是从 layer L 到 layer L-1 ,传递过程中,Max pooling 采用
上面这个算法可以表达为高大上的克罗内克积(Kronecker product)的形式,有兴趣的读者可以研究一下。
$$\delta^{l-1} = \deltal\otimes(\frac{1}{n2})_{n\times n}$$
卷积神经网络 CNN 学习笔记的更多相关文章
- 卷积神经网络(CNN)学习笔记1:基础入门
卷积神经网络(CNN)学习笔记1:基础入门 Posted on 2016-03-01 | In Machine Learning | 9 Comments | 14935 Vie ...
- 卷积神经网络CNN学习笔记
CNN的基本结构包括两层: 特征提取层:每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征.一旦该局部特征被提取后,它与其它特征间的位置关系也随之确定下来: 特征映射层:网络的每个计算层由多 ...
- CNN学习笔记:卷积神经网络
CNN学习笔记:卷积神经网络 卷积神经网络 基本结构 卷积神经网络是一种层次模型,其输入是原始数据,如RGB图像.音频等.卷积神经网络通过卷积(convolution)操作.汇合(pooling)操作 ...
- CNN学习笔记:卷积运算
CNN学习笔记:卷积运算 边缘检测 卷积 卷积是一种有效提取图片特征的方法.一般用一个正方形卷积核,遍历图片上的每一个像素点.图片与卷积核重合区域内相对应的每一个像素值乘卷积核 .内相对应点的权重,然 ...
- 【深度学习系列】手写数字识别卷积神经--卷积神经网络CNN原理详解(一)
上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...
- 深度学习之卷积神经网络(CNN)详解与代码实现(一)
卷积神经网络(CNN)详解与代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10430073.html 目 ...
- 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理
上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...
- CNN学习笔记:神经网络表示
CNN学习笔记:神经网络表示 双层神经网络模型 在一个神经网络中,当你使用监督学习训练它的时候,训练集包含了输入x还有目标输出y.隐藏层的含义是,在训练集中,这些中间节点的真正数值,我们是不知道的,即 ...
- 深度学习之卷积神经网络CNN
转自:https://blog.csdn.net/cxmscb/article/details/71023576 一.CNN的引入 在人工的全连接神经网络中,每相邻两层之间的每个神经元之间都是有边相连 ...
随机推荐
- []T 还是 []*T, 这是一个问题
全面分析Go语言中的类型和类型指针的抉择 目录 [−] 副本的创建 T的副本创建 *T的副本创建 如何选择 T 和 *T 什么时候发生副本创建 最常见的case map.slice和数组 for-ra ...
- mybatis批量提交
之前在做项目时,使用mybatis,批量执行sql,这里简单写下步骤 在配置数据库连接时,加入一个参数,例如 jdbc:mysql://127.0.0.1:3307/mvs-report?allowM ...
- 【BZOJ 4031】: [HEOI2015]小Z的房间
题目大意: 给一个n×m的网格,“.”表示可联通,求该网格可构成的生成树个数在1E9的剩余系中的结果.(n,m<=9) 题解: 忘了删注释WA了两遍…… 直接建图+MartrixTree定理即可 ...
- BZOJ_4176_Lucas的数论_杜教筛+莫比乌斯反演
BZOJ_4176_Lucas的数论_杜教筛+莫比乌斯反演 Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目“求 ...
- const和static readonly的区别
我们都知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等. 在多数情况下可以混用.二者本质的区别在于,const的值是在编译期间确定的,因此只能在 ...
- 我的微服务观,surging 2.0将会带来多大的改变
Surging 自2017年6月16日开源以来,已收到不少公司的关注或者使用,其中既有以海克斯康超大型等外企的关注,也不乏深圳泓达康.重庆金翅膀等传统行业的正式使用,自2019年年初,surging2 ...
- 使用MediatR重构单体应用中的事件发布/订阅
标题:使用MediatR重构单体应用中的事件发布/订阅 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/10640280.html 源代码:https ...
- Scrapy爬虫遇到 ‘Forbidden by robots.txt’的问题
今天在爬知乎精华时,出现了‘Forbidden by robots.txt’的问题 了解到到scrapy在爬取设定的url之前,它会先向服务器根目录请求一个txt文件,这个文件规定了爬取范围 scra ...
- win10安装gitLab
从控制面板选择hyper-V进行安装 1.打开控制面板选择程序=>选择启用或关闭windows功能=>选择Hyper-v 安装ubuntu 1.下载ubuntu系统(本次安装为18.04. ...
- 《k8s-1.13版本源码分析》- Scheduler启动前逻辑
本文原始地址(gitbook格式):https://farmer-hutao.github.io/k8s-source-code-analysis/core/scheduler/before-sche ...