一、前言??
?????????本科毕设的时候有使用过pytorch编写的yolov5代码做项目,但从来没有系统学习过这个深度学习框架的知识,这段时间系统的学习了pytorch的数据类型、切片、扩维等操作,为了防止忘记,再次记录一下。本文所学内容全部基于新加坡国立大学龙良曲老师的课程内容和自己的一些理解。?
? ? ? ? 声明:本文的相关表格来源于龙良曲老师的课件中。
二、数据类型
? ? ? ?如下表?torch所有的数据都是以Tensor(张量)的形式存在,包括有8位、16位、32位、64位的整型tensor与16位、32位、64位的浮点型tensor。但是torch是没有str类型的数据的。
?
?
?
?三、Tensor数据的生成与属性查看
1、数据生成
[In]:a=torch.tensor(1) #生成dim=0的标量
[Out]:tensor(1)
[In]:a=torch.tensor([1]) #生成dim=1,size=Size[1]的tenosr
[Out]:tensor([1])
[In]:a=torch.tensor([1,3,4]) #生成dim=1,size=Size[3]的tenosr
[Out]:tensor([1,3,4])
[In]:a=torch.tensor([[1,3,4]]) #生成dim=2,size=Size[1,3]的tenosr
[Out]:tensor([[1,3,4]])
[In]:a=torch.tensor([[1,3,4],[2,5,6]]) #生成dim=2,size=Size[2,3]的tenosr
[Out]:tensor([[1,3,4],[2,5,6]])
[In]:a=torch.randn(2,4,5,6) #随机生成 mean=0,std=1,dim=4,size=Size[2,4,5,6]的tenosr
[Out]:...
[In]:a=torch.rand(2,4,5,6) #作用同上,在0~1之间生成随机tenosr
[Out]:...
[In]:a=torch.zeros(2,3) #随机生成dim=2,size=Size[2,3]的全零tenosr
[Out]:tensor([[0,0,0],[0,0,0]])
[In]:a=torch.ones(2,3) #随机生成dim=2,size=Size[2,3]的全1 tenosr
[Out]:tensor([[1,1,1],[1,1,1]])
2、属性查看
a = torch.randn(2,3)
[In]:a.dim() #查看a tenosr的维数
[Out]:2
[In]:a.type() #查看a tensor的数据类型
[Out]:torch.FloatTensor
[In]:a.shape/a.size() #查看a tensor的形状/大小
[Out]:torch.Size([2,3])
[In]:a.numel()
[Out]:6 #6 = 2*3
四、总结
? ? ? ? Tensor与数组的生成较为相似,所以上手较为容易,本文主要介绍了pytorch最基本的数据知识,以上内容纯手打,如果有误,请指正。下文将介绍数据的索引与切片操作,我个人还是比较头疼这块内容的,不是特别熟练。翻过一座山又是一座山,下座山峰见。
|