吊炸天的CNNs,这是我见过最详尽的图解!(下)

article/2025/10/2 6:19:41

【摘要】本文详细介绍了卷积神经网络的运行原理,特别是池化、全连接等过程。为了使大家更快、更轻松的入门,文章没有晦涩难懂的术语和公式,全部采用“图形”的方式来描述。文末的延展阅读部分,更加入了彩色图片卷积原理的手工演算过程,由浅入深,层层推进,希望你读得畅快!


上一节课,我们已经对输入图片做了“卷积”处理,将图片中所暗含的特征提取出来,未能听课的同学,可以查阅《吊炸天的CNNs,这是我见过最详尽的图解!(上)》

在提取特征的过程中,我们采用的是“过滤器中的数值,与原始图片中的相应数值,相乘、相加”的方法,例如:

事实上,在“卷积”过程中

上面这种对应数值相乘、再相加的计算,仅仅是“线性”计算;

而在现实世界中,很多很多的数据,都是“非线性”的。

所以,在“卷积”处理的后面,我们常常引入一个“非线性”的计算,来使得数据更加接近真实世界。

这个“非线性”计算,就是ReLU函数,它的图像形态犹如一条折线:

它就像是一个魔法袋子,所有经过它的数值:

如果是负数,出来的结果就是0

如果是正数或零,出来的结果仍是自己本身

ReLU计算,相当于把一条直线(“线性”)掰弯。

虽然,这种方法有点儿简单(……粗暴),但是,它能使我们最终的预测准确度得到提升。

具体到图片计算,ReLU相当于将“特征图片”中,像素值小于0的部分,全部变为0。

举个例子:

假设经过“过滤器”提取后,得到的“特征图片”其像素值如左下图,那么,经过ReLU处理后,得到的“新的”特征图片会呈现右下图形态:

 

回到我们之前的例子中,在“卷积”的后面,再加上一步“ReLU计算”,即为:

因为我们之前使用的过滤器,其得到的数值,绝大多数均为正数,所以,经由ReLU处理后的图片,没有太大的改变,希望这并不影响你对于ReLU运算的理解。

当然,如果你的特征图片的尺寸很大的话,你还可以进一步添加“池化”的操作。

所谓“池化”,就是在保留图片主要信息的前提下,将图片的尺寸缩小。  

池化的类型有很多种,诸如“最大池化”、“平均池化”、“求和池化”等等,它们的运算原理基本一致。

因为“最大池化”更为常用,所以我们重点介绍“最大池化”的运算过程。

假设经过ReLU处理后,我们得到的特征图片,如下图:

在对特征图片进行“池化”处理时,与“卷积”类似,需要我们设置2个超参数:

过滤器大小(F)和 滑动的步幅数(S) 

这里,假设我们设置F=2,S=2,那么,“最大池化”为:

在每2*2(即4个)像素区域内,保留像素值最大的那一个,其余3个像素值抛弃。

如下图:

这样,经过“池化”处理,就将一个4*4大小的图片,缩小为2*2大小的图片了。

当然,在“池化”过程中,你也可以将超参数设置为F=3、S=2,只不过“F=2、S=2”更为常用。

回到我们之前的例子中,在“ReLU计算”的后面,再加上一步“最大池化”,即为:

(点击图片,查看大图)

故事至此,我们在第2个步骤中所涉及的所有环节,都已经学习完了。

回顾step2的整个流程:

输入图片 → 卷积 → ReLU → 池化(可选) 

当然,你也可以不拘泥于此。有的时候,我们会进行多次卷积和池化,所以,更一般的形式:

举个例子:

★ 你可以构建2层“卷积 + ReLU”,如下:

输入图片 → 卷积 → ReLU → 卷积 → ReLU → 池化

★ 也可以构建2层“卷积 + ReLU + 池化”:

输入图片 → 卷积 → ReLU → 池化 → 卷积 → ReLU → 池化

当然,你还可以构建更多网络层,这里就不一一列举了。

 

 

温馨提示:

① “池化”层使用的过滤器,与“卷积”层使用的过滤器有所不同:

★ “池化”层的过滤器,其内部没有数值

因为“池化”层的过滤器,其功能只是将图片缩小,故其内部没有参数。

★ 在“池化”层中,仅有1个过滤器;而在“卷积”层中,可以设置多个过滤器

因为“卷积”层的过滤器,其功能是提取图片的特征,因而,我们使用不同的过滤器,可以提取不同的图片细节。

而“池化”层的过滤器,仅仅是为了缩小图片的尺寸,因而,使用一种过滤器,就可以达到这一目标,无需设置多个。

②  经过“卷积”处理后,得到的图片张数(即“图片深度”),应该等于该卷积层的过滤器个数;

