目录

1、卷积神经网络的结构

2、相关参数的表示法

2.1、输入层参数

2.2、padding

2.3、过滤器参数

2.4、步长

2.5、全连接神经数

3、卷积层

3.1 卷积实例1

3.2 卷积实例2

3.3 卷积实例3

3.4卷积实例4

4、池化层

5、全连接层


卷积神经网络(Convolutional Neural Network,CNN)是一种前馈型的神经网络,其在图像处理方面有出色的表现,其目的就是抽取特征,目前已经被大范围使用到图像处理、自然语言处理等领域中。相比于其他神经网络结构,卷积神经网络需要的参数相对较少,训练较为容易,使的其能够广泛应用。

1、卷积神经网络的结构

我们来看下深度学习的模型结构

卷积神经网络的就是在隐藏层中的体现:

实际应用中,卷积层也叫过滤器、卷积核,我习惯叫过滤器。3个层次中可以增加或减少各个层次的数量以形成复杂的模型。

2、相关参数的表示法

2.1、输入层参数

n(H)Xn(W)Xn(c),表示输入参数。通常也表示为nXnXn,指输入高为n,宽为n,通道数为n的数据;如下面的RGB图像(208X208X208),高、宽和通道均为208。

2.2、padding

padding就是在n(H)Xn(W)Xn(c)的输入数据中填充一些数据,增大n(H)和n(W),使卷积后的n(H)和n(W)与卷积前的n(H)和n(W)保持不变,我习惯用p表示,后续会详细介绍。

2.3、过滤器参数

f(H)Xf(W)f(c), 和输入数据类似。表示用于和输入数据做卷积的过滤器大小,f(c)表示采用了多少个过滤器。

2.4、步长

步长表示卷积的时候过滤器以多长的距离进行移动,我习惯用s表示。

2.5、全连接神经数

FC(n),表示全连接层的神经元数量。

3、卷积层

卷积就是指在原始的输入上进行特征的提取。假如有一个5X5X3的RGB图片,用2X2的过滤器对R进行卷积。

3.1 卷积实例1

相关参数:

  1. 输入:5X5X3
  2. 1个过滤器:2X2
  3. 步长:s=1
  4. padding:p=0

经过卷积计算后结果为:4X4

那么输出的结果是怎么计算出来的呢?

比如输出中左上角的21,等于过滤器和输入中的左上角2X2的切片根据下面的计算结果得到:21=1*1+8*2+2*2+0*1

在输入数据中过滤器向右按步长s=1移动:17=8*1+4*2+0*2+1*1

在输入数据中过滤器向下按步长s=1移动:13=2*1+0*2+1*2+9*1

输出的结果就是过滤器在输入数据中按步长移动计算得到的结果。

3.2 卷积实例2

如果我把步长参数改为2,即相关参数:

  1. 输入:5X5X3
  2. 1个过滤器:2X2
  3. 步长:s=2
  4. padding:p=0

经过卷积计算后结果为:2X2

那么输出的结果是又怎么计算出来的呢?

比如输出中左上角的21,等于过滤器和输入中的左上角2X2的切片根据下面的计算结果得到:21=1*1+8*2+2*2+0*1

在输入数据中过滤器向右按步长s=2移动:13=4*1+2*2+1*2+3*1

在输入数据中过滤器向下按步长s=2移动:28=1*1+9*2+2*2+5*1

输出的结果就是过滤器在输入数据中按步长移动计算得到的结果。

3.3 卷积实例3

那么,padding是什么呢,假如我修改p=1,填充0,则:

可以看出,padding是在输入数据的长和宽填充p个长度的自定义值,填充值通常为一些对原来特性影响不大的值(比如0或1),填充后得到新的输出值,然后再卷积计算得到输出。

Padding的作用之一是在过滤器固定的情况下,为了得到一个和输入形状相同或相似的输出。

另外一个作用就是增加输入形状中边缘特征的被卷积次数,使边缘特征在卷积过程中不被弱化和丢失。

3.4卷积实例4

以上对R通道用2X2过滤器进行了卷积,即f=2X2X1;

对R通道进行卷积:

接下来怎么增加通道数呢?

我们假设对G、B通道(假设数据和R通道一样)分别用R通道的方式进行卷积

对G通道进行卷积:

对B通道进行卷积:

把对3个通道的卷积值进行合并,结果输出:4X4X3,这时我们称用的过滤器为f=4X4X3。事实上,对于多通道的输入数据,可以通过应用多个过滤器等到多个通道的输出。

下面,我们总结下输入参数(n(H)Xn(W)Xn(c))、padding(p)参数、过滤器参数(f(H)Xf(W)f(c))、步长参数(s)、输出参数(o(H)Xo(W)Xo(c))之间的关系,通过下面的公式可以计算等到输出参数:

                                                                                     

4、池化层

池化(pooling)的作用是强化重要的特性,同时弱化不重要的特性,常用的最大值池化(max-pooling)和平均值池化(avg-pooling),这里以最常用的最大值池(max-pooling)讲解:

相关参数:

  1. 输入:5X5X3
  2. (2X2)max-pooling
  3. 步长:s=1
  4. padding:p=0

经过卷积计算后结果为:4X4

池化的过程和卷积的过程相似,先定义一个池化的参数(比如2X2)和池化的方式(比如max-pooling),然后按照卷积的的方式按步长大小进行移动即可,如输出中左上角的8=max(1,8,20)

向下移动1,9=max(2,0,1,9)

5、全连接层

如卷积实例3结果输出4X4X3=48个参数,我们的目的是最后输出3个类型(比如猫、狗、人),因此我们添加一个FC(3)的(即3个神经元)全连接层。全连接可以看做上一层输出的所有特征都要和全连接层的所有神经元进行连接,计算的参数为(n(H)Xn(W)Xn(C)XFC(n)),因此全连接层的计算非常复杂。

[深度学习]大白话之卷积神经网络相关推荐

  1. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-04-基于Python的LeNet之MLP

    原文地址可以查看更多信息 本文主要参考于:Multilayer Perceptron  python源代码(github下载 CSDN免费下载) 本文主要介绍含有单隐层的MLP的建模及实现.建议在阅读 ...

  2. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-03-基于Python的LeNet之LR

    原地址可以查看更多信息 本文主要参考于:Classifying MNIST digits using Logistic Regression  python源代码(GitHub下载 CSDN免费下载) ...

  3. 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理(1)

    上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...

  4. 深度学习21天——卷积神经网络(CNN):实现mnist手写数字识别(第1天)

    目录 一.前期准备 1.1 环境配置 1.2 CPU和GPU 1.2.1 CPU 1.2.2 GPU 1.2.3 CPU和GPU的区别 第一步:设置GPU 1.3 MNIST 手写数字数据集 第二步: ...

  5. 深度学习算法中卷积神经网络的应用

    下面一起来探讨一下关于深度学习算法中卷积神经网络的基本概念和应用: 1.卷积神经网络基本概念 卷积神经网络也是在传统人工神经网络的基础上发展起来的,它与 BP 神经网络有很大的相似之处,但也有很大的区 ...

  6. [人工智能-深度学习-33]:卷积神经网络CNN - 常见分类网络- LeNet网络结构分析与详解

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  7. 记录|深度学习100例-卷积神经网络(CNN)彩色图片分类 | 第2天

    记录|深度学习100例-卷积神经网络(CNN)彩色图片分类 | 第2天 1. 彩色图片分类效果图 数据集如下: 测试图1如下 训练/验证精确图如下: 优化后:测试图--打印预测标签: 优化后:测试图- ...

  8. 深度学习的数学-卷积神经网络的误差反向传播

    文章目录 前言 正文 卷积神经网络中的关系式 卷积层 池化层 输出层 平方误差(损失函数) 梯度下降法 卷积层和输出层的神经单元误差(重点) 输出层的神经单元误差计算 输出层的神经单元与其权重偏置的关 ...

  9. 深度学习教程(10) | 卷积神经网络解读(吴恩达·完整版)

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/35 本文地址:http://www.showmeai.tech/article-det ...

最新文章

  1. MySQL优化篇:IN VS EXISTS
  2. openblas 矩阵算法库 简介
  3. powerbuilder+2个dw联动_千元级小众表,只知道DW就out了,这5个英国品牌一样精致百搭...
  4. 运算符重载:即为函数
  5. python 标准错误输出_过程的实时标准输出/错误捕获
  6. Jupyter中那些神奇的第三方拓展魔术命令
  7. 数据仓库设计方案(转载)
  8. feign调用多个服务_spring cloud各个微服务之间如何相互调用(Feign、Feign带token访问服务接口)...
  9. python marshal loads failed_在Python中marshal对象序列化的相关知识
  10. python的一些函数
  11. 有负数c语言除法,C语言负数的除法和求余运算
  12. 中职计算机说课稿三篇,中职计算机说课稿三篇.docx
  13. 如何配置ASP运行环境
  14. 学习 Delphi 必读的6本书【转译】
  15. 微信视频文件保存在服务器吗,如何发送大的视频文件给朋友和家人
  16. 用计算机弹苹果手机铃声,10秒搞定,苹果iPhone手机不用电脑换铃声,这个方法真的炒鸡简单!...
  17. 除了编码,还要会说话(1)
  18. itextpdf实现文字路径裁切图片
  19. 安卓程序报错: No package ID ff found for ID 0xffffffff.
  20. 用surfaceview播放FFmpeg解码视屏

热门文章

  1. Csharp develop
  2. 实战PHP数据结构基础之队列
  3. 【CSS】虎躯一震!flex=1 和 flex-grow=1 竟然不一样!
  4. SQL Server Update:使用 TOP 限制更新的数据
  5. centos 6 apt.sw.be 错误 无法yum安装软件解决方案
  6. Kmalloc和Vmalloc的区别
  7. JavaScript 学习笔记— —Arguments
  8. jquery利用appendTo动态创建元素
  9. UITextView UITextField退出键盘的常用三种方式
  10. Visual C#中用WMI编写网络应用程序