1.pytorch是什么?(代码片段)

程序媛一枚~ 程序媛一枚~     2023-02-19     305

关键词:

这篇博客将介绍PyTorch深度学习库,包括:

  • PyTorch是什么
  • 如何安装PyTorch
  • 重要的PyTorch功能,包括张量和自动标记
  • PyTorch如何支持GPU
  • 为什么PyTorch在研究人员中如此受欢迎
  • PyTorch是否优于Keras/TensorFlow
  • 是否应该在项目中使用PyTorch或Keras/TensorFlow

1. PyTorch是什么

PyTorch是一个开源机器学习库,专门从事张量计算、自动微分和GPU加速(tensor computations, automatic differentiation, and GPU acceleration)。与Keras和TensorFlow竞争“最常用”深度学习包奖,PyTorch是最受欢迎的深度学习库之一。

PyTorch由于其python特性和易扩展性(即实现自定义层类型、网络架构等),在研究社区中尤其流行。
在这篇博客将讨论PyTorch深度学习库的基础知识。从下周开始,您将获得使用PyTorch训练神经网络、执行图像分类以及将对象检测应用于图像和实时视频的实际操作经验。

PyTorch基于Torch,这是Lua的科学计算框架。在PyTorch和Keras/TensorFlow之前,Caffe和Torch等深度学习软件包往往最受欢迎。随着深度学习开始彻底改变计算机科学的几乎所有领域,开发人员和研究人员希望有一个高效、易于使用的库来用Python编程语言构建、训练和评估神经网络。

Python和R是数据科学家和机器学习领域最流行的两种编程语言,因此研究人员自然希望在Python生态系统中使用深入学习算法。

2015年3月,谷歌人工智能研究员François Chollet开发并发布了Keras,这是一个开源库为训练神经网络提供了Python API。Keras很快受到欢迎,因为它易于使用的API模拟了scikit learn(Python的事实上的标准机器学习库)的工作方式。


2015年11月,谷歌发布了TensorFlow v1.x。TensorFlow不仅成为Keras库的默认后端/引擎,而且还实现了一些较低级别的功能,这些功能是高级深度学习从业者和研究人员创建最先进的网络和进行新颖研究所需的。然而,有一个问题-TensorFlow v1.x API不是很Pythonic,也不是很直观和易于使用。为了解决这个问题,2016年9月发布了由Facebook赞助、Yann LeCun(现代神经网络复兴的祖父之一,也是Facebook的人工智能研究员)支持的PyTorch。


PyTorch解决了研究人员对Keras和TensorFlow的许多问题。虽然Keras非常易于使用,但就其本质和设计而言,Keras并没有公开研究人员所需的一些低级功能和定制。另一方面,TensorFlow当然可以访问这些类型的函数,但它们不是Pythonic函数,而且通常很难梳理TensorFlow文档来找出所需的函数。简而言之,Keras没有提供研究人员所需的低级API,TensorFlow的API也不那么友好。

PyTorch通过创建一个Pythonic且易于定制的API解决了这些问题,允许实现新的层类型、优化器和新的体系结构。研究小组慢慢地开始接受PyTorch,从TensorFlow转变过来。这就是为什么今天有那么多研究人员在实验室里使用PyTorch的原因。
PyTorch1.x和TensorFlow2.x都实现了基本相同的功能,并提供了API和函数调用来完成相同的任务。

2. 如何安装PyTorch

pip install torch torchvision

python
>>> import torch
>>> torch.__version__
'1.8.1'
>>> 

3. 重要的PyTorch功能,包括张量和自动标记

PyTorch将数据表示为称为张量的多维、类似NumPy的数组。张量存储神经网络的输入、隐藏层表示和输出。

scalar、vector、matrix、tensor
0维标量、1维矢量、2维矩阵、3维/多维张量

PyTorch可以从张量动态生成一个图,然后在其上应用自动微分:

自动微分(torch.autograd)使得使用PyTorch训练神经网络变得非常容易:

  • 组装神经网络图
  • 执行向前传递(即进行预测)
  • 计算损失/错误
  • 向后遍历网络(即反向传播)并调整网络参数,以便(理想情况下)根据计算的损耗/输出做出更准确的预测

反向传播始终是手动执行的最繁琐和最耗时的步骤。幸运的是,PyTorch自动完成了这一步。

Keras用户通常调用model.fit而TensorFlow用户使用GradientTape类来训练网络。PyTorch要求手动实现训练循环,torch.autograd是一个巨大的帮助。感谢PyTorch开发人员实现了自动微分。

4. PyTorch如何支持GPU

PyTorch库主要支持基于NVIDIA CUDA的GPU。GPU加速可以在很短的时间内训练神经网络。
此外,PyTorch还支持分布式培训。

5. 为什么PyTorch在研究人员中如此受欢迎

2016年(PyTorch发布时)至2019年(TensorFlow 2.x正式发布之前),PyTorch在研究界站稳了脚跟。

