参考内容

1、网易云课堂微专业——深度学习—04第一周:http://mooc.study.163.com/smartSpec/detail/1001319001.htm

2、CNN基础介绍:http://blog.csdn.net/fengbingchun/article/details/50529500



卷积神经网络(Convolutional Neural Networks,CNN)

1、基本计算原理

  

  动态过程:

  滤波器(过滤器:filter)的权值是根据你要检测的特征来决定的,在深度学习中,也即是要经过训练得到。检测的特征不同,权值就不一样。

  如上单层的图像一般表示的是灰白图,既是没有颜色的,有颜色的RGB图像,会包含三个相同大小的图层,这时对应的滤波器也要变成三层,滤波器的层数(通道数)必须时刻与图像层数保持一致。。。

  

  注意输出的是一个单层图

  

  因为当一个三通道的过滤器与图像进行卷积时,是直接对27个数去加权计算它们的和得到一个结果,而不是分层计算。

2、卷积输出的大小计算

  如上两个例子,5*5的图像经过3*3的滤波器得到一个3*3的结果,6*6*3d的图像经过3*3*3d的滤波器得到一个4*4*1d的结果,从单层的例子我们大概已经知道了是怎么计算的了,那么接下来转换成公式来表示一下。

  

  由计算可知,每次卷积图像都会变小,以上还只是步长为1的情况(也即是每次只移动一个),有两个缺点:

    1、每次卷积之后图像都会缩小,多次卷积之后呢, 可能会变得很小很小

    2、会丢掉角落边缘像素的重要信息,看下面图像

  

    在上面的边缘,从左到右像素检测的次数分别为1、2、3、2、1,可见角落边缘只被检测了一次,而中间可以被检测多次,这就会导致边角信息丢失。解决的办法是加入Padding。

3、加入Padding以及之后的计算

  加入Padding的意思是在卷积之前,在原图像边缘上加入一层像素(也可以多层),一般也叫做补零(因为大多数时候我们添加的元素都是0)。

  

  由上图可知,如果卷积之后要得到与原图像相同大小的图像,那么加入的Padding层数应该是(f - 1) / 2,也由此可见,我们用的过滤器 f 一般也是奇数的,这样才能整除计算,获得对称填充,还有一个原因是奇数的滤波器会有一个中心点,有时候在计算机视觉计算时,有个中心点会方便很多。

  附:

    Padding = 0的卷积被称为Valid Convolution

    为了得到与原图像大小相同图像而加入Padding的卷积称为Same Convolution

3、加入卷积步长(Stride)

  以上运算都是基于步长为1的情况,下面看看步长为2的情况:

  

  在卷积运算时,如果滤波器超出了图像框,一般的操作是不进行运算。

4、三维卷积

  (1)原始RGB三维图

    

    

  (2)多个滤波器(卷积核)

    以上操作都是基于单个滤波器的,无论是单层还是多层,一个滤波器只能检测一种特征,要检测多个特征,我们需要多个滤波器。

    

5、汇总

  

CNN之间的计算的更多相关文章

  1. Python datetime time 等时间 日期 之间的计算和相互转化

    from datetime import datetime, date, timedelta, timezone from time import time, ctime, localtime, st ...

  2. c# 数字之间的计算

    1.c# 65*1.0F/102=0.637254901960784 2.mysql TRUNCATE(65/102,9)  9代表的是保留几位小数 3.多张表关联,修改某张表的字段 UPDATE s ...

  3. CNN笔记:通俗理解卷积神经网络【转】

    本文转载自:https://blog.csdn.net/v_july_v/article/details/51812459 通俗理解卷积神经网络(cs231n与5月dl班课程笔记) 1 前言 2012 ...

  4. CNN笔记:通俗理解卷积神经网络

    CNN笔记:通俗理解卷积神经网络 2016年07月02日 22:14:50 v_JULY_v 阅读数 250368更多 分类专栏: 30.Machine L & Deep Learning 机 ...

  5. F2工作流引擎参与者类型成员的交、并、互拆计算规则

          计算描述:计算规则指的是和其它“参与者类型成员”的之间的计算,必须求解处理人不为空的情况下才进行规则计算,各个“参与者类型成员”按序号顺序执行. 计算算法:并集(权重最低),交集(权重中) ...

  6. 你好,C++(18) 到底要不要买这个西瓜?4.1.6 操作符之间的优先顺序

    4.1.6 操作符之间的优先顺序 在表达一些比较复杂的条件判断时,在同一个表达式中,有时可能会存在多个操作符.比如,我们在判断要不要买某个西瓜时,不仅要判断它的总价(单价8.2元/斤,一共10.3斤) ...

  7. Java 原始数据类型的计算:运算符重载(Operator Overload)和类型转换(Type Conversion)

    原文阅读:<算法(第四版)>第一章 第一节:基础编程模型 有没有在面试的时候被问到:下面这几行代码的执行结果是什么?依据是什么? System.out.println (5/3); Sys ...

  8. 深度学习:Keras入门(二)之卷积神经网络(CNN)

    说明:这篇文章需要有一些相关的基础知识,否则看起来可能比较吃力. 1.卷积与神经元 1.1 什么是卷积? 简单来说,卷积(或内积)就是一种先把对应位置相乘然后再把结果相加的运算.(具体含义或者数学公式 ...

  9. Activex、OLE、COM、OCX、DLL之间区别、联系[转]

    转自:http://baike.baidu.com/view/393671.htm 创建COM:http://blog.csdn.net/henry000/article/details/700839 ...

随机推荐

  1. Throwable类

    1.Throwable是所有异常的基类(父类),两个子类Error和Exception ①Error:java运行时系统的内部错误或资源耗尽错误,应用程序不应该抛出这种类型的对象,一旦发生这种异常除了 ...

  2. php.ini修改后,重启无效

    今天做项目,上传图,需要修改php.ini.发现修改后,多次长期服务器也没用,在网上找了好多方案.介绍一下我的流程 1.使用phpinfo()找到php.ini的位置,如果位置不准确,修改肯定没有任何 ...

  3. Scala基本语法总结(一)

    Scala基本语法总结 时隔快一年了,又捡起scala,不是想学的有多么的精通,只是想把之前遇到的知识点和实践中遇到的重点进行归纳总结,对以后的面试或许有点帮助吧! 一.scala开发环境的配置 我这 ...

  4. Jupyter Notebook的魔法

    在腾讯云上搭建了一个Jupyter Notebook 还是很好用的, 这里总结了一些看到的小技巧及快捷键使得我们更加快捷的完成工作. Notebook 与 Vim 有些类似,有两种键盘输入模式,即命令 ...

  5. 2018南京网络赛L题:Magical Girl Haze(最短路分层图)

    题目链接:https://nanti.jisuanke.com/t/31001 解题心得: 一个BZOJ的原题,之前就写过博客了. 原题地址:https://www.lydsy.com/JudgeOn ...

  6. elk6.3.2在线安装中文分词工具IK

    1.进入ES目录并执行安装(注意版本号改成你需要的版本) cd /usr/share/elasticsearch ./bin/elasticsearch-plugin install https:// ...

  7. javascript sorting/ v8 sorting

    https://github.com/mgechev/v8-sorting-test/tree/master/src/algorithms

  8. VS2015编译MapWinGIS

    在github上下载MapWinGIS,目前最新版本为4.9.5.0 GitHub上项目地址为:https://github.com/MapWindow/MapWinGIS 通过git客户端下载mas ...

  9. 北京Uber优步司机奖励政策(3月31日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  10. 北京Uber优步司机奖励政策(2月23日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...