1. PyTorch是什么?

2023-11-04

这篇博客将介绍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的发布,这有所降低但它仍然值得一提。

参考

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1. PyTorch是什么? 的相关文章

随机推荐

  • 如何用python调用webservice接口

    最近项目需要去调用其他平台接口 接口类型为webservice接口 跟经常用的http请求还不一样 然后就找到python的suds三方包 以下为根据号码查询归属地接口进行测试和举例 安装suds三方包 命令行 pip3 install s
  • VSCode 的 Local History插件使用

    VSCode 的 Local History 插件使用 在使用vscode编写代码的时候 往往需要查看历史的修改记录 这时可以安装 Local History 插件 安装成功之后 关闭 vscode 然后重新启动就可使用 在左下角可以看到
  • linux 查找安装包路径,查看yum安装软件包的路径

    Linux系统下查找安装包所在目录的方法 linux中查看软件文件安装路径 Linux查看软件安装路径 linux查找安装包路径 rpm查找安装包路径 rpm rpm qa grep php fpm rpm ql php73 php fpm
  • python的struct模块

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 了解c语言的人 一定会知道struct结构体在c语言中的作用 它定义了一种结构 里面包含不同类型的数据 int char bool等等 方便对某一结构对象进行处理 而在网络
  • oshi - 服务器及应用监控库 - 简介与使用

    by Claudia 文章目录 简介 特性 相关资料 运行 具体使用 源码分析 SetCpuInfo SetMemInfo SetSysInfo SetJvmInfo SetSysFiles Why oshi 竞品分析 总结 简介 oshi
  • el-form表单中不同数据类型对应的时间格式化和校验规则

    1 在表单中 当选择不同的数据类型时 需要在下面选择时间时和数据类型对应上 通过监听数据类型的变化 给时间做格式化 2 但是当不按顺序选择数据类型后 再选时间可能会报错 所以需要在dom更新后 再清空表单 3 校验规则 结束时间需要大于开始
  • 2022-12-30 工作记录--React/JS-关闭一个弹窗后,根据需求判断是否继续弹出该弹窗

    React JS 关闭一个弹窗后 根据需求判断是否继续弹出该弹窗 一 实现效果 假如用户在 任务弹窗 同时完成了三个非签到任务 想要实现 当用户返回 首页 时 依次弹出对应完成的任务的 完成任务弹窗 如下图 二 实现代码 后端返的数据 接口
  • 模型集成(Model Ensemble)

    模型集成 Model Ensemble 模型集成是融合多个训练好的模型 基于某种方式实现测试数据的多模型融合 这样来使最终的结果能够 取长补短 融合各个模型的学习能力 提高最终模型的泛化能力 近年来 model ensemble已成刷榜神器
  • 计算机组成原理笔记01

    做题笔记1 学习内容 教材的思维导图 课后练习 计算部分 中国大学MOOC计算机组成原理 计算部分 1 教材的思维导图 2 课后练习P17 7 某计算机主频为1 2GHz 其指令分为4类 它们在基准程序中所占比例及CPI如表1 7所示 指令
  • Rancher应用商店的questions.yml接收数组参数

    背景 制作FlinkCluster的Chart包 要求应用商店界面输入接受数组参数 questions yml 是不支持这种形式的 解决方案 questions yml中的参数最终是以 set name value 的形式拼接到命令中的 h
  • m3u8 videojs 倍速播放属性

    var myVideo videojs myVideo bigPlayButton true textTrackDisplay false posterImage false errorDisplay false playbackRates
  • Elasticsearch-拼音分词/排序

    1 拼音分词器安装 1 1下载拼音分词插件 要和安装的es版本保持一致 我的版本是6 6 0 下载地址 https github com medcl elasticsearch analysis pinyin tree v6 4 0 1 2
  • C++学习难点1

    数据类型与表达式 1 运算符 1 1 自增自减运算符 int i 0 j j i 后置 i的值自增变为1 表达式i 的值为i自增之前的值 即j得值为0 j i 前置 i的值自增变为1 表达式i 的值为i自增之后的值 即j得值为1 注意 自增
  • UnityShader 模型空间转剪裁空间

    模型空间转剪裁空间 1 引入UnityCG cginc库 include Lighting cginc 2 使用UnityObjectToClipPos 方法 v2f vert a2v v v2f f f svPos UnityObject
  • IO流

    过滤器字节流 FilterInputStream 过滤器字节输入流 FilterOutputStream 过滤器字节输出流 它们的主要用于封装其他的输入输出流 为它们提供一些额外的功能 具有以下实现类 以下以FilterInputStrea
  • 【完全开源】小安派-KVM 三进一出切换器

    目录 一 概述 二 使用方法 2 1 连接 2 2 切换 2 3 掉电储存 三 控制原理 3 1 HIDMI控制 3 2 USB切换控制 3 3按键读取 四 资料 一 概述 AiPi KVM 是一款三进一出的HDMI USB的切换器 可以让
  • angular2单元测试学习

    单元测试简介 https segmentfault com a 1190000009737186 单元测试 Jasmine https segmentfault com a 1190000009737204 angular2单元测试 htt
  • What are you looking for on top of the world? English readings.

    Hillary and Tenzing are famous around the world for being the first people to climb Mount Everest in 1953 But few people
  • Windows server 2016——SQL server T-SQL查询语句

    作者简介 一名云计算网络运维人员 每天分享网络与运维的技术与干货 公众号 网络豆 座右铭 低头赶路 敬事如仪 个人主页 网络豆的主页 目录 写在前面 介绍 一 SQL简介 1 SQL和T SQL 2 T SQL的组成 二 使用T SQL语句
  • 1. PyTorch是什么?

    这篇博客将介绍PyTorch深度学习库 包括 PyTorch是什么 如何安装PyTorch 重要的PyTorch功能 包括张量和自动标记 PyTorch如何支持GPU 为什么PyTorch在研究人员中如此受欢迎 PyTorch是否优于Ker