赞
踩
初学深度学习,在很多代码中都能见到shape[0],那么在python中,shape[-1]、shape[0]、shape[1]、shape[2]都是指什么呢?让本文来为你答疑解惑吧~
要谈python中的shape属性,必须要说Tensor:
Tensor 中文称为 张量(可以看做是一个多维数组),是 PyTorch 中最基本的数据类型。在数学中,标量是一个只有大小没有方向的量,如:1、2、3 等。向量是既有大小又有方向的量(一维数组),如 A = (x0, y0, z0)。矩阵是由多个向量组成的二维数组。
实际上,标量、向量和矩阵等都可以看做是张量的特例,标量是零维张量,向量是一维张量,矩阵是二维张量,图片(RGB)是三维张量。
其实,对于n维张量来说,shape[i]就是指它的第 i 维的大小(0 <= i <= n-1 ),而shape[-1]就是指它最后一维的大小。
因此,在深度学习过程中最常处理的矩阵、图片都可以转化为Tensor进行处理,并且使用shape属性获取它们相应维度的大小,请看下例:
import torch
#定义向量
x = torch.tensor([2, 3, 4, 5])
#第0维度是向量的长度
print("我是向量的第0维度大小:", x.shape[0])
print("我是向量的最后一维度大小:", x.shape[-1])
******输出******
我是向量的第0维度大小: 4
我是向量的最后一维度大小: 4
#定义矩阵
y = torch.tensor([[2, 3, 4, 3, 6, 8],
[1, 8, 9, 5, 0, 1],
[2, 0, 2, 2, 7, 1]])
#第0维度是矩阵的行数
print("我是矩阵的第0维度大小:", y.shape[0])
#第1维度是矩阵的列数
print("我是矩阵的第1维度大小:", y.shape[1])
print("我是矩阵的最后一维度大小:", y.shape[-1])
******输出******
我是矩阵的第0维度大小: 3
我是矩阵的第1维度大小: 6
我是矩阵的最后一维度大小: 6
#读取图片
import cv2
#修改为自己的图片地址
img = cv2.imread("C:/Users/86185/Desktop/1.png", 1)
#第0维度是图片的高度
print("我是图片的第0维度大小:", img.shape[0])
#第1维度是图片的宽度
print("我是图片的第1维度大小:", img.shape[1])
#第2维度是图片的通道数
print("我是图片的第2维度大小:", img.shape[1])
print("我是图片的最后一维度大小:", img.shape[-1])
******输出******
我是图片的第0维度大小: 274
我是图片的第1维度大小: 1089
我是图片的第2维度大小: 1089
我是图片的最后一维度大小: 3
写在后面
这个专栏主要是我在实现深度学习项目中总结的一些问题,以备未来笔试和面试之需,不过由于学习的不深入,也只是走马观花,很多问题总结得也不是很透彻,望读者见谅,如果有错误和不足之处,还望大家在评论区指出。希望能给大家的学习带来一点帮助,共同进步!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。