关于张量(tensor)的理解

简介: 笔记

在深度学习中经常会碰到一个词,“张量”(tensor)。但对于一维,二维,三维还好理解,那么更多维度的时候呢?特别是当增加了批次(batch_size)这个维度,我们应该如何理解张量。


以pytorch为例,tensorflow也是一样的。


我们先来看这几个维度:


一维:


a = torch.tensor([1,2,3])


输出:tensor([1, 2, 3])


shape:torch.Size([3])


输出只有一个维度,所以是一维


二维:


a = torch.tensor([[1,2,3]])


输出:tensor([[1, 2, 3]])


shape:torch.Size([1, 3])


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


tensor([[1, 2, 3],

       [4, 5, 6],

       [7, 8, 9]])


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


以上输出有行和列,所以上二维张量,就是一个二维矩阵。


在来看一个矩阵:


torch.ones(1,3,3)


tensor([[[1., 1., 1.],

        [1., 1., 1.],

        [1., 1., 1.]]])


我们注意到这个张量是有三个维度的,前面多了一个维度1。但貌似没看出这个1体现在哪里,我们再来看一个张量,进一步看一下这个最前面的维度体现在哪里:


torch.ones(3,3,3)


tensor([[[1., 1., 1.],

        [1., 1., 1.],

        [1., 1., 1.]],


       [[1., 1., 1.],

        [1., 1., 1.],

        [1., 1., 1.]],


       [[1., 1., 1.],

        [1., 1., 1.],

        [1., 1., 1.]]])


这回能看出来这个最前面的维度体现在哪里了么?相当于第一个3,是分了3大行,每一大行,又分了三行小行,每行又分了三列,所以是3*3*3,最后一个维度永远是列的维度。


如果你将上面的张量类比成图像,就相当于上面是3通道,每个通道的大小又是三行三列。。。


然后我们在看一个张量:


torch.ones(2,3,3,3)


tensor([[[[1., 1., 1.],

         [1., 1., 1.],

         [1., 1., 1.]],


        [[1., 1., 1.],

         [1., 1., 1.],

         [1., 1., 1.]],


        [[1., 1., 1.],

         [1., 1., 1.],

         [1., 1., 1.]]],



       [[[1., 1., 1.],

         [1., 1., 1.],

         [1., 1., 1.]],


        [[1., 1., 1.],

         [1., 1., 1.],

         [1., 1., 1.]],


        [[1., 1., 1.],

         [1., 1., 1.],

         [1., 1., 1.]]]])


上面的输出我专门用一个水平线分开了,这样更明显,上面一部分是一个维度,下面又是一个维度,所以是两个维度,再说的大白话点,就是整个张量,两大行,每大行又分了三行,每行又分了三行,然后又分了三列。


这个最前面的维度2,其实就是batchsize,就相当于这个张量是输入了两张图像,每个图像的大小是3通道,大小3*3。这样就应该比较好理解了。


再附一张图来说明一下:


image.png

希望能够说明白~~让大家更好的理解张量

目录
相关文章
|
存储 PyTorch 算法框架/工具
Tensor to img && imge to tensor (pytorch的tensor转换)
Tensor to img && imge to tensor (pytorch的tensor转换)
|
4月前
|
存储 PyTorch 算法框架/工具
Tensors张量操作
PyTorch中的`Tensor`是多维数组,类似NumPy的`ndarray`,但支持GPU加速。Tensor有属性如形状(shape)、数据类型(dtype)和存储位置(device),可创建并初始化为指定数值、从Numpy数组转换而来,或基于已有Tensor复制。Tensor可以在CPU和GPU之间移动,用于数据运算、拼接(如`torch.cat`进行连接)和转换(如与Numpy间转换,以及图像处理中的`transforms`)。通过`to()`方法可以灵活地改变Tensor的设备存储位置。
|
4月前
|
机器学习/深度学习 人工智能 PyTorch
PyTorch-张量
PyTorch 是Facebook AI团队开发的深度学习框架,其核心是张量,它是同类型数据的多维数组。张量可以通过`torch.tensor()`、`torch.Tensor()`、指定类型如`IntTensor`等创建。张量操作包括线性(`torch.arange`, `torch.linspace`)、随机(`torch.randn`, `torch.manual_seed`)和全0/1张量(`torch.zeros`, `torch.ones`)。张量间可进行阿达玛积(逐元素相乘),类型转换用`type()`或`double()`。
|
5月前
|
开发工具 Python
|
5月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【PyTorch】-了解张量(Tensor)
【PyTorch】-了解张量(Tensor)
|
5月前
|
存储 机器学习/深度学习 PyTorch
PyTorch核心--tensor 张量 !!
PyTorch核心--tensor 张量 !!
53 1
|
机器学习/深度学习 PyTorch TensorFlow
张量(Tensor)
张量(Tensor)是矩阵的推广,是一种多维数组或多维矩阵的概念。它可以包含零个或多个轴(也称为维度),每个轴上有固定的大小。张量可以是标量(零维张量)、向量(一维张量)、矩阵(二维张量)以及更高维度的数组。
127 1
|
PyTorch 算法框架/工具
【PyTorch简明教程】torch.Tensor()与torch.tensor()的区别
【PyTorch简明教程】torch.Tensor()与torch.tensor()的区别
120 0
|
机器学习/深度学习 存储 PyTorch
【Pytorch】 理解张量Tensor
【Pytorch】 理解张量Tensor
160 0
|
并行计算 安全 异构计算
pytroch取张量数据
pytroch取张量数据
175 1
pytroch取张量数据