而经过“池化”处理后,得到的图片张数(即“图片深度”),仍等于上一层的图片张数。

概念描述比较晦涩,直接看下图:

(点击图片,查看大图)

当仅有1个卷积层时,关于每一层的图片深度问题,尚且好理解(如上图所示)。

但是,当模型中含有多个卷积层,或者,输入的图片为彩色图片时,这个问题就容易被混淆,后面,我们在讲到彩色图片的图像处理时,仍会强调这个问题,此处,仅需记住这一概念就可以。

最后一步,该轮到我们的压轴大戏——“图片分类”了。

经过上面一系列的处理,此时得到的图片,已经可以被视为一串串简单的数字(即像素值)。

将这一个个的像素值,塞到我们初中就已接触过的表达式中:

x是谁?

还记得之前讲的计算机“眼中”的世界吗?

那一个格子、一个格子中的数字,就是x。

y是谁?

我们给每张图片打上的标签:这张图是“猫”、那张图是“狗”…… 统统这些标签,就是y。

θ是什么鬼?

当你给计算机很多组、很多组(x,y)时,它会自己去学习寻找x与y之间的关系,这个“关系”,就是θ。

当你拥有了θ,下一次,即使拿到一张没有打过标签的图片,你也可以通过已知的θ和x,知道y的取值,从而“知道图片里画的是什么?”。


所以,在“第3步 – 图片分类”中:

首先,需要把第2步得到的图片,其中的像素值“展开”。

为了方便大家理解,假设我们从第2步中,得到了2张2*2的图片,如果把它们的像素值“展开”,得到的效果为:

这样,我们就拿到了x。展开后所得到的 

就是x。

在训练的最初,我们拥有每张图片的标签,即“我们已经拥有了y值”。

所以,在模型的最后,我们需要让计算机努力找到x-y之间的关系。

而寻找的办法,就需要依靠“全连接神经网络”:

所谓“全连接”,是指下一层的每一个神经元(即图中的“□”),与上一层的神经元全部相连,这里为了表达得更清晰,已经省去了中间的连接符。实际上,更多的时候,你会看到下面这样的图片:

不过,本文的重点不在于讲解“全连接神经网络”,如果你想了解更多相关的知识,可以关注 微信公众号:AI传送门,来进行学习。

本文的核心在于卷积神经网络(CNNs)。

这里,你只需要记住2点:

① “全连接神经网络”可以帮助我们学习到参数θ。有了它,下一次再给计算机“看”图片时,计算机便会自动识别出图中的景象。

② 模型得到的最终结果,表示“图片为某种类别的概率”。注意:这里的概率之和,永远为1。

例如:

即计算机“判断”,最初输入的图片为“狗”。

我们将CNNs的所有流程,整合起来,即:

(点击图片,查看大图)



http://chatgpt.dhexx.cn/article/RHqcTKA6.shtml

相关文章

CNNs:ZFNet之基于AlexNet特征可视化实验分析

CNNs:ZFNet之基于AlexNet特征可视化实验分析 导言基于AlexNet网络的实验分析实验一:不同卷积层特征提取分析实验二:不同卷积层提取特征收敛分析 ZFNet网络介绍基于ZFNet网络的实验分析实验三:针对AlexNet特征提取改善可视化实验四:特征不变性…

CNN详细学习

前馈神经网络 MLP:multi-layer percetron Feed Forward and Back error propagation解决异或划分问题 缺点: 容易过拟合容易陷入局部最优化梯度消失计算资源不充分,训练集小 DNN 深一点效果好,宽一点容易理解,发现…

CNNs 入门论文汇总

Introduction 本文主要总结了卷积神经网络在机器视觉领域的重要发展及其应用。我们将介绍几篇重要的公开发表的论文,讨论它们为何重要。前一半的论文(AlexNet到ResNet)将主要涉及整体系统架构的发展和演变,后一半论文将主要集中在…

论文阅读和分析:《DeepGCNs: Can GCNs Go as Deep as CNNs?》

下面所有博客是个人对EEG脑电的探索,项目代码是早期版本不完整,需要完整项目代码和资料请私聊。 数据集 1、脑电项目探索和实现(EEG) (上):研究数据集选取和介绍SEED 相关论文阅读分析: 1、EEG-SEED数据集作者的—基线论文阅读和…

Gated-SCNN: Gated Shape CNNs for Semantic Segmentation

目录 作者 一、Model of Gated-SCNN 二、 Gated Shape CNN 1.Regular Stream 2.Shape Stream 3. Gate Conv Layer 4.ASPP 5 总代码 三 损失函数 1.BoundaryBCELoss 2.DualTaskLoss 作者 一、Model of Gated-SCNN 文章使用了双流CNN来处理语义分割中的边界问题,分为R…

