【Python机器学习】卷积神经网络卷积层、池化层、Flatten层、批标准化层的讲解(图文解释)

这篇具有很好参考价值的文章主要介绍了【Python机器学习】卷积神经网络卷积层、池化层、Flatten层、批标准化层的讲解(图文解释)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

卷积神经网络

卷积神经网络(convolutional neural network, CNN)在提出之初被成功应用于手写字符图像识别,2012年的AlexNet网络在图像分类任务中取得成功,此后,卷积神经网络发展迅速,现在已经被广泛应用于图形、图像、语音识别等领域。

图片的像素数往往非常大,如果用多层全连接网络来处理,则参数数量将大到难以有效训练的地步。受猫脑研究的启发,卷积神经网络在多层全连接网络的基础上进行了改进,它在不减少层数的前提下有效提升了训练速度。卷积神经网络在多个研究领域都取得了成功,特别是在与图形有关的分类任务中。

卷积层和池化层是卷积神经网络的核心组成,它们和全连接层可以组合成很深层次的网络。卷积神经网络还可以按需要添加用来抑制过拟合的Dropout层、拉平多维数据的Flatten层、加快收敛和抑制梯度消散的BatchNormalization层等等。

卷积层

二维卷积层Conv2d的输入是:input_shape=(28,28,1)。这与前文讨论的所有机器学习模型的输入都不同,前文模型的输入是一维向量,该一维向量要么是经特征工程提取出来的特征,要么是被拉成一维的图像数据。而这里卷积层的输入是图片数据组成的多维数据。

MNIST图片中,只有一种颜色,通常称灰色亮度。MNIST图片的维度是(28,28,1),前面两维存储28×28个像素点的坐标位置,后面1维表示像素点的灰色亮度值,因此它是28×28的单通道数据。

从数学上来讲,卷积是一种积分变换。在深度学习中,它用来做数据的卷积运算,在图像处理领域取得了非常好的效果。

单通道数据上的卷积运算包括待处理张量I、卷积核K和输出张量S三个组成部分,它们的大小分别为4×4、3×3和2×2。

记待处理的张量为I,卷积核为K,每一次卷积运算可表述为:

【Python机器学习】卷积神经网络卷积层、池化层、Flatten层、批标准化层的讲解(图文解释)

式中,I∗K表示卷积运算,M和N分别表示卷积核的长度和宽度。i,j是待处理张量I的坐标位置,也是卷积核左上角对齐的位置

记待处理张量I的长度和宽度为P和Q,则输出张量S的长度P^′和Q^′宽度分别为:

 【Python机器学习】卷积神经网络卷积层、池化层、Flatten层、批标准化层的讲解(图文解释)

虽然要扫描整个输入层,但一个通道只有一个卷积核,因此,对于整个输入层来说,前向传递计算时的参数是一样的,这称为参数共享(parameter sharing)。参数共享大大减少了需要学习的参数的数量。

 【Python机器学习】卷积神经网络卷积层、池化层、Flatten层、批标准化层的讲解(图文解释)

 在卷积运算中,一般会设置多个卷积核。示例中设置了32个卷积核(TensorFlow中称为过滤器filters),因此该卷积层的输出为24×24×32,也就是说将28×28×1的数据变成了24×24×32的,在画神经网络结构图时,一般用下图中的长方体来表示上述卷积运算,水平方向长度示意卷积核的数量。

因为输入是单通道的,因此每卷积核只有一层,它的参数为5×5+1=26,共32个卷积核,因此训练参数为26×32=832个。

【Python机器学习】卷积神经网络卷积层、池化层、Flatten层、批标准化层的讲解(图文解释)

如果待处理张量规模很大,可以将卷积核由依次移动改为跳跃移动,即加大步长(strides),减少计算量,加快训练速度。

为了提取到边缘的特征,可以在待处理张量的边缘填充0再进行卷积运算,称为零填充(zero-padding)。填充也可以根据就近的值进行填充。边缘填充的另一个用途是在张量与卷积核不匹配时,通过填充使之匹配,从而卷积核能扫描到所有数据。

卷积层代码如下

### MindSpore
class mindspore.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, pad_mode='same', padding=0, dilation=1, group=1, has_bias=False, weight_init='normal', bias_init='zeros', data_format='NCHW')
 
### TensorFlow2
tf.keras.layers.Conv2D(
    filters, kernel_size, strides=(1, 1), padding='valid',
    data_format=None, dilation_rate=(1, 1), groups=1, activation=None,
    use_bias=True, kernel_initializer='glorot_uniform',
    bias_initializer='zeros', kernel_regularizer=None,
    bias_regularizer=None, activity_regularizer=None, kernel_constraint=None,
    bias_constraint=None, **kwargs
)

 池化层和Flatten层

池化(pooling)层一般跟在卷积层之后,用于压缩数据和参数的数量。

池化操作也叫下采样(sub-sampling),具体过程与卷积层基本相同,只不过卷积核只取对应位置的最大值或平均值,分别称为最大池化或平均池化。

池化层的移动方式与卷积层不同,它是不重叠地移动。

Flatten层很简单,只是将输入的多维数据拉成一维的,直观上可理解为将数据“压平”。

