带你学会深度学习之卷积神经网络[CNN] - 2

前言

笔者写下此系列文章是希望在复习人工智能相关知识同时为想学此技术的人提供一定帮助。

本文不讲述如泛化,前向后向传播,过拟合等基础概念。

本文图片来源于网络,图片所有者可以随时联系笔者删除。

带你学会深度学习之卷积神经网络[CNN] - 1

CNN,常用于计算机视觉,是计算机视觉方面常见的基础模型,后面发展的有很多其他变种,也被用于文字处理等非计算机视觉领域。概念是由AI领域著名大佬LeCun等人在上世纪90年代提出。CNN之所以在计算机视觉领域(CNN、)表现出色,是因为它们能够自动并有效地捕捉到图像中的空间层次结构,这一点对于理解像素组成的图像至关重要。通过利用这种层次结构,CNN能够识别和分类从简单到复杂的对象和场景,无论它们的大小、位置或者是姿态如何变化。CNN的变种和改进模型层出不穷:AlexNet、VGG、GoogLeNet到ResNet和DenseNet等等等等。

正文

1x1大小的卷积核

1x1大小的卷积核并非多余,并且事实上也很被广泛使用,1x1卷积,也称为逐点卷积,是一种特殊的卷积操作,有如下作用

  • 特征通道融合:1x1卷积可以在不改变特征图空间维度(宽度和高度)的情况下,对特征通道进行融合。通过这种方式,它可以从不同的特征通道中学习并组合信息,有效地生成新的特征表示。

  • 降低维度:1x1卷积可以用于减少特征图的深度,即减少通道数。这对于减少模型参数和计算复杂度非常有用,特别是在深度网络中。通过调整1x1卷积层的输出通道数,我们可以控制输出特征图的通道数,从而达到降维的目的。

  • 增加非线性:将1x1卷积层与非线性激活函数(如ReLU)结合使用,可以增加网络的非线性能力。这使得模型能够捕获更复杂的特征,从而提高模型的表现力。

  • 参数和计算效率:1x1卷积由于其小的空间尺寸,相对于其它尺寸的卷积而言,参数更少,计算效率更高。这使得它在增加额外的网络层时不会大幅增加计算负担,同时还能提供上述的功能性优势。

池化层

池化层(Pooling layer)是卷积神经网络(CNN)中的一种结构,用于降低特征图的维度和减少计算量,同时保持关键信息。

最大池化层(Max Pooling Layer)

最大池化层通过从覆盖的区域中选取最大值来工作。假设有一个2D特征图,最大池化会在这个特征图上按照指定的窗口大小(比如2x2)和步长(stride)滑动。在每个窗口中,它会选取最大的元素作为该窗口的输出。这种操作的直观效果是,它可以保留特征图中最显著的特征,同时减少数据的维度。

最大池化的主要优点是它能增强模型对输入数据中小的变化的鲁棒性。因为它只保留每个窗口中的最大值,所以对于窗口内的小的位置变化,最大池化是不敏感的。

平均池化层(Average Pooling Layer)

平均池化层则是通过计算覆盖区域内所有值的平均值来工作。与最大池化类似,平均池化也是在特征图上按照指定的窗口大小和步长进行滑动,但在每个窗口中,它会计算所有元素的平均值作为输出。

平均池化的效果是,它提供了一个平滑化的特征图,其中每个窗口的输出代表了该区域内所有值的平均情况。这种操作有助于减少模型对局部变化的敏感度,有时可以提高模型对图像整体结构的理解。


在处理多通道输入数据时,池化层对每个输入通道分别池化,而不是像卷积层那样将各通道的输入按通道相加。这意味着池化层的输出通道数与输入通道数相等。

参数总数计算

计算模型的参数总数,一方面利于我们更深刻掌握CNN的全貌,另一方面也利于我们在参数数量这个维度评估模型。

题目 1

假设有一个简单的CNN模型,其结构如下:

  • 输入层:28x28x1的图像
  • 卷积层1:使用32个3x3的卷积核,步长为1,不使用填充('valid')
  • 池化层1:2x2的最大池化,步长为2
  • 卷积层2:使用64个3x3的卷积核,步长为1,不使用填充('valid')
  • 池化层2:2x2的最大池化,步长为2
  • 全连接层:连接到一个有128个神经元的全连接层
  • 输出层:连接到一个有10个神经元的输出层

  • 卷积层1:每个卷积核有3x3x1个权重加上1个偏置(一般卷积核计算有一个固定的偏置,类似y = ab + c 里的c),总共有 32×(3×3×1+1)=320个参数。
  • 卷积层2:第二个卷积层的输入深度为32(来自第一个卷积层的输出通道数),因此每个卷积核有3x3x32个权重加上1个偏置,总共 64×(3×3×32+1)=18,496个参数。
  • 全连接层:假设池化层2的输出大小为5x5x64(由于两次2x2最大池化),连接到128个神经元的全连接层,总共有 5×5×64×128+128=204928个参数(每个输出神经元有一个偏置)。
  • 输出层:128个输入连接到10个输出类别,有 128×10+10=1,290个参数。

题目二

一个简化的VGG风格的CNN模型,其结构如下:

  • 输入层:32x32x3的图像
  • 卷积层1:使用64个3x3的卷积核,步长为1,使用填充('same')
  • 卷积层2:紧接着又一个使用64个3x3的卷积核,步长为1,使用填充('same')
  • 池化层1:2x2的最大池化,步长为2
  • 卷积层3:使用128个3x3的卷积核,步长为1,使用填充('same')
  • 池化层2:2x2的最大池化,步长为2
  • 全连接层1:连接到一个有256个神经元的全连接层
  • 全连接层2:连接到一个有256个神经元的全连接层
  • 输出层:连接到一个有10个神经元的输出层(对应于10个类别)

卷积层1:64 x (3x3x3+1) 

卷积层2: 64 x (3x3x64+1)

全连接层1: 8x8x128x256+256

全连接层2: 256x10+10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏目艾拉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值