糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > PyTorch | (1)初识PyTorch

PyTorch | (1)初识PyTorch

时间:2020-02-14 06:26:28

相关推荐

PyTorch | (1)初识PyTorch

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》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。