【Pytorch学习笔记(一)】张量的创建与访问

本文介绍了张量的基本概念,如何在PyTorch中使用各种数据类型创建张量,包括基本数据类型(如Byte、Char、Short、Int、Long、Float、Double)和特殊类型的张量,以及如何访问张量的特定部分。作者强调了张量在深度学习中的重要性和自己的学习笔记性质。
摘要由CSDN通过智能技术生成

一、张量的简介

张量(tensor)描述了与向量空间相关的集合之间的多重线性(multilinear)关系,它可以看作是向量(vector)的高阶一般化。事实上,标量(scalar)、向量和矩阵(matrix)可以看作是0-阶、1-阶和2-阶张量[1]。张量的概念和向量空间(vector space)的概念是密不可分的,也是深度学习要处理的对象如文本,图片等在计算机中的表示形式。因此,张量的创建与访问是学习Pytorch的第一步。

二、张量的创建[2]

(一)基本数据类型的张量创建

相信有一丢丢编程基础的同学就记得大多编程语言都有byte、char、short、int、long、float、double等基本数据类型,pytorch中可以创建以上基本数据类型的张量,其创建方式如下(以byte为例):

#创建一个两行三列的2-阶张量
byteA = torch.ByteTensor(2, 3)
#创建一个具体的两行两列的张量
byteB = torch.ByteTensor([[1,2],[2,3]])

1.char数据类型的张量的创建

创建一个有符号的8位整数型张量

#创建一个3-阶char张量
charA = torch.CharTensor(2, 3, 4)
#创建一个2-阶具体的char张量
charB = torch.CharTensor([[2, 3],[4,5]])

2.short数据类型的张量的创建

创建一个有符号的16位整数型张量

#创建一个2-阶short张量
shortA = torch.ShortTensor(3,4)
#创建一个3-阶具体的short张量
shortB = torch.ShortTensor([[[1,2],[3,4]],
                             [[5,6],[7,8]]])

3.int数据类型的张量的创建

创建一个有符号的32位整数型张量

#创建一个2-阶int张量
intA = torch.IntTensor(3,4)
#创建一个3-阶具体的int张量
intB = torch.IntTensor([[[1,2],[3,4]],
                             [[5,6],[7,8]]])

4.long数据类型的张量的创建

创建一个有符号的32位整数型张量

#创建一个2-阶long张量
longA = torch.LongTensor(3,4)
#创建一个3-阶具体的long张量
longB = torch.LongTensor([[[1,2],[3,4]],
                             [[5,6],[7,8]]])

5.float数据类型的张量的创建

创建一个32位浮点型张量

#创建一个2-阶float张量
shortA = torch.FloatTensor(3,4)
#创建一个3-阶具体的float张量
shortB = torch.ShortTensor([[[1.3,2.4],[3.5,4.3]],
                             [[5.1,6.5],[7.8,8.0]]])

6.double数据类型的张量的创建

创建一个64位浮点型张量

#创建一个2-阶double张量
doubleA = torch.DoubleTensor(3,4)
#创建一个3-阶具体的double张量
doubleB = torch.DoubleTensor([[[1.0,2.8],[3.9,4.0]],
                             [[5.21,6.0],[7.0,8.0]]])

(二)其它类型的张量创建

除基本数据类型外,pytorch还支持其它类型的张量诸如全零、全一、对角以及随机等张量的创建,它们的参数只能是张量的维数,不能是具体的张量,具体创建方法如下:

1.初始化一个空张量

#初始化一个3行3列的2-阶空张量
emptyA = torch.emptyt(3,3)

2.全零张量的创建

#创建一个3行3列的2-阶全零张量
zeroA = torch.zeros(3,3)

3.全一张量的创建

#创建一个4行5列的2-阶全一张量
oneA = torch.ones(4,5)

4.对角张量的创建

#创建一个5行5列的2-阶对角张量(注:只能创建2-阶对角张量)
eyeA = torch.eye(5,5)

5.随机张量的创建

#创建一个3维3行5列的3-阶随机张量
randomA = torch.randn(3,3,5)

6.随机向量(随机1-阶张量)的创建

#创建一个长度位5的1-阶随机张量
randpermA = torch.randperm(5)

7.均匀步长的向量(均匀步长的1-阶张量)的创建

#创建一个从1到10步长位2的1-阶张量
rangeA = torch.range(1,10,2)

三、张量的访问

有时我们需要张量中的一部分如某行或者某列进行数据运算。因此,掌握张量的访问是非常必要的,具体方法如下:

#创建一个2维3行4列char张量
charC = torch.CharTensor(2,3,4)
#访问第一个3行4列的2-阶char张量
print(charC[0,:,:])
#访问第二个2-阶张量的第一行
print(charC[1,0,:])
#访问第一个2-阶张量的第三列
print(charC[0,:,2])

写ZAI最后,本人纯深度学习小白,本博客仅用来记录学习用,理解与解释受限于博主水平并不完全正确,参考博文已在正文内标注,非常感谢,本人博文如有错误,还请各位大佬指正。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值