PyTorch :基于python的开源深度学习框架

更新时间:2024-09-21 00:09

PyTorch是一个基于Torch库的开源Python机器学习库,主要应用于人工智能领域,如计算机视觉和自然语言处理。它由Meta Platforms的人工智能研究团队开发,现属于Linux基金会项目。PyTorch既可以看作加入了GPU支持的numpy,同时也可以看成一个拥有自动求导功能的强大的深度神经网络。除了Facebook外,它已经被Twitter、CMU和赛富时等机构采用。PyTorch提供了两个高级特性:动态计算图和自动求导。它还被用于许多深度学习软件的开发,包括特斯拉自动驾驶、优步的Pyro、Hugging Face的Transformers、PyTorch Lightning和Catalyst等。

历史沿革

PyTorch最初由Facebook的人工智能研究团队开发,经过多年的发展,目前已经成为了最热门的深度学习框架之一。PyTorch的前身是Torch,其底层和Torch框架一样,但是使用Python重新写了很多内容,不仅更加灵活,支持动态图,而且提供了Python接口。它是由Torch7团队开发,是一个以Python优先的深度学习框架,不仅能够实现强大的GPU加速,同时还支持动态神经网络。2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyTorch。

它是一个基于Python的可续计算包,提供两个高级功能:

1、具有强大的GPU加速的张量计算(如numpy)。

2、包含自动求导系统的深度神经网络。2022年9月,马克·扎克伯格亲自宣布,PyTorch 基金会已新鲜成立,并归入 Linux 基金会旗下。

版本更新

2020年1月,PyTorch迎来了最新的1.4版。更新的重点是增加了很多重要的新特性,包括给用户提供Build级别的移动端定制化支持、增加分布式模型并行训练、让Java程序能够运行TorchScript等。此外还有JIT、C++、分布式训练、Eager前端、PyTorch Mobile等方面的功能改进和Bug修复。值得注意的是,本次PyTorch更新是最后一个支持Python2的版本,同时也是最后一个支持C++11的版本。官方提示说,用户应当开始迁移到Python,并使用C++14开始编译工作。继TensorFlow更新后,PyTorch也迎来了最新的 1.4 版。本次更新的重点是增加了很多重要的新特性,包括给用户提供Build级别的移动端定制化支持、增加分布式模型并行训练、让Java程序能够运行TorchScript等。此外还有JIT、C++、分布式训练、Eager前端、PyTorch Mobile等方面的功能改进和Bug修复。本次PyTorch 更新是最后一个支持Python2的版本,同时也是最后一个支持C++11的版本。官方提示说,用户应当开始迁移到Python,并使用C++14开始编译工作。

运行环境

PyTorch已兼容Windows(CUDA,CPU)、Mac OS(CPU)、Linux(CUDA,ROCm,CPU)。

优点

PyTorch是相当简洁且高效快速的框架,设计追求最少的封装,设计符合人类思维,它让用户尽可能地专注于实现自己的想法。与谷歌TensorFlow类似,FAIR的支持足以确保PyTorch获得持续的开发更新。PyTorch作者亲自维护的论坛供用户交流和求教问题,入门简单。

基础环境

一台PC设备、一张高性能英伟达显卡(可选)、Ubuntu系统。

环境搭建

安装Pytorch。PyTorch的安装十分简单,根据PyTorch官网,对系统选择和安装方式等灵活选择即可。这里以anaconda为例。Pytorch的安装经过了几次变化,请大家以官网的安装命令为准。另外需要说明的就是在1.2版本以后,Pytorch只支持cuda 9.2以上了,所以需要对cuda进行升级,部分显卡都可以用,包括笔记本的MX250也是可以顺利升级到cuda 10.1。此处使用Conda包管理器。注意:如果使用镜像站,请删除“-c pytorch”;安装CUDA(即GPU)版本时注意安装CUDNN运行库。验证输入Python 进入。配置Jupyter Notebook。新建的环境是没有安装安装ipykernel的所以无法注册到Jupyter Notebook中,所以先要准备环境。下一步:定制 Jupyter Notebook。打开文件,修改。测试。至此,Pytorch 的开发环境安装完成,可以在开始菜单中打开Jupyter Notebook 在New 菜单中创建文件时选择Pytorch for Deeplearning 创建PyTorch的相关开发环境了。

PyTorch tensors

PyTorch定义了一个名为张量(torch.Tensor) 的类别来储存和操作同构多维矩形数字阵列。 PyTorch张量与numpy阵列类似,但也可以在支援 CUDA 的 英伟达 GPU 上运作。 PyTorch 也一直在开发对其他 GPU 平台的支持,例如 AMD 的 ROCm 和 Apple 的Metal Framework。张量是 PyTorch 中的核心数据抽象,PyTorch 支援各种张量子类型。通常地,一维张量称为向量(vector),二维张量称为矩阵(matrix)。张量的数据类型包括:torch.bool、torch.int8、torch.uint8、torch.int16、torch.int32、torch.int64、torch.half、torch.float、torch.double、torch.bfloat。

PyTorch神经网络

神经网络由对数据执行操作的层/模块组成。 torch.nn 命名空间提供了使用者需要的所有构建块来构建自己的神经网络。PyTorch 中的每个模块都对应nn.模块。 神经网络本身是由其他模块(层)组成的模块。这种嵌套结构允许使用者轻松构建并管理复杂的架构。神经网络中的许多层都是参数化的,即具有相关的权重以及在训练期间优化的偏差。自动子类化跟踪模型对象中定义的所有字段,并生成所有参数可使用模型或方法访问。激活函数torch.nn.Module具有封装所有主要内容的对象激活功能,包括 ReLU 及其许多变体、Tanh、 Hardtanh、sigmoid 等。PyTorch模型常见图层类型包括线性层、卷积层和循环层。线性层是最基本的神经网络层类型,卷积层旨在处理高度空间相关性,循环层适用于顺序数据。

参考资料

PyTorch 1.4最新版放出:支持Python2的最后一版,支持分布式模型并行、Java程序、移动端等多项新功能.机器之心-新浪网.2022-02-07

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}
友情链接: