进行深度学习时您将需要的所有PyTorch功能。从实验/研究的角度来看。
PyTorch 已经成为现在创建神经网络的事实上的标准之一,我喜欢它的界面。但是,对于初学者来说,要获得它有些困难。
我记得几年前经过一些广泛的实验之后才选择PyTorch。实话实说,我花了很多时间才捡起来,但我很高兴我从Keras搬到 PyTorch。 凭借其高度可定制性和python语法, PyTorch可以与 他人一起工作,这是我的荣幸,我将其推荐给任何希望通过深度学习进行繁重工作的人。
因此,在本PyTorch指南中, 我将尝试减轻PyTorch对于初学者的痛苦,并介绍在使用Pytorch 创建任何神经网络时需要的一些最重要的类和模块。
但是,这并不是说它仅针对初学者,因为 我还将谈论 PyTorch提供的高可定制性,并谈论自定义的Layers,Datasets,Dataloaders和Loss函数。
张量是PyTorch的基本构建块,简单地说,它们是NumPy数组,但在GPU上。在这一部分中,我将列出一些在使用Tensors时可以使用的最常用的操作。这绝不是张量可以执行的详尽操作列表,但是在进行更令人兴奋的部分之前了解张量是有帮助的。
我们可以通过多种方式创建PyTorch张量。这包括从NumPy数组转换为张量。下面只是一个要点,下面是一些示例,但是您可以 像使用NumPy数组一样使用张量来做更多的事情。
同样,您可以对这些张量执行很多操作。
注意: 什么是PyTorch变量?在以前的Pytorch版本中,Tensor和Variables曾经是不同的,并且提供了不同的功能,但是现在不赞成使用Variable API ,并且所有用于Tensors的变量 方法都可以使用。因此,如果您不了解它们,那很好,因为它们不是必需的,如果您了解它们,则可以将它们忘记。
但是话又说回来,如果Pytorch没有提供很多现成的层,而这些层在各种神经网络体系结构中非常频繁地使用,则Pytorch不会被广泛使用。一些例子是:nn.Linear,nn.Conv2d,nn.MaxPool2d,nn.ReLU, nn.BatchNorm2d,nn.Dropout,nn.Embedding, ,, ,,,nn.GRU/nn.LSTMnn.Softmaxnn.LogSoftmaxnn.MultiheadAttentionnn.TransformerEncodernn.TransformerDecoder
在这里,我们定义了一个非常简单的网络,该网络接受大小为784的输入,并以顺序方式将其通过两个线性层。但是要注意的是,我们可以在定义前向通过时定义任何类型的计算,这使得PyTorch高度可定制以用于研究目的。例如,在疯狂的实验模式下,我们可能使用了以下网络,在该网络上我们任意附加了图层。在这里,我们在将输入再次添加回第二个线性层(跳过连接)之后,将输出从第二个线性层再次发送回第一个线性层。
我们还可以检查神经网络正向传递是否起作用。通常,我首先创建一些随机输入,然后将其通过我创建的网络进行传递。
Pytorch非常强大,您实际上可以使用自己创建任何新的实验层 nn.Module。例如,而不是使用预定义的线性层 nn.Linear。从Pytorch以上,我们可以已经创建了 定制线性层。
您将看到如何在中包装权重张量。nn.Parameter.这样做是为了使张量被视为模型参数。
参数是 Tensor子类,当与Module-一起使用时具有非常特殊的属性 -当将它们分配为模块属性时,它们会自动添加到其参数列表中,并将出现在 parameters()迭代器中。
稍后您将看到,model.parameters()迭代器将成为优化器的输入。但是稍后会更多。现在,我们现在可以在任何PyTorch网络中使用此自定义层,就像其他任何层一样。
但是话又说回来,如果Pytorch没有提供很多现成的层,而这些层在各种神经网络体系结构中非常频繁地使用,则Pytorch不会被广泛使用。一些例子是:nn.Linear,nn.Conv2d,nn.MaxPool2d,nn.ReLU, nn.BatchNorm2d,nn.Dropout,nn.Embedding,nn.GRU/nn.LSTM,nn.Softmax,nn.LogSoftmax,nn.MultiheadAttention,nn.TransformerEncoder,nn.TransformerDecoder
以上就是Torch的基础操作,下一篇文章会为同学们讲解卷积部分的操作。
领取专属 10元无门槛券
私享最新 技术干货