Tensor(张量)、CNN的输入张量和特征图

【学习笔记】【Pytorch】Tensor(张量)是什么?

  • 什么是张量?
  • 补充
    • 1.张量的形状
    • 2.重构(reshape)张量
    • 3.CNN中的输入张量形状和特征图

什么是张量?

参考

  • 什么是张量?
  • 张量解释——深度学习的数据结构
  • 深度学习中关于张量的阶、轴和形状的解释 | Pytorch系列

总结

  • 我们通常需要处理的数据有零维的(单纯的一个数字)、一维的(数组)、二维的(矩阵)、三维的(空间矩阵)、还有很多维的。Pytorch为了把这些各种维统一起来,所以起名叫张量。张量是多维数组或者简称n维数组。
  • 标量视为零阶张量,矢量视为一阶张量,二维数组矩阵视为二阶张量。多一个维度,我们就多加一个[]。例如三维张量,torch.tensor([[[9,1,8],[6,7,5],[3,4,2]],[[2,9,1],[8,6,7],[5,3,4]],[[1,5,9],[7,2,6],[4,8,3]]])。张量也可以通过索引访问元素。阶(rank)数= 维数
  • 张量的阶(Rank)、轴(Axis)和形状(Shape)。
  • PyTorch中的Tensor支持超过一百种操作,包括转置、索引、切片、数学运算(加法、减法、点乘…)、线性代数、随机数等等,总之,凡是你能想到的操作,在pytorch里都有对应的方法去完成。PyTorch学习笔记(二):Tensor操作。

补充

1.张量的形状

import torch

dd = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]


# 为了处理这个张量的形状,我们将创建一个 torch.Tensor 对象
t = torch.tensor(dd)
print(t)
print(type(t)) # 

# 张量的形状
print(t.shape)  # torch.Size([3, 3])
print(t.size())  # torch.Size([3, 3])

输出:

tensor([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]])


torch.Size([3, 3])
torch.Size([3, 3])

2.重构(reshape)张量

参考
深度学习中关于张量的阶、轴和形状的解释 | Pytorch系列

介绍
当我们对神经网络进行编程时,我们必须经常执行的一种操作叫做reshape

当我们的张量在网络中流动时,在网络内部的不同点上会出现特定的形状,作为神经网络程序员,我们的工作就是理解传入的形状,并有能力根据需要重构形状。

关于重构,需要注意的一点是,形状中的分量值的乘积必须等于张量中元素的总数

import torch


dd = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]  # 二阶张量
t = torch.tensor(dd)
print(t)

t = t.reshape(1, 9)
print(t)
print(t.shape)  # torch.Size([1, 9])

输出

tensor([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]])
tensor([[1, 2, 3, 4, 5, 6, 7, 8, 9]])
torch.Size([1, 9])

3.CNN中的输入张量形状和特征图

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

总结

  • 在CNN中的输入张量的形状通常长度为4,[Batch_size, Channels, Height, Width]。使用一个4阶张量表示一整个批次的图片,第一个轴代表图片批次(Image Batches)大小,第二个轴代表图片的颜色通道(Image Color Channels),最后两个轴表示图像的高度(Height)和宽度(Width)。

    • 图片的颜色通道:对于RGB图像,此处的通常值为3;如果使用灰度图像,则通常值为1。此颜色通道的解释仅适用于输入张量。
    • 图片批次:在神经网络中,我们通常都是批量处理样本,而不是只处理单个样本,因此该轴的长度告诉我们该批次中有多少个样本。
      例如给定的张量的形状[3,1,28,28],我们可以确定这个批次是含有三张28x28的灰度图片。
  • 输出通道:卷积操作会改变高度和宽度尺寸以及通道数,输出通道的数量是根据卷积层中使用的滤波器的数量而变化。卷积层的输出命名为输出通道而不是颜色通道。

  • 特征图(Feature Maps):对于输出通道,我们不再拥有颜色通道,而是修改过的通道,我们称之为feature maps。这些所谓的特征图是使用输入颜色通道和卷积过滤器进行卷积的输出。
    之所以使用“特征”这个词,是因为输出代表了图片的特定特征,比如边缘,这些映射是在网络在训练过程中学习的过程中出现的,并且随着我们深入网络而变得更加复杂。

你可能感兴趣的:(Pytorch,cnn,python,pytorch)