本文主要是介绍【pytorch04】创建Tensor,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
numpy中的数据创建tensor
数据已经在numpy中了,将numpy中的数据转到tensor中来,因为我们将使用tensor在GPU上进行加速运算
从NUMPY导入的FLOAT其实是DOUBLE类型
list中的数据创建tensor
FloatTensor()和大写的Tensor()接收的是shape(即数据的维度),当让也可以接收现有的数据,
接收数据时必须用list表示,接收shape时不需要中括号的(2,3)
小写的tensor()接收的是现有的数据
建议使用小写的给现成的数据,使用大写的情况少用
生成未初始化的数据
-
Torch.empty()
-
Torch.FloatTensor(d1,d2,d3)
- Not torch.FloatTensor([1,2]) = torch.tensor([1,2])
-
Torch.IntTensor(d1,d2,d3)
加的都是shape
设置默认数据类型
pytorch的默认类型是FloatTensor
增强学习一般使用double,其他一般使用float
随机初始化
- [0,1] 均匀的采样在0~1之间
- [min,max)
- *_like
rand_like(a) 把a.shape读出来再送给random函数
randint(1,10,[3,3])第一个参数是最小值,第二个参数是最大值,第三个参数是shape
正态分布
- N(0,1)
- N(u,std)
randn(3,3) 初始化,均值为0方差为1,因此它的值可能会集中在0附近,会有一个方差为1的波动,基本在0的附近波动,因为方差比较大,所以会在一个大的范围之内跳动
torch.normal(mean=torch.full([10],0),std=torch.arange(1,0,-0.1))可以自定义均值和方差,例如要抽样3×3的正态分布的数据,先把3×3打平成9,再给出一个维度为9的list [9]的这样的均值mean,在给定一个维度为9的这样的方差std,因为3×3的tensor都是采样于同一个正态分布所以这9个数据所有的均值和方差都是一样的
torch.normal(mean=torch.full([10],0),std=torch.arange(1,0,-0.1))
full([10],0)是生成长度为10但是都为0这样的向量[0,0,0,0,0,0,0,0,0,0]
方差的话是从1到0慢慢的减小[1.0,0.9,0.8,0.7,0.6,0.5,0.4,0.3,0.2,0.1]arange不包含右边界也就是不包含0
生成的这个数据一共有十个方差,第一个方差会比比较大,所以跳动的返回比较大,后面会慢慢收敛
得到了一个dimension为1长度为10的tensor
可以用reshape改变形态
赋值为一个元素
设置为一个标量,dimension是0,所以给shape给一个空的例子就行[]
torch.full([],7)
如果要给一个dimension为1的向量,给一个括号括起来就行了
torch.full([1],7)
递增或递减生成等差数列
生成等分向量
linspace(0,10,steps=4) 这里的10是包含的,这里的steps是数量值,比如这里是4,就会把0到10等分成一个3.3,6.6,10这样的数列,可以这么认为0是开始的位置,所以还需要3个等分片段也就是将1~10这10个数字除以3,10/3=3.3333
logspace(0,-1,steps=10)0到-1之间切割成10份然后作为以10为底,指数部分为等分的指数
logspace的base参数可以设置为2,10,e等底数
生成全部是0或1或单位矩阵的tensor
生成随机打散的tensor
randperm(10)是生成0到10的索引不包含10
生成这个索引可以用来shuffle
有a和b的tensor,我们希望再dimension=0的维度上随机的shuffle,并且希望再shuffle的时候保持配对
比如说第一个tensor表示[人名,数学分数],第二个tensor表示人[人名,语文分数],因此shuffle的时候,可以在人这个维度上随机shuffle但是每个人的语文分数和数学分数必须匹配起来,因此我们需要用同一个索引来做shuffle
我们用索引的种子来做shuffle,如果是[0,1]的话就是维持不变,[1,0]的话就是第一个人和第二个人换一下位置,如果第一个人和第二个人换位置之后数学成绩反过来了,那语文成绩也要反过来
这篇关于【pytorch04】创建Tensor的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!