除卷积层、池化层和全连接层(输入之前隐含Flatten层)之外的层,不改变网络结构,因此,一般只用这三层来表示神经网络的结构。

【Python机器学习】卷积神经网络卷积层、池化层、Flatten层、批标准化层的讲解(图文解释)

 批标准化层

针对误差难继续传递问题,批标准化对每一层的批量输入数据x进行标准化,使之尽量避免落入饱和区,具体来讲就是使之均值为0,方差为1。对每一批输入数据B={x_1,x_2,…,x_m}:

【Python机器学习】卷积神经网络卷积层、池化层、Flatten层、批标准化层的讲解(图文解释)

 

其中,ϵ为防止除0的很小的常数。前三步分别为计算均值、计算方差、标准化,最后一步是对归一化后的结果进行缩放和平移,其中的γ和β是要学习的参数。

创作不易 觉得有帮助请点赞关注收藏~~~文章来源地址https://www.toymoban.com/news/detail-481341.html

到了这里,关于【Python机器学习】卷积神经网络卷积层、池化层、Flatten层、批标准化层的讲解(图文解释)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【人工智能】— 深度神经网络、卷积神经网络(CNN)、多卷积核、全连接、池化

    Pre-training + Fine-tuning Pre-training(预训练) : 监督逐层训练是多隐层网络训练的有效手段, 每次训练一层隐层结点, 训练时将上一层隐层结点的输出作为输入, 而本层隐结点的输出作为下一层隐结点的输入, 这称为”预训练”. Fine-tuning(微调) : 在预训练全部完成后, 再对整个网络进行

    2024年02月10日
    浏览(35)
  • 卷积神经网络(CNN)之卷积操作、池化操作、激活函数

    前言:卷积神经网络是深度学习算法中一个重要组成部分,在深度学习图像识别技术的应用中起到了关键作用。卷积神经网络和循环神经网络(RNN)都是类似于传统的全连接神经网络(也叫深度神经网络,简称DNN),CNN属于编码了空间相关性的DNN,RNN属于编码了时间相关性的DNN。由

    2024年02月04日
    浏览(23)
  • 卷积神经网络中的卷积层、池化层、全连接层、softmax

    卷积层的作用是提取输入图片中的信息,这些信息被称为图像特征,这些特征是由图像中的每个像素通过组合或者独立的方式所体现,比如图片的纹理特征,颜色特征。 卷积操作类似于数学中的卷积,但是更加简单,计算机和我们看到的图像不一样,计算机看到的图像其实就

    2024年02月09日
    浏览(32)
  • 机器学习 | 卷积神经网络

    采用任意一种课程中介绍过的或者其它卷积神经网络模型(例如LeNet-5、AlexNet等)用于解决某种媒体类型的模式识别问题。 卷积神经网络可以基于现有框架如TensorFlow、Pytorch或者Mindspore等构建,也可以自行设计实现。 数据集可以使用手写体数字图像标准数据集,也可以自行构

    2024年01月17日
    浏览(28)
  • 机器学习——卷积神经网络基础

    卷积神经网络是人工神经网络的一种,是一种前馈神经网络。最早提出时的灵感来源于人类的神经元。 通俗来讲,其主要的操作就是:接受 输入层 的输入信息,通过 卷积层,激活层,池化层 ,进行特征的提取与学习,然后通过 全连接层 完成对比,将分类结果通过 输出层

    2024年02月13日
    浏览(33)
  • 毕设项目分享 基于机器视觉opencv的手势检测 手势识别 算法 - 深度学习 卷积神经网络 opencv python

    今天学长向大家介绍一个机器视觉项目 基于机器视觉opencv的手势检测 手势识别 算法 普通机器视觉手势检测的基本流程如下: 其中轮廓的提取,多边形拟合曲线的求法,凸包集和凹陷集的求法都是采用opencv中自带的函数。手势数字的识别是利用凸包点以及凹陷点和手部中心

    2024年02月03日
    浏览(52)
  • 神经网络卷积反卷积及池化计算公式、特征图通道数(维度)变化实例

    卷积神经网络,要特别注意输入图像的尺寸,如果想套用某个网络结构,需要先通过网络结构计算出输入图像尺寸,将自己的图像调整为所需要的尺寸;也可以根据自己的图像尺寸适当调整网络结构。以下是具体操作方法。 目录 一,要想计算图像尺寸,先要了解基础卷积等

    2024年02月03日
    浏览(30)
  • 机器学习-12 卷积神经网络简介

    1.感知机网络(解决线性可分问题,20世纪40年代) 2.BP神经网络(解决线性不可分问题,20世纪80年代) 3.深度神经网络(海量图片分类,2010年左右) 常用的深度神经网络:CNN、RNN、LSTM、GRU、GAN、DBN、RBM… 1.计算机视觉 2.语音识别 3.自然语言处理 4.人机博弈 传统机器学习算法

    2024年02月09日
    浏览(28)
  • 机器学习&&深度学习——卷积神经网络(LeNet)

    👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习深度学习——池化层 📚订阅专栏:机器学习深度学习 希望文章对你们有所帮助 之前的内容中曾经将softmax回归模型和多层感知机应用于Fashion-MNIST数据集中的服装图片。为了能应用他们,我

    2024年02月14日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包