(整理)吊炸天的CNNs,这是我见过最详尽的图解!(下)

之前在CSDN上看到这篇文章,觉得通俗易懂,写的非常好。不过近来再次查看,发现文章的照片莫名其妙的没有了,没有图就根本看不懂了。找到了之前关注的微信公众号:AI传送门 。 在里面找到了这篇文章,决定再把这…

CNNs详尽图解

已经成为每一个初入人工智能——特别是图像识别领域的朋友,都渴望探究的秘密。 本文通过“算法可视化”的方法,将卷积神经网络的原理,呈献给大家。教程分为上、下两个部分,通篇长度不超过7000字,没有复杂的数学公式&a…

学习笔记:利用CNNs进行图像分类

1.神经网络图像(CNNs)分类简介 本文将重点关注卷积神经网络,也被称为CNNs或Convnets。CNNs是一种特殊类型的神经网络,特别适合于图像数据。自2012年以来,ImageNet竞赛(ImageNet)一直由CNN架构赢得。 在本文中&#x…

(整理)吊炸天的CNNs,这是我见过最详尽的图解!(上)

之前在CSDN上看到这篇文章,觉得通俗易懂,写的非常好。不过近来再次查看,发现文章的照片莫名其妙的没有了,没有图就根本看不懂了。找到了之前关注的微信公众号:AI传送门 。 在里面找到了这篇文章,决定再把这…

交叉验证

概述Holdout 交叉验证K-Fold 交叉验证Leave-P-Out 交叉验证总结 概述 交叉验证是在机器学习建立模型和验证模型参数时常用的办法。 顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集。 用训练集来训练模型&…

交叉验证评估模型性能

在构建一个机器学习模型之后,我们需要对模型的性能进行评估。如果一个模型过于简单,就会导致欠拟合(高偏差)问题,如果模型过于复杂,就会导致过拟合(高方差)问题。为了使模型能够在欠拟合和过拟合之间找到一个折中方案,我们需要对模型进行评估,后面将会介绍holdout交叉…

Python实现:Hold-Out、k折交叉验证、分层k折交叉验证、留一交叉验证

模型在统计中是极其重要的,可以通过模型来描述数据集的内在关系,了解数据的内在关系有助于对未来进行预测。一个模型可以通过设置不同的参数来描述不同的数据集,有的参数需要根据数据集估计,有的参数需要人为设定(超参…

深度理解hold-out Method(留出法)和K-fold Cross-Validation(k折交叉验证法)

模型评估(Model Evaluation) 1.测试集(testing set) 测试集(testing set): 通常,我们可通过实验测验来对学习器的泛化误差进行评估并进而做出选择,为此,需要一个“测试集”来测试学习器对新样本的判别能力。然后以测试集上的“测…

cross-validation:从 holdout validation 到 k-fold validation

构建机器学习模型的一个重要环节是评价模型在新的数据集上的性能。模型过于简单时,容易发生欠拟合(high bias);模型过于复杂时,又容易发生过拟合(high variance)。为了达到一个合理的 bias-vari…

《The reusable holdout: Preserving validity in adaptive data analysis》中文翻译

写在前面:这是我看到的第一篇发在《science》上的文章,将近年来比较火的差分隐私用在解决过机器学习中的过拟合上,效果很棒。这是15年的文章,现在已经17年了,网上居然没有中文翻译,我就粗略的翻译一下给后来…

机器学习模型评测:holdout cross-validation k-fold cross-validation

cross-validation:从 holdout validation 到 k-fold validation 2016年01月15日 11:06:00 Inside_Zhang 阅读数:4445 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lanchunhui/article/details/5…

三种模型验证方法:holdout, K-fold, leave one out cross validation(LOOCV)

Cross Validation: A Beginner’s Guide An introduction to LOO, K-Fold, and Holdout model validation By: Caleb Neale, Demetri Workman, Abhinay Dommalapati 源自:https://towardsdatascience.com/cross-validation-a-beginners-guide-5b8ca04962cd 文章目录…

模型检验方法:holdout、k-fold、bootstrap

参考:https://www.cnblogs.com/chay/articles/10745417.html https://www.cnblogs.com/xiaosongshine/p/10557891.html 1.Holdout检验 Holdout 检验是最简单也是最直接的验证方法, 它将原始的样本集合随机划分成训练集和验证集两部分。 比方说&#x…

多种方式Map集合遍历

1.如何遍历Map中的key-value对,代码实现(至少2种) Map集合的遍历(方式1)键找值: package com.B.Container_13.Map;import java.util.HashMap; import java.util.Map; import java.util.Set;//Map集合的遍历(方式1)键找值 public class Map04_01 {publi…