PyTorch能够获得这一立足点的原因有很多,但主要原因是:

  • Keras虽然非常容易使用,但并没有提供研究人员进行新型深度学习研究所需的低级功能。同时Keras让研究人员很难实现自己的自定义优化器、层类型和模型架构
  • TensorFlow 1.x确实提供了这种低级访问和自定义实现;然而API很难使用,而且不是很Pythonic.
  • PyTorch尤其是其autograd支持,帮助解决了TensorFlow 1.x 的许多问题。使研究人员更容易实现自己的自定义方法。此外,PyTorch为深度学习实践者提供了对培训循环的完全控制。

事物都有俩面性,Keras使得使用单个模型调用来训练神经网络变得非常简单model.fit,类似于在scikit learn中训练标准机器学习模型的方式。缺点是研究人员无法(轻易)修改这个模型。所以必须使用TensorFlow的低级函数。但这些方法并不容易实施。

PyTorch解决了这个问题,从完全控制的意义上说,这是好的,但坏的是PyTorch可以轻松地击中自己的脚(以前每个PyTorch用户都忘记了将梯度归零)。

PyTorch 1.x和TensorFlow 2.x API实现了非常相似的特性,它们只是以不同的方式进行,有点像学习一种编程语言与另一种编程语言。每种编程语言都有其优点,但都实现了相同类型的语句和控件(即“if”语句、“for”循环等)。

6. PyTorch是否优于Keras/TensorFlow

Keras/TensorFlow有特定的用途,就像PyTorch一样。

就像不会笼统地说Java明显优于Python。在处理机器学习和数据科学时,有一个强有力的论据是Python优于Java。但是,如果打算开发在多个体系结构上运行的高可靠性企业应用程序,那么Java可能是更好的选择。

不要陷入关于PyTorch或Keras/TensorFlow是否“更好”的争论中——这两个库都实现了非常相似的功能,只是使用了不同的函数调用和不同的训练范式。
如果你是一个深度学习的初学者,只需选择一个并学习它。无论使用PyTorch还是Keras/TensorFlow,深度学习的基础都是一样的。

7. 是否应该在项目中使用PyTorch或Keras/TensorFlow

在Keras/TensorFlow和PyTorch之间进行选择并不需要做出笼统的陈述,例如:
如果在做研究,建议使用PyTorch。
如果是初学者,建议使用Keras。
如果正在开发行业应用程序,请使用TensorFlow和Keras。

PyTorch/Keras和TensorFlow之间的许多特性集是聚合的,它们都包含本质上相同的特性集,只是以不同的方式实现。

Keras最适合教授初露头角的深度学习实践者,Keras是快速构建和部署深度学习模型的最佳选择。
PyTorch确实让更高级的实践者更容易实现定制的培训循环、层类型和体系结构。随着TensorFlow 2.x API的发布,这有所降低但它仍然值得一提。

参考

pytorch的安装(非常详细)(代码片段)

文章目录1.pytorch的安装1.1环境配置1.2创建pytorch文件夹(环境)1.3查看pytorch历史版本1.4接下来有一个小技巧1.4.1清华源:1.4.2中科大源:1.5开始下载pytorch环境1.6验证pytorch安装成功1.7卸载pytorch环境1.8将pycharm的环境换成Anac... 查看详情

pytorch以及相关组件的安装(代码片段)

记录一下安装过程~~1.pytorch的安装近几年由于深度学习的普及,pytorch的安装已经十分方便了。进入官网链接点击getstarted第一项是pytorch的版本,选择stable11.1.0;第二项选择自己的操作系统;第三项选择自... 查看详情

pytorch基础-torch(代码片段)

一、张量数据类型1.1pytorch与python数据类型对比pythonpytorchIntIntTensorofsize()floatFloatTensorofsize()IntarrayIntTensorofsize[d1,d2,…]FloatarrayFloatTensorofsize[d1,d2,…]stringont-hotorEmbedding(Word2Vec,glove)由于PyTorch不是一个完备的语言库,它是面向数据计算... 查看详情

深度学习之30分钟快速入门pytorch(附学习资源推荐)(代码片段)

目录1、Pytorch简介1.0如何使用本教程1.1PyTorch由来1.2Torch简介1.3重新认识PyTorch1.4PyTorch和Tensorflow的对比1.5总结2、Pytorch环境搭建2.1安装Pytorch2.2配置JupyterNotebook2.3测试3、张量4、自动求导5、神经网络6、用cifar10训练一个分类器7、数据... 查看详情

pytorch实现线性回归(api完成)(代码片段)

PytorchAPI完成线性回归Pytorch完成基础的模型目标1.Pytorch完成模型常用API1.1nn.Module1.2优化器类1.3损失函数1.4线性回归完整代码2.在GPU上运行代码3.常见的优化算法介绍3.1梯度下降算法(batchgradientdescentBGD)3.2随机梯度下降法(St... 查看详情

datawhales深入浅出pytorch-第二章(代码片段)

【DataWhales】深入浅出Pytorch-第二章1.Pytorch的基本操作1.1建立tensor类型(2种方法)1.2tensor与numpy(array)之间的转换1.3tensor常见的构造函数(4个函数)2.Tensor的基本操作2.1查看tensor的维度信息(2种方式)2.2tensor... 查看详情

cuda+pytorch+pycharm+anaconda+opencv安装教程与环境配置(代码片段)

CUDA+pytorch安装教程与环境配置须知:CUDA只能在NVIDIA英伟达显卡上才可以用pycharm+Anaconda+OpenCV的安装见我写的另一篇文章:计算机视觉的第一步:Opnencv(一)之环境部署1基本须知1.1pytorch简介Pytorch是torc... 查看详情

datawhales深入浅出pytorch-第二章(代码片段)

【DataWhales】深入浅出Pytorch-第二章1.Pytorch的基本操作1.1建立tensor类型(2种方法)1.2tensor与numpy(array)之间的转换1.3tensor常见的构造函数(4个函数)2.Tensor的基本操作2.1查看tensor的维度信息(2种方式)2.2tensor... 查看详情

datawhales深入浅出pytorch-第二章(代码片段)

【DataWhales】深入浅出Pytorch-第二章1.Pytorch的基本操作1.1建立tensor类型(2种方法)1.2tensor与numpy(array)之间的转换1.3tensor常见的构造函数(4个函数)2.Tensor的基本操作2.1查看tensor的维度信息(2种方式)2.2tensor... 查看详情

pytorch分布式训练与断点续训(代码片段)

1.Pytorch分布式训练Pytorch支持多机多卡分布式训练,参与分布式训练的机器用Node表述(Node不限定是物理机器,还是容器,例如docker,一个Node节点就是一台机器),Node又分为MasterNode、SlaveNode,MasterNode只有一个,SlaveNode可以有多个... 查看详情

pytorch学习笔记:pytorch进阶训练技巧(代码片段)

PyTorch实战:PyTorch进阶训练技巧往期学习资料推荐:1.Pytorch实战笔记_GoAI的博客-CSDN博客2.Pytorch入门教程_GoAI的博客-CSDN博客本系列目录:PyTorch学习笔记(一):PyTorch环境安装PyTorch学习笔记(二)... 查看详情

pytorch分布式训练与断点续训(代码片段)

1.Pytorch分布式训练Pytorch支持多机多卡分布式训练,参与分布式训练的机器用Node表述(Node不限定是物理机器,还是容器,例如docker,一个Node节点就是一台机器),Node又分为MasterNode、SlaveNode,MasterNode只... 查看详情

pytorch学习笔记:模型定义修改保存(代码片段)

往期学习资料推荐:1.Pytorch实战笔记_GoAI的博客-CSDN博客2.Pytorch入门教程_GoAI的博客-CSDN博客本系列目录:PyTorch学习笔记(一):PyTorch环境安装PyTorch学习笔记(二):简介与基础知识PyTorch学习笔记&#... 查看详情

rnn架构解析gru模型&注意力机制(代码片段)

【NLP】GRU模型1.GRU模型1.1GRU的内部结构图和计算公式1.2Pytorch中GRU工具的使用1.3GRU的优缺点2.注意力机制2.1什么是注意力机制2.2注意力机制的作用2.3注意力机制实现步骤1.GRU模型学习目标了解GRU内部结构及计算公式.掌握Pytorch中GRU工... 查看详情

rnn架构解析gru模型&注意力机制(代码片段)

【NLP】GRU模型1.GRU模型1.1GRU的内部结构图和计算公式1.2Pytorch中GRU工具的使用1.3GRU的优缺点2.注意力机制2.1什么是注意力机制2.2注意力机制的作用2.3注意力机制实现步骤1.GRU模型学习目标了解GRU内部结构及计算公式.掌握Pytorch中GRU工... 查看详情

pytorch学习笔记:pytorch生态简介(代码片段)

PyTorch生态简介往期学习资料推荐:1.Pytorch实战笔记_GoAI的博客-CSDN博客2.Pytorch入门教程_GoAI的博客-CSDN博客本系列目录:PyTorch学习笔记(一):PyTorch环境安装PyTorch学习笔记(二):简介与基础知识Py... 查看详情

医疗图像领域的常见问题总结|笔记|2023-03-07(代码片段)

...理学习笔记深度学习模型的相关方法1深度监督1-1概念1-2PyTorch中的使用语法2自注意力机制张量2-1为什么在编码器阶段和解码器阶段的自注意力机制张量的数量不相等?3SAD损失函数3-1概念3-2为什么注意力图像机制中要计算SAD损... 查看详情

pytorch以及相关组件的安装(代码片段)

记录一下安装过程~~1.pytorch的安装近几年由于深度学习的普及,pytorch的安装已经十分方便了。进入官网链接点击getstarted第一项是pytorch的版本,选择stable11.1.0;第二项选择自己的操作系统;第三项选择自... 查看详情