速学10分钟让你了解PyTorch框架(附代码)
Posted Major术业
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了速学10分钟让你了解PyTorch框架(附代码)相关的知识,希望对你有一定的参考价值。
导 读
由于使用了强大的GPU加速的Tensor计算(类似numpy)和基于tape的autograd系统的深度神经网络,PyTorch成为了深度学习者们口中的新流行框架。许多新的论文在发表过程中都加入了PyTorch代码。本文作者10分钟带你了解PyTorch代码。
#小M说#
【作者】Hamidereza saghir
【编译】小M
本文共 1141 字,阅读需 10 分钟
PyTorch 构 成
PyTorch由以下4个主要包组成:
1)Torch:一个类似于Numpy的通用数组库,可以将张量类型转换为(torch.cuda.TensorFloat)并在GPU上进行计算;
2)torch.autograd:用于构建计算图形并自动获取梯度;
3)torch.nn:具有共同层和成本函数的神经网络库;
4)torch.optim:具有通用优化算法(如SGD,Adam等)的优化包。
你可以这样导入PyTorch:
PyTorch 特 点
1. torch数组取代numpy ndarray ,可在GPU支持下提供线性代数
PyTorch提供了一个像Numpy数组一样的多维数组。当数据类型转换为三维数组(torch.cuda.TensorFloat)时即可以在GPU上进行处理,这个数组及它的关联函数都是一般的科学计算工具。这极大的提高了GPU的利用效率。
大家可以比较Torch和numpy并了解它们之间的关系。
2. torch.autograd可以生成一个计算图 ,自动计算梯度
autograd包提供了定义计算图的能力,这使得我们可以自动计算渐变梯度。在计算图中,一个节点是一个数组,边(edge)是on数组的一个操作。
要做一个计算图,我们需要(torch.aurograd.Variable())函数中打包数组来创建一个节点。我们对这个节点上所做的所有操作都将被定义为边,它们将成为计算图中新的节点。图中的每个节点都有一个(node.data)属性,它是一个多维数组和一个(node.grad)属性,这是相对于一些标量值的梯度(node.grad也是一个.Variable()) 。在定义计算图之后,我们可以使用单个命令(loss.backward())来计算图中所有节点的损耗梯度。
使用torch.autograd.Variable()将张量转换为计算图中的节点。
使用x.data访问其值。
使用x.grad访问其梯度。
在.Variable()上执行操作,绘制图形的边缘。
3. torch.nn包含多种NN层(张量行的线性映射)+(非线性)
torch.nn是高级神经网络库,帮助构建神经网络计算图,避免手动操纵张量和参数的麻烦。
torch.nn抽象出了神经网络层中的所有参数处理,在使用一些命令(如torch.nn.conv)时能够更容易地定义NN。这个包也带有流行的损失函数的功能(如torch.nn.MSEloss)。我们首先定义一个模型容器,例如使用(torch.nn.Sequential)的分层序列模型,然后在序列中列出我们期望的层。这个高级神经网络库也可以处理其他的事情,我们可以使用(model.parameters())访问参数(Variable())。
我们还可以通过子类(torch.nn.Module)定义自定义层,并启用(forward())函数:(Variable())作为输入,并产生(Variable())作为输出。我们也可以通过定义一个时间变化的层来做一个动态网络。
定义自定义层时,需要启用2个函数:
_ init_函数必须始终被继承,然后层的所有参数必须在这里定义为类变量(self.x)
正向函数是我们通过层传递输入的函数,使用参数对输入进行操作并返回输出。输入需要是一个autograd.Variable(),以便pytorch可以构建图层的计算图。
5.torch.optim可以做优化
最后一个特色是与NN库一起工作的优化软件包(torch.optim)。该库包含复杂的优化器,如Adam,RMSprop等。我们可以使用torch.nn构建一个nn计算图,用torch.autograd来计算梯度,然后将它们提供给torch.optim来更新网络参数。
我们定义一个优化器并传递网络参数和学习率(opt =torch.optim.Adam(model.parameters(),lr = learning_rate)),然后我们调用(opt.step())对我们的参数进行近一步更新。
建立神经网络很容易,但是如何协同工作并不容易。下面的示例表明了如何协同工作:
【附:相关推荐】
1.
2.
3.
4.
以上是关于速学10分钟让你了解PyTorch框架(附代码)的主要内容,如果未能解决你的问题,请参考以下文章
强大的PyTorch:10分钟让你了解深度学习领域新流行的框架