1. CNN卷积网络-初识

2. CNN卷积网络-前向传播算法

3. CNN卷积网络-反向更新

1. 前言

卷积神经网络是一种特殊的深层的神经网络模型,它的特殊性体现在两个方面,

  1. 它的神经元间的连接是非全连接的,
  2. 同一层中某些神经元之间的连接的权重是共享的(即相同的)。

它的非全连接和权值共享的网络结构使之更类似于生物 神经网络,降低了网络模型的复杂度(对于很难学习的深层结构来说,这是非常重要的),减少了权值的数量。

2. CNN卷积网络结构

我们先重整体的角度观察一下CNN卷积网络的结构:

上图的结构从左到右是,输入层、卷积层(Convolution Layer)、池化层(Pooling layer)、卷积层、池化层、全连接层(Fully Connected Layer)、全链接层、输出层。

卷积层+池化层的组合可以在隐藏层出现很多次,上图中出现两次。而实际上这个次数是根据模型的需要而来的。当然我们也可以灵活使用使用卷积层+卷积层,或者卷积层+卷积层+池化层的组合,这些在构建模型的时候没有限制。但是最常见的CNN都是若干卷积层+池化层的组合,如上图中的CNN结构。

在若干卷积层+池化层后面是全连接层(Fully Connected Layer, 简称FC),全连接层其实就是我们前面讲的DNN结构,只是输出层使用了Softmax激活函数来做图像识别的分类,这点我们在DNN中也有讲述。

从上面CNN的模型描述可以看出,CNN相对于DNN,比较特殊的是卷积层和池化层,如果我们熟悉DNN,只要把卷积层和池化层的原理搞清楚了,那么搞清楚CNN就容易很多了。

3. 卷积层(Convolution Layer)

卷积层的实现是通过一个卷积核的方式实现的。一个卷积层对应一个卷积核,通过卷积核实现权值共享。

通过一张图我们就能了解卷积层的工作原理。

我们卷积层的输入是\([3,4]\)的矩阵,卷积核是\([2,2]\)的矩阵,输出是\([2,3]\)的矩阵。每一个输出的值都是通过输入层的\([2,2]\)的值和卷积核相乘的和。

再举一个动态的卷积过程的例子如下:

我们有下面这个绿色的\([5,5]\)输入矩阵,卷积核是黄色的\([3,3]\)的矩阵。卷积的步长是一个像素。则卷积的过程如下面的动图。卷积的结果是一个\([3,3]\)的矩阵。

通过这几个卷积层的例子想必大家对卷积核的计算方式有了一定的了解。

卷积层的公式如下:

\[
s(i,j)=(X*W)(i,j) + b = \sum\limits_{k=1}^{n\_in}(X_k*W_k)(i,j) +b
\]
其中,\(n\_in\)为输入矩阵的个数,或者是张量的最后一维的维数。\(X_k\)代表第\(k\)个输入矩阵。\(W_k\)代表卷积核的第\(k\)个子卷积核矩阵。\(s(i,j)\)即卷积核$W$3对应的输出矩阵的对应位置元素的值。

卷积层的输出经常加一个激活函数,使的整个网络具有非线性的结构。

4. 池化层(Pooling Layer)

如果说卷积层已经理解了,那么池化层就更好理解了。池化层的任务是选出最具代表性的特征,同时缩小数据的维度,使得后面的的网络处理起来更快,效率更高。池化层主要是通过一个过滤器去扫描输入的数据,从每次扫描的过程中生成输出数据。现在池化层主要生成数据的方式有2种

  1. 最大池化层(max pooling layer):max pooling是选择过滤器中最大的那个值。
  2. 平均池化层(average pooling layer):选择过滤器中所有值的平均值作为输出。

介绍了这么多,还不如来张图简明扼要。

5. 总结

在上面提到的卷积层和池化层还有两个概念没有提到。

  1. 步长(stride):stride的意思是过滤器的每次移动的步长,它直接影响最后输出的数据的维度。
  2. padding:padding的意思是给数据周围补0,使得周围的数据和中间的数据权重相同。

了解了stride和padding,我们就能计算出输出的维度:

输入:数据维度为\([W,W]\),Filter大小\([F,F]\),步长\(S\),padding的像素数\(P\),可以得出\([N,N]\)。

\[
N = \frac{W - F + 2P }{S} + 1
\]

1. CNN卷积网络-初识的更多相关文章

  1. 3. CNN卷积网络-反向更新

    1. CNN卷积网络-初识 2. CNN卷积网络-前向传播算法 3. CNN卷积网络-反向更新 1. 前言 如果读者详细的了解了DNN神经网络的反向更新,那对我们今天的学习会有很大的帮助.我们的CNN ...

  2. 2. CNN卷积网络-前向传播算法

    1. CNN卷积网络-初识 2. CNN卷积网络-前向传播算法 3. CNN卷积网络-反向更新 1. 前言 我们已经了解了CNN的结构,CNN主要结构有输入层,一些卷积层和池化层,后面是DNN全连接层 ...

  3. Deeplearning 两层cnn卷积网络详解

    https://blog.csdn.net/u013203733/article/details/79074452 转载地址: https://www.cnblogs.com/sunshineatno ...

  4. 用keras作CNN卷积网络书本分类(书本、非书本)

    本文介绍如何使用keras作图片分类(2分类与多分类,其实就一个参数的区别...呵呵) 先来看看解决的问题:从一堆图片中分出是不是书本,也就是最终给图片标签上:“书本“.“非书本”,简单吧. 先来看看 ...

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

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

  6. CNN卷积神经网络_深度残差网络 ResNet——解决神经网络过深反而引起误差增加的根本问题,Highway NetWork 则允许保留一定比例的原始输入 x。(这种思想在inception模型也有,例如卷积是concat并行,而不是串行)这样前面一层的信息,有一定比例可以不经过矩阵乘法和非线性变换,直接传输到下一层,仿佛一条信息高速公路,因此得名Highway Network

    from:https://blog.csdn.net/diamonjoy_zone/article/details/70904212 环境:Win8.1 TensorFlow1.0.1 软件:Anac ...

  7. 机器学习-计算机视觉和卷积网络CNN

    概述 对于计算机视觉的应用现在是非常广泛的,但是它背后的原理其实非常简单,就是将每一个像素的值pixel输入到一个DNN中,然后让这个神经网络去学习这个模型,最后去应用这个模型就可以了.听起来是不是很 ...

  8. Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN

    http://m.blog.csdn.net/blog/wu010555688/24487301 本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep le ...

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

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

随机推荐

  1. Android APP通用型拒绝服务、漏洞分析报告

    点评:记得曾经有段时间很多SRC平台被刷了大量APP本地拒绝服务漏洞(目前腾讯金刚审计系统已经可检测此类漏洞),移动安全团队发现了一个安卓客户端的通用型拒绝服务漏洞,来看看他们的详细分析吧. 0xr0 ...

  2. Andoird通信之简单聊天ChatApp

    Android通信,大体上的逻辑是跟Java上的通信是差不多的,只是因为Android线程不能直接访问UI界面组件,所以在处理的时候有些麻烦,只要是通过Handle处理. 接下来是一个简单地手机聊天A ...

  3. MVC 3.0学习笔记(自定义控件)

    现有控件: 例如ASP.NET MVC框架包括以下设置标准的HTML控件(部分控件): Html.ActionLink() Html.BeginForm() Html.CheckBox() Html. ...

  4. DSYMTools App Bug 分析工具

    1.DSYMTools 简介 DSYMTools 是一个可以解析 iOS Crash 文件的工具. GitHub 下载地址 DSYMTools 其它下载地址 DSYMTools v1.0.5 for ...

  5. mysql远程访问,修改root密码

    mysql -uroot -p #input password use mysql; update user set host='%' where user='root'; flush privile ...

  6. javascript中 try catch finally 的使用

    例一:function message(){ try { adddlert("Welcome guest!") } catch(err) { txt="此页面存在一个错误 ...

  7. Android ListView滚动条配置完全解析

    滚动条的相关显示效果 先来看下ListView的滚动条有哪些显示效果. 滚动条自身的外观 这点不用说,就是滚动条自身的颜色,形状等. Track的外观 默认的ListView是没有设置Track的.为 ...

  8. 【转】Markdown 的一些问题

    Markdown 的一些问题 把我之前的博文基本上转换成了 markdown 格式.我发现 markdown 虽然在编辑器里看起来比 HTML 清晰一些,但也有一些不足. 这些 markup 语言的格 ...

  9. FreeSWITCH取消Digest校验流程

    方法一.通过使用acl配置 <list name="domains" default="deny"> <!-- domain= is spec ...

  10. Java项目多数据源配置 (转)

    由于种种原因,有的时候可能要连接别人的数据库,或者不同的数据库没法自动转换,重构起来数据量又太大了,我们不得不在一个项目中连接多个数据源.从网上找了各种资料,只有这位大神给出的解决方案一下子就成功了. ...