包装机器

60分钟入门深度学习工具PyTorch

发布时间:2023/3/31 11:41:55   
白癜风能不能治好 http://pf.39.net/bdfyy/dbfzl/160319/4793225.html

「免费学习60+节公开课:投票页面,点击讲师头像」

作者

SoumithChintala

中文翻译、注释制作

黄海广

配置环境:PyTorch1.3,python3.7,

主机:显卡:一块ti;内存:32g(注:绝大部分代码不需要GPU)

目录

一、Pytorch是什么?二、AUTOGRAD三、神经网络四、训练一个分类器五、数据并行

一、PyTorch是什么

他是一个基于Python的科学计算包,目标用户有两类

为了使用GPU来替代numpy一个深度学习研究平台:提供最大的灵活性和速度

开始

张量(Tensors)

张量类似于numpy的ndarrays,不同之处在于张量可以使用GPU来加快计算。

from__future__importprint_function

importtorch

构建一个未初始化的5*3的矩阵:

x=torch.Tensor(5,3)

print(x)

tensor([[0.e+00,0.e+00,1.e-42],

[0.e+00,7.e-45,0.e+00],

[-3.e+35,7.e-43,0.e+00],

[0.e+00,1.e-40,0.e+00],

[-3.e+35,7.e-43,0.e+00]])

构建一个零矩阵,使用long的类型

x=torch.zeros(5,3,dtype=torch.long)

print(x)

tensor([[0,0,0],

[0,0,0],

[0,0,0],

[0,0,0],

[0,0,0]])

从数据中直接构建一个张量(tensor):

x=torch.tensor([5.5,3])

print(x)

tensor([5.,3.])

或者在已有的张量(tensor)中构建一个张量(tensor).这些方法将重用输入张量(tensor)的属性,例如,dtype,除非用户提供新值

x=x.new_ones(5,3,dtype=torch.double)#new_*methodstakeinsizes

print(x)

x=torch.randn_like(x,dtype=torch.float)#覆盖类型!

print(x)#result的size相同

tensor([[1.,1.,1.],

[1.,1.,1.],

[1.,1.,1.],

[1.,1.,1.],

[1.,1.,1.]],dtype=torch.float64)

tensor([[1.,-0.,-0.],

[-1.,0.,0.],

[1.,0.,1.],

[0.,-0.,-0.],

[0.,-0.,-1.]])

获取张量(tensor)的大小

print(x.size)

torch.Size([5,3])

**注意**

torch.Size实际上是一个元组,所以它支持元组的所有操作。

操作

张量上的操作有多重语法形式,下面我们以加法为例进行讲解。

语法1

y=torch.rand(5,3)

print(x+y)

tensor([[1.,-0.,-0.],

[-0.,1.,1.],

[2.,0.,2.],

[1.,-0.,0.],

[1.,-0.,-0.]])

语法二

print(torch.add(x,y))

tensor([[1.,-0.,-0.],

[-0.,1.,1.],

[2.,0.,2.],

[1.,-0.,0.],

[1.,-0.,-0.]])

语法三:

给出一个输出张量作为参数

result=torch.empty(5,3)

torch.add(x,y,out=result)

print(result)

tensor([[1.,-0.,-0.],

[-0.,1.,1.],

[2.,0.,2.],

[1.,-0.,0.],

[1.,-0.,-0.]])

语法四:

原地操作(in-place)

#把x加到y上

y.add_(x)

print(y)

tensor([[1.,-0.,-0.],

[-0.,1.,1.],

[2.,0.,2.],

[1.,-0.,0.],

[1.,-0.,-0.]])

注意

任何在原地(in-place)改变张量的操作都有一个_后缀。例如x.copy_(y),x.t_操作将改变x.

你可以使用所有的numpy索引操作。

你可以使用各种类似标准NumPy的花哨的索引功能

print(x[:,1])

tensor([-0.,0.,0.,-0.,-0.])

调整大小:如果要调整张量/重塑张量,可以使用torch.view:

x=torch.randn(4,4)

y=x.view(16)

z=x.view(-1,8)#-1的意思是没有指定维度

print(x.size,y.size,z.size)

torch.Size([4,4])torch.Size([16])torch.Size([2,8])

如果你有一个单元素张量,使用.item将值作为Python数字

x=torch.randn(1)

print(x)

print(x.item)

tensor([0.])

0.22171401

稍后阅读

这里:(

转载请注明:http://www.aideyishus.com/lktp/4036.html

------分隔线----------------------------