专栏首页AI算法与图像处理CNN中张量的输入形状和特征图 | Pytorch系列(三)

CNN中张量的输入形状和特征图 | Pytorch系列(三)

卷积神经网络

在这个神经网络编程系列中,我们正在努力构建卷积神经网络(CNN),所以让我们看看在CNN中的张量输入。

在前两篇文章中,我们介绍了张量和张量的基本属性——阶、轴和形状。如果你还没看过那些帖子,我强烈建议你去看看。

我现在要做的是把阶、轴和形状的概念用在一个实际的例子中。为此,我们将把图像输入看作CNN的张量。

卷积神经网络是图像识别任务的首选网络,因为它非常适合于检测空间图案(spacial patterns)。

注意,张量的形状 编码了关于张量轴、阶和索引的所有相关信息,因此我们将在示例中考虑该形状,这将使我们能够计算出其他值。下面开始详细讲解。

CNN输入的形状

CNN输入的形状通常长度为4。这意味着我们有一个4阶张量(有四个轴的)。张量形状中的每个指标代表一个特定的轴,每个指标的值给出了对应轴的长度。

张量的每个轴通常表示输入数据的某种物理含义(real world)或逻辑特征。如果我们了解这些特征中的每一个以及它们在张量中的轴位置,那么我们就可以对张量数据结构有一个很好的总体理解。

为了分解这个,我们将从后往前推敲,考虑从右到左的轴。记住,最后一个轴,也就是我们要开始的轴,是实际数字或数据值所在的轴。

如果我们沿着最后一个轴运行,停下来检查一个元素,我们将看到一个数字。如果我们沿着任何其他轴运行,元素是多维数组。

对于图像而言,原始数据以像素的形式出现,像素由数字表示,并使用两个维尺寸(高度和宽度)进行排列。

图片的高和宽

为了表示两个维度,我们需要两个轴。

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

图片的颜色通道(Image Color Channels)

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

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

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

就访问数据方面而言,我们需要三个索引。我们选择颜色通道,高度和宽度以获取特定的像素值。

图片批次(Image Batches)

这将引出四个轴中的第一个轴,用来代表批次大小。在神经网络中,我们通常都是批量处理样本,而不是只处理单个样本,因此该轴的长度告诉我们该批次中有多少个样本。

这使我们看到可以使用一个4阶张量表示一整个批次的图片。

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

[Batch, Channels, Height, Width]

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

  1. 批次大小(Batch size)
  2. 色彩通道(Color channels)
  3. 高度(Height)
  4. 宽度(Width)

这个给了我们一个4阶张量,该张量最终将流向卷积神经网络。

给定一个代表一批图片的张量(类似于上面),我们能使用四个索引定位到一批图片中特定图片的特定通道的特定像素值。

输出通道和特征图

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

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

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

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

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

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

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

特征图(Feature Maps)

对于输出通道,我们不再拥有颜色通道,而是修改过的通道,我们称之为feature maps。这些所谓的特征图是使用输入颜色通道和卷积过滤器进行卷积的输出。

Feature maps are the output channels created from the convolutions.

之所以使用“特征”这个词,是因为输出代表了图片的特定特征,比如边缘,这些映射是在网络在训练过程中学习的过程中出现的,并且随着我们深入网络而变得更加复杂。

总结

现在我们应该很好地理解了CNN输入张量的整体形状,以及阶、轴和形状的概念是如何应用。

当我们开始构建CNN时,我们将在以后的文章中加深对这些概念的理解。在那之前,我们下期再见!

文章中内容都是经过仔细研究的,本人水平有限,翻译无法做到完美,但是真的是费了很大功夫,希望小伙伴能动动你性感的小手,分享朋友圈或点个“在看”,支持一下我 ^_^

英文原文链接是:

https://deeplizard.com/learn/video/k6ZF1TSniYk

本文分享自微信公众号 - AI算法与图像处理(AI_study),作者:AI_study

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PyTorch中CNN的Forward方法 | PyTorch系列(十七)

    我们通过扩展nn.Module PyTorch基类来创建网络,然后在类构造函数中将网络层定义为类属性。现在,我们需要实现网络的 forward() 方法,最后,...

    AI算法与图像处理
  • CNN输出大小公式 | PyTorch系列(二十)

    原标题:CNN Output Size Formula - Bonus Neural Network Debugging Session

    AI算法与图像处理
  • PyTorch 中Datasets And DataLoaders的使用 | PyTorch系列(十二)

    在这篇文章中,我们将看到如何使用Dataset和DataLoader 的PyTorch类。

    AI算法与图像处理
  • 深度学习实战(可视化部分)——使用keras识别猫咪

    在近些年,深度学习领域的卷积神经网络(CNNs或ConvNets)在各行各业为我们解决了大量的实际问题。但是对于大多数人来说,CNN仿佛戴上了神秘的面纱。我经...

    机器学习AI算法工程
  • 雅克比迭代算法(Jacobi Iterative Methods) -- [ mpi , c++]

    雅克比迭代,一般用来对线性方程组,进行求解。形如: \(a_{11}*x_{1} + a_{12}*x_{2} + a_{13}*x_{3} = b_{1}\...

    Gxjun
  • 3分钟短文|Laravel 使用like匹配字符串的用法示例

    本文接着laravel的功能讲解,说一说在模型中查询条件内,使用like这样的SQL关键字 进行子字符串匹配。并通过几个示例,和不同的实现方法,为大家展示lar...

    程序员小助手
  • zookeeper 集群部署搭建

    1、准备奇数个linux主机 我用到了三个虚拟机系统 ip地址分别为192.168.194.128、192.168.194.129 、192.168.194.1...

    heasy3
  • Mob使用:Android3.3.0以上版本集成Mob提示489、MD5等错误的解决方法

    在App开发过程中,发送验证码功能对于开发者来说是很随意的一件事情,但是如果涉及到国际性的发送验证码,就需要借助支持发送国际验证码的第三方来发送验证码,Mob平...

    三掌柜
  • 视频 | 表情包已经out,iPhone X的“动话表情”才是 future

    9 月 12 日,苹果在刚刚发布的 iPhone X 上推出了一个非常好玩的应用“动话表情”。 怎么玩呢?打开 iMessgae,选择“动话表情”,摄像头就能将...

    AI科技大本营
  • 一个天气小程序和他们跳过的 47 个坑,你该如何避免?

    知晓君

扫码关注云+社区

领取腾讯云代金券