广义的张量可以是任何维度的,而狭义来说,一维是向量,二维是矩阵,三维及以上是张量。
- 创建张量:
a=torch.tensor(1,dtype=torch.float32)
- tensor–>numpy:
b=a.NumPy()
b是numpy,但是a还是tensor - numpy–>tensor:
c=torch.from_NumPy(b)
c是tensor - tensor–>list :
tensor.tolist()
- list–>tensor:
torch.tensor(list)
- 单个元素的张量
x
转换为int:x.item()
因为支持自动梯度功能,PyTorch的变量来自包torch.autograd
1.向量操作
向量生成
a=torch.linspace(1.0,10.0,4)
#(起点,终点,分成几份)a=torch.arange(1,5)
# [1,2,3,4]
向量拼接
b=torch.cat([v1,v2,v3])
# 小括号套中括号
元素计数
x=torch.numel(a)
逐元素加减乘 +/-/*
向量乘除标量 torch.div(a,2)
2.矩阵操作
torch.zeros(3,3,3)
# 几个数就是几维,直接传数就行
torch.ones_like(a)
#仿照现有矩阵的形状生成全0或全1的矩阵
torch.eye(3)
# 生成3*3的单位矩阵(对角线为1)
torch.t(a)
# 矩阵转置
*
# 相同形状的矩阵对应元素相乘
torch.mm(a1,a2)
/torch.matmul(a1,a2)
/a1@a2
# 矩阵点积/乘法
torch.det(a)
# 求行列式的值
torch.inverse
# 矩阵求逆
torch.cat([a1,a2],0)
# 矩阵拼接,0上下,1左右
3.张量操作
- 改变形状
a.view(5,5)
# 直接传数就行a.view(5,-1)
,保证5行就行
- 张量拼接
torch.cat([a1,a2],2)
- 对于需要拼接的张量,维度数量必须相同,进行拼接的维度的尺寸可以不同,但是其它维度的尺寸必须相同。