CNN 的第一步是把图片分成小块。我们通过选取一个给定宽度和高度的滤波器来实现这一步。

滤波器会照在图片的小块 patch (图像区块)上。这些 patch 的大小与滤波器一样大。

 

如之前视频所示,CNN用滤波器来把图片分割成更小的 patch,patch 的大小跟滤波器大小相同。

 

我们可以在水平方向,或者竖直方向滑动滤波器对图片的不同部分进行聚焦。

滤波器滑动的间隔被称作 stride(步长)。这是你可以调节的一个超参数。增大 stride 值后,会减少每层总 patch 数量,因此也减小了模型大小。通常这也会降低图像精度。

让我们看一个例子,在这个放大的狗图片中,我们从红框开始,我们滤波器的高和宽决定了这个正方形的大小。

 

金色巡回犬图片的一块

 

然后我们向右把方块移动一个给定的步长(这里是2),得到另一块 patch。

 

我们把方块向右移动两个像素,得到另一个 patch。

 

这里最重要的是我们把相邻的像素聚在一起,把他们视作一个集合。

在普通非卷积的神经网络中,我们忽略了这种临近性。在普通网络中,我们把输入图片中的每一个像素与下一层的神经元相连。图片中相邻像素在一起是有原因的,并且有着特殊意义,但普通网络没有有效利用好这些信息。

要利用这种临近结构,我们的 CNN 就要学习如何分类临近模式,例如图片中的形状和物体。

 

滤波器深度 Filter Depth

通常都会有多余一个滤波器,不同滤波器提取一个 patch 的不同特性。例如,一个滤波器寻找特定颜色,另一个寻找特定物体的特定形状。卷积层滤波器的数量被称为滤波器深度。

 

上述例子中,一个 patch 与下一层的神经元相连

来源: MIchael Neilsen

 

每个 patch 连接多少神经元?

这取决于滤波器的深度,如果深度是 k,我们把每个 patch 与下一层的 k 个神经元相连。这样下一层的高度就是 k,如下图所示。实际操作中,k是一个我们可以调节的超参数,大多数的 CNNs 倾向于选择相同的起始值。

 

滤波器的深度为k,与下一层的k个神经元相连

 

为什么我们把一个 patch 与下一层的多个神经元相连呢?一个神经元不够好吗?

多个神经元的作用在于,一个 patch 可以有多个有意义的,可供提取的特点。

例如,一个 patch 可能包括白牙,金色的须,红舌头的一部分。在这种情况下,我们需要一个深度至少为3的滤波器,一个识别牙,一个识别须,一个识别舌头。

 

这只狗的 patch 有很多有意思的特征需要提取。包括牙、须以及粉红色的舌头。

 

一个 patch 连接有多个神经元可以保证我们的 CNNs 学会提取任何它觉得重要的特征。

CNN滤波器的更多相关文章

  1. TensorFlow 2.0 深度学习实战 —— 浅谈卷积神经网络 CNN

    前言 上一章为大家介绍过深度学习的基础和多层感知机 MLP 的应用,本章开始将深入讲解卷积神经网络的实用场景.卷积神经网络 CNN(Convolutional Neural Networks,Conv ...

  2. Keras:基于Theano和TensorFlow的深度学习库

    catalogue . 引言 . 一些基本概念 . Sequential模型 . 泛型模型 . 常用层 . 卷积层 . 池化层 . 递归层Recurrent . 嵌入层 Embedding 1. 引言 ...

  3. LeNet - Python中的卷积神经网络

    本教程将  主要面向代码,  旨在帮助您 深入学习和卷积神经网络.由于这个意图,我  不会花很多时间讨论激活功能,池层或密集/完全连接的层 - 将来会有  很多教程在PyImageSearch博客上将 ...

  4. Sparsity Invariant CNNs

    文章链接 Abstract 本文研究稀疏输入下的卷积神经网络,并将其应用于稀疏的激光扫描数据的深度信息完成实验.首先,我们表明,即使当丢失数据的位置提供给网络时,传统卷积网络在应用于稀疏数据时性能也很 ...

  5. 基于SincNet的原始波形说话人识别

    speaker recognition from raw waveform with SincNet Mirco Ravanelli, Yoshua Bengio 作为一种可行的替代i-vector的 ...

  6. 3D点云深度学*

    3D点云深度学* 在自动驾驶中关于三维点云的深度学*方法应用.三维场景语义理解的方法以及对应的关键技术介绍. 1. 数据 但是对于3D点云,数据正在迅速增长.大有从2D向3D发展的趋势,比如在open ...

  7. 3D点云点云分割、目标检测、分类

    3D点云点云分割.目标检测.分类 原标题Deep Learning for 3D Point Clouds: A Survey 作者Yulan Guo, Hanyun Wang, Qingyong H ...

  8. 论文翻译:2022_PACDNN: A phase-aware composite deep neural network for speech enhancement

    论文地址:PACDNN:一种用于语音增强的相位感知复合深度神经网络 引用格式:Hasannezhad M,Yu H,Zhu W P,et al. PACDNN: A phase-aware compo ...

  9. 《SVDNet for Pedestrian Retrieval》理解

    <SVDNet for Pedestrian Retrieval>理解 Abstract: 这篇文章提出了一个用于检索问题的SVDNet,聚焦于在行人再识别上的应用.我们查看卷积神经网络中 ...

随机推荐

  1. linux-基础-常用命令

    一 Linux的简介 1.1 Linux的概述 Linux是基于Unix的开源免费的操作系统,由于系统的稳定性和安全性几乎成为程序代码运行的最佳系统环境.Linux是由Linus Torvalds(林 ...

  2. java-异常处理2

    一 编译时异常和运行时异常的区别 java认为如果你的程序有问题,你应该让调用者知道. 例如:面包,长毛了.用户去买了,用户可能会挂 .应该在面包上贴上标签(异常). java 如果在函数内抛出Exc ...

  3. Dijkstra,floyd,spfa三种最短路的区别和使用

    这里不列举三种算法的实现细节,只是简单描述下思想,分析下异同 一 Dijkstra Dijkstra算法可以解决无负权图的最短路径问题,只能应付单源起点的情况,算法要求两个集合,开始所有点在第二个集合 ...

  4. Django中form组件的is_valid校验机制

    先来归纳一下整个流程(1)首先is_valid()起手,看seld.errors中是否值,只要有值就是flase(2)接着分析errors.里面判断_errors是都为空,如果为空返回self.ful ...

  5. 如何用git将项目代码上传到github - CSDN博客

    配置Git 我们先在电脑硬盘里找一块地方存放本地仓库,比如我们把本地仓库建立在C:\MyRepository\1ke_test文件夹下 进入1ke_test文件夹 鼠标右键操作如下步骤: 1)在本地仓 ...

  6. Thread.sleep

    Thread.sleep() The current thread changes state from Running to Waiting/Blocked as shown in the diag ...

  7. 论C#的多继承

    意外中看到这篇博客,很有意思! 本文转自:http://www.cnblogs.com/leotsai/p/csharp-multi-inheritance.html C#多继承的讨论似乎是个古老的问 ...

  8. 使用idea工具的几个个性化步骤

    1.更改背景样式2.添加激情代码插件 Power mode II3.安装省略 getset 插件 Lombok 引入pom.xml <!-- 此组件可以用来实体类 省略 getset 构造等等 ...

  9. freemarker自定义标签(与java合用)

    自定义类继承FreemarkerManager类,重写protected Configuration createConfiguration(ServletContext servletContext ...

  10. yii常用操作数据

    yii常用操作数据.php <?php defined('YII_DEBUG') or define('YII_DEBUG', true); //当在调试模式下,应用会保留更多日志信息,如果抛出 ...