PyTorch | (1)初识PyTorch
介绍
PyTorch是一个非常有可能改变深度学习领域前景的Python库。我尝试使用了几星期PyTorch,然后被它的易用性所震惊,在我使用过的各种深度学习库中,PyTorch是最灵活、最容易掌握的。
PyTorch的概述
PyTorch的创始人说过他们创作的一个准则——他们想成为当务之急。这意味着我们可以立即执行计算。这正好符合Python的编程方法,不需要完成全部代码才能运行,可以轻松的运行部分代码并实时检查。对于我来说把它作为一个神经网络调试器是一件非常幸福的事。
PyTorch是一个基于Python的库,用来提供一个具有灵活性的深度学习开发平台。PyTorch的工作流程非常接近Python的科学计算库——numpy。
现在你可能会问,为什么我们要用PyTorch来建立深度学习模型呢?我可以列出三件有助于回答的事情:
·易于使用的API—它就像Python一样简单。
·Python的支持—如上所述,PyTorch可以顺利地与Python数据科学栈集成。它非常类似于numpy,甚至注意不到它们的差别。
·动态计算图—取代了具有特定功能的预定义图形,PyTorch为我们提供了一个框架,以便可以在运行时构建计算图,甚至在运行时更改它们。在不知道创建神经网络需要多少内存的情况下这非常有价值。
PyTorch的其他一些优点还包括:多gpu支持,自定义数据加载器和简化的预处理器。
自从1月发布以来,许多研究人员将其作为一种“go-to”库,因为它可以轻松地构建新颖的甚至是极其复杂的图形。虽说如此,PyTorch仍有一段时间没有被大多数数据科学实践者采用,因为它是新的而且处于“正在建设”的状态。
PyTorch基础概念
PyTorch 是一个建立在 Torch 库之上的 Python 包,旨在加速深度学习应用。
PyTorch 提供一种类似 NumPy 的抽象方法来表征张量(或多维数组,标量是零级张量、向量是一阶张量,矩阵是二阶张量),它可以利用 GPU 来加速训练。在神经网络中Torch可以替换Numpy。
而PyTorch相比TensorFlow,其最大的优点是建立的神经网络是动态的,相比静态的TensorFlow,它能更加有效地去处理一些问题,比如RNN变化时间长度的输出,TensorFlow相比PyTorch的有点在于分布式训练上。
Tensor和Numpy之间的转换(Numpy桥)
import torchimport numpy as npnp_data = np.arange(6).reshape((2, 3))torch_data = torch.from_numpy(np_data)tensor2array = torch_data.numpy()print('\nnumpy', np_data,'\ntorch', torch_data,'\ntensor2array', tensor2array)
运行结果:
numpy [[0 1 2][3 4 5]] torch tensor([[0, 1, 2],[3, 4, 5]], dtype=torch.int32) tensor2array [[0 1 2][3 4 5]]
张量
张量(Tensor)是线性代数中的一种数据结构,是向量和矩阵的推广,我们可以在张量上进行算术运算。
import torch x = torch.ones(2,3,4) print(x)
输出:
tensor([[[1., 1., 1., 1.],[1., 1., 1., 1.],[1., 1., 1., 1.]],[[1., 1., 1., 1.],[1., 1., 1., 1.],[1., 1., 1., 1.]]])
Tensor与numpy的Array之间的相互转换时,要时刻注意Tensor和numpy的Array共享潜在的内存,改变其中任一值,另外一个也会相应改变如果安装了GPU版(CUDA张量)的Pytorch,可将张量转移到GPU上进行计算,从而可以提高运算效率
参考资料
1.https://pytorch-cn.readthedocs.io/zh/latest/
2./
3./
4./p/c2671edcc27e
如果觉得《PyTorch | (1)初识PyTorch》对你有帮助,请点赞、收藏,并留下你的观点哦!