一些散碎的Pytorch笔记(张量操作)

广义的张量可以是任何维度的,而狭义来说,一维是向量,二维是矩阵,三维及以上是张量。

  • 创建张量: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)
    • 对于需要拼接的张量,维度数量必须相同,进行拼接的维度的尺寸可以不同,但是其它维度的尺寸必须相同。

猜你喜欢

转载自blog.csdn.net/codelady_g/article/details/124992716
今日推荐