PyTorch - 06 - CNN张量形状说明:卷积神经网络和特征图

Convolutional Neural Network

在此神经网络编程系列中,我们正在努力构建卷积神经网络(CNN),因此让我们看一下CNN的张量输入。

在这里插入图片描述

在最后两篇文章中,我们介绍了张量以及基本张量属性的等级,轴和形状。 如果您还没有看到这些帖子,我强烈建议您查看一下。

我现在想做的是将等级,轴和形状的概念与一个实际示例结合使用。 为此,我们将图像输入视为CNN的张量。

卷积神经网络是图像识别任务的首选网络,因为它们非常适合检测空间模式。

时尚mnist

请记住,张量的形状会编码有关张量的轴,等级和索引的所有相关信息,因此我们将在示例中考虑该形状,这将使我们能够计算出其他值。 让我们开始。

Shape Of A CNN Input

CNN输入的形状通常具有四个长度。这意味着我们有一个带有四个轴的4级张量。张量形状中的每个索引代表一个特定的轴,并且每个索引处的值提供了相应轴的长度。

张量的每个轴通常代表某种类型的现实世界或输入数据的逻辑特征。如果我们了解这些特征中的每一个及其在张量中的轴位置,那么我们可以对张量数据的整体结构有一个很好的了解。

为了解决这个问题,我们将考虑从右到左的轴,向后工作。请记住,最后一个轴(我们将从此处开始)是实际数字或数据值所在的位置。

如果我们沿最后一个轴运行,并且停止检查那里的元素,那么我们将查看一个数字。如果我们沿任何其他轴运行,则元素是多维数组。

对于图像,原始数据以像素形式显示,该像素由数字表示,并使用高度和宽度这两个维度进行布局。

Image Height And Width

为了表示二维,我们需要两个轴。
在这里插入图片描述
图像的高度和宽度在最后两个轴上表示。 可能的值是28 x 28,就像我们将在CNN项目中使用的fashion-MNIST数据集中的图像数据一样,还是VGG16神经网络使用的224 x 224图像大小,或者 我们可以想象的其他图像尺寸

图像色彩通道

下一个轴代表颜色通道。 对于RGB图像,此处的典型值为3;如果使用灰度图像,则典型值为1。 此颜色通道解释仅适用于输入张量。

稍后我们将揭示,在张量通过卷积层后,此轴的解释会发生变化。

到现在为止,使用最后三个轴,我们已将完整图像表示为张量。 我们使用三个轴以张量形式布置了颜色通道以及高度和宽度。

在此时访问数据方面,我们需要三个索引。 我们选择一个颜色通道,一个高度和一个宽度以达到特定的像素值。

Image Batches

这将我们带到代表批次大小的四个轴的第一个轴上。 在神经网络中,我们通常处理与单个样本相对的一批样本,因此该轴的长度告诉我们该批次中有多少个样本。

在这里插入图片描述

这使我们能够看到使用单个等级4张量表示了整批图像。

假设对于给定的张量,我们具有以下形状[3,1,28,28]。 使用形状,我们可以确定我们有一批三个图像。

[批次,通道,高度,宽度]

每个图像都有一个颜色通道,图像的高度和宽度分别为28 x 28。

  1. 批量大小
  2. 色彩通道
  3. 高度
  4. 宽度

这给了我们一个最终将流过我们的卷积神经网络的4级张量。

给定这样的图像张量,我们可以使用四个索引导航到批处理中特定图像的特定颜色通道中的特定像素。

NCHW vs NHWC vs CHWN

在阅读API文档和学术论文时看到B被N取代是很常见的。N代表批次中的样品数量。

此外,我们经常遇到的另一个区别是尺寸的重新排序。 常见顺序如下:

  1. NCHW
  2. NHWC
  3. CHWN

如我们所见,PyTorch使用NCHW,并且默认情况下TensorFlow和Keras使用NHWC(可以配置)。 最终,选择使用哪一个主要取决于性能。 一些库和算法更适合这些顺序中的一种。

输出通道和特征图

让我们看一下在通过卷积层转换张量后颜色通道轴的解释如何变化。

假设我们有一个张量,其中包含来自单个28 x 28灰度图像的数据。 这给了我们以下张量形状:[1,1,28,28]。

现在,假设此图像传递到我们的CNN并通过第一卷积层。 发生这种情况时,卷积操作将更改张量的形状和基础数据。

卷积会更改高度和宽度尺寸以及通道数。 输出通道的数量根据卷积层中使用的滤波器的数量而变化。

假设我们有三个卷积滤波器,让我们看看通道轴发生了什么。

由于我们有三个卷积滤波器,因此我们将从卷积层获得三个通道输出。 这些通道是卷积层的输出,因此名称输出通道与颜色通道相对。

三个滤波器中的每一个都对原始的单个输入通道进行卷积,从而产生三个输出通道。 输出通道仍然由像素组成,但是像素已通过卷积操作进行了修改。 根据过滤器的大小,输出的高度和宽度尺寸也会发生变化,但我们会将这些详细信息留作以后的文章。

Feature Maps

使用输出通道时,我们不再具有颜色通道,但是有了我们称为要素图的修改通道。 这些所谓的特征图是使用输入颜色通道和卷积滤镜进行卷积的输出。

特征图是从卷积创建的输出通道。

之所以使用“特征”一词,是因为输出表示图像中的特定功能(例如边缘),并且这些映射在网络在训练过程中学习时会出现,并随着我们向网络的深入发展而变得更加复杂。

总结

现在,我们应该对CNN的输入张量的整体形状有了很好的了解,并且如何将等级,轴和形状的概念应用于这种理解。

开始构建CNN时,我们将在以后的帖子中加深对这些概念的理解。

猜你喜欢

转载自blog.csdn.net/weixin_48367136/article/details/111199608
今日推荐