当前位置: 包装机器 >> 包装机器发展 >> 60分钟入门深度学习工具PyTorch
「免费学习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