一、Tensor

目录

一、什么是pytorch

二、tensor(张量)

1、定义

2、tensor的维度(秩)rank/order

3、tensor的属性

4、创建tensor并更改数据类型

  1、随机创建

  2、全0的tensor

 3、全1的tensor

  4、自定义数值和维度

5、tensor中的方法和变量

  1、查看定义的tensor有哪些操作

  dir(x)

  2、查看tensor和查看具体数据

  3、查看梯度和梯度方法

  4、查看形状/修改/大小

           5、查看并修改数据类型

  6、四则运算

  7、切片操作

  8、tensor和numpy之间的数据类型转换

三、GPU和CPU之间的转换

1、转化到GPU上操作

2、转化到CPU上


一、什么时pytorch

PyTorch是一个基于python的科学计算框架,有以下特点:

(1)类似于Numpy(做矩阵及高维矩阵运算的库),但可以使用GPU

(2)可以用它定义深度学习模型,剋灵活的进行深度学习模型的训练和使用

二、tensor(张量)

1、定义

Tensor实际上就是一个多维数组(multidimensional array),其目的能够创造更高维度的矩阵、向量。

2、tensor的维度(秩)rank/order

     Rank为0、1、2时分别称为标量、向量和矩阵,Rank为3时是3阶张量,Rank大于3时是N阶张量。这些标量、向量、矩阵和张量里每一个元素被称为tensor element(张量的元素),且同一个张量里元素的类型是保持一样的。

3、tensor的属性

1.数据类型dtype d是data的首字母,type是类型的意思。tensor里每一个元素的数据类型是一样的。类似于Numpy中ndarray.dtype。pytorch里的数据类型可以有很多种,比方说torch.float32就是32位的浮点数,torch.int8就是8位的整型,torch.unit8就是8位的无符号整型,torch.string为字符串等等。 
2.形状Shape 类似于Numpy中ndarray.shape,比方说一个2行3列的二维矩阵,他的形状就是2行3列。 
3.其他属性 device是tensor在哪个设备上被计算出来的,graph是tensor所属的图,name是tensor的名字 ,op是operation的缩写是产生这个tensor的操作运算,对应图上的结点,这些结点接收一些tensor作为输入并输出一些tensor。还有等等属性,可以查阅官网。 

4、创建tensor并更改数据类型

Jupyter->tensor.py

***************加载包:import torch********************

********默认数据类型为float32,用.dtype查看********

  1、随机创建

(1)x=torch.empty(5,3):创建5行3列的张量,2维,数字为极小/极大的随机数

(2)x=torch.rand(5,3,2):创建3为维张量,为[0,1)之间的随机数(即从均匀分布中取数)

(3)x=torch.rand(5,3):返回一个张量,包含了从标准正态分布(均值为0,方差为1,即高斯白噪声)中抽取的一组随机数。张量的形状由参数sizes定义。

(4)y=torch.rand_like(x):生成与x形状相同的随机数。

  2、全0的tensor

(1)x=torch.zeros(5,3):创建2维矩阵,数据为0,x.dtype查看数据类型

(2)x=x.new.zeros(5,3):创建一个与x相似的,用0 填充的tensor,shape/size自己定义。

(3)y=torch.zeros_like(x):生成与x形状相同,且都为0填充的tensor

 3、全1的tensor

(1)x=torch.ones(5,3):创建2维矩阵,数据全为1,x.dtype查看数据类型

(2)x=x.new.ones(5,3):创建一个与x相似的,用1 填充的tensor,shape/size自己定义。

(3)y=torch.ones_like(x):生成与x形状相同,且都为1填充的tensor

  4、自定义数值和维度

(1)x=torch.tensor([5,3]):自定义一个数值为5和3,形状1行2列的2维矩阵

(2)a=torch.tensor([[5,3],[4,2]]):自定义形状维(2,1,2)的3阶tensor

5、tensor中的方法和变量

  1、查看定义的tensor有哪些操作

  dir(x)

  2、查看tensor和查看具体数据

(1)查看tensor:print(x)/print(x.data)  返回:tensor(   )

(2)查看tensor具体数值(当tensor中只有一个数据的时候才能用):print(x.item())  返回:数据或者一个n阶矩阵

  3、查看梯度和梯度方法

             x.grad

            x.grad_fn

  4、查看形状/修改/大小

(1) 查看形状:x.shape;x.size

(2)重新定义/修改形状:x=x.zeros(4,4)  y=x.view(16)#将x变为一个具有16个数据的向量,并赋值给y;重新定义的尺寸大小乘积必须和元次村大小乘积相同。即4*4(x的尺寸大小乘积)=16(y的尺寸大小乘积)

  5、查看并修改数据类型

(1)查看数据类型:x.dtype,默认为float32

(2)修改数据类型:x=torch.randn(5,3,dtype=int)

                                  x=torch.randn(5,3).long()//修改成long数据类型

  6、四则运算

(1)加法:x+y;torch.add(x,y);y.add(x)#此运算改变是在y上做修改,不再额外开辟内存空间存放加和后的数据。必须是同尺寸的tensor才可以做加法运算。

********各种类似numpy的indexing都可以在pytorch tensor上使用*********

  7、切片操作

x[:,1:]:所有行都留下,从第1列向后都留下

  8、tensor和numpy之间的数据类型转换

********a和b在这期间是共享内存的,改变a的值,b的值也会发生改变********

(1)将tensor转化维numpy array类型:用a中的numpy()方法即可

                    a=torch.ones(5,3)

                    b=a.numpy()

(2)将numoy转为tensor类型:

                   import numpy  as np

                   a=np.ones(5,3)

                   b=torch.from_numpy(a)

三、GPU和CPU之间的转换

1、转化到GPU上操作

(1)device直接定义

(2).to("GPU")方法

(3)把整个模型都变成cuda model=model.cuda()

if torch.cuda.is_available():
    d=torch.device("cuda")#定义GPU设备
    y=torch.ones_like(x,device=d)#device直接定义设备维GPU
    x=x.to(d)#使用.to("GPU")方法
    z=x+y
    print(z.to("CPU",torch.double))

2、转化到CPU上

********numpy类型的数据只能在CPU上做运算,所以如果想做numpy有关的方法必须先转化到CPU上*********

(1).to("CPU)

 

        

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值