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