Pytorch

一、pytorch张量数据类型:

1.python数据类型与pytorch数据类型的对应关系:

python                                           pytorch

Int                                                      IntTensor of size()

float                                                    FloatTensor of size()

Int array                                            IntTensor of size [d1,d2,.....]

Float array                                        FloatTensor of size[d1,d2,.....]

string                                                   pytorch没有内建string说明,只能用数字编码来表示

2.查看数据类型的方法:

a=torch.randn(2,3)

a.type()    type(a)    isinstance(a,torch.FloatTensor)

部署到gpu上则用a.cuda()可以把部署到cpu上的数据转化到gpu上

标量:torch.tensor(1.)

查看变量的维度:

a.shape     len(a.shape)   a.size,如果是标量那么就会返回0或者空

张量:

torch.tesnor([n,....])如:torch.tensor([1.1])或者torch.tensor([1.1,2.2])

torch.FloatTensor(1)----随机初始化1个1维的float类型的张量

torch.FloatTensor(2)---随机初始化1个2维的float类型的张量

data=np.ones(2)生成一个numpy的2维数据

ttorch,from_numpy(data)

dim是指维度或者长度rank

size/shape:是指具体的形状

a.size(0)/a.shape[0]是返回0维的参数以此类推

a.dim看数据的维度

a.numel---具体的数据量,元素个数

3.创建tensor对象

a.从nmpy导入数据

例如:a=np.array([2,3.3])

torch.from_numpy(a)

b.从list导入数据

torch.tensor([2.,3.2])/torch.FloatTensor([2.,3.2])/torch.tensor([2.,3.2],[1.,2.0])

注意:torch.Tensor()是接受数据的维度,与torch.FloatTensor()接收维度的效果类似,接收数据是用list,接收维度使用(2,3)

4.生成未初始化的数据:

a.torch.empty()----向内存申请空间,例如:torch.empty([2,3])----生成一个2行3列的未初始化的数据,其中并不是没有数据,而是数据以随机的数字给出

b.torch.FloatTensor(d1,d2,d3...)----内存空间没有初始化,只是作为内存的载体而已,后续会跟输入数据的步骤

c.torch.IntTensor(d1,d2,d3)---生成int类型的载体

使用torch.Tensor()来生成数据,产生数据类型是torch默认数据类型,默认类型为float,可以更改默认类型数据,torch.set_default_tensor_type(torch.DoubleTensor),增强学习中double类型的会用得多一些

5.随机初始化:

rand------使用随机的0-1不包括1的初始化,例如:a=torch.rand(3,3),x=10*torch.rand(d1,d2),randint只能采样整数

rand_like,例如:rand_like(a),把a的shape读出来以后再给rand_like函数

randint(1,10,[3,3])---1到10的整数不包括10,生成1个3*3的矩阵,第一个参数是最小值,第二个参数是最大值,第三个参数为一个shape

正太分布初始化:

torch.randn(3,3)------N(0,1)正太的均值分布,均值为0,方差为1

torch.normal(mean=torch,full([10],0),std=torch.arange(1,0,-0.1))

torch.full([2,3],7)-----full的意思就是fullall全部都是的意思,第一个参数是shape,如果给[0]的话,那么就是生成一个标量,如果给[1]的话就是一个向量只有1个元素

生成等差数列的api:

torch.arange(0,10)----生成从0开始不包含10的数列

torch.arange(0,10,2)----生成一个等差为2的数列,第三个参数为阶梯

生成等分数列api:

torch.linspace(0,10,steps=4)----第三个参数为数量,这里的10是包括进来的

torch.logspace(0,-1,steps=10)------log可以设置base为2、10、e为底数,就是10的0次方到10的-1次方之间的数,然后等差

torch.ones(3,3)----生成全部为1的3*3的矩阵

torch.zeros(3,3)----生成全部为0的3*3的矩阵

torch.eye(3,4)----生成单位矩阵

torch.one_like(变量)----把变量的shape读出来给torch.one来用

torch.randmperm----随机打散,例如:torch.randmperm(10)生成随机打散的0-10不包括10的数列

 

上一篇:关于 systemctl --user status 报错的问题


下一篇:pytorch 数据类型