1. PyTorch是什么?

news2024/11/18 23:50:05

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

参考

  • https://pyimagesearch.com/2021/07/05/what-is-pytorch/
  • https://pytorch.org/get-started/locally/
  • Windows 支持的PyTorch https://download.pytorch.org/libtorch/cpu/libtorch-win-shared-with-deps-1.11.0%2Bcpu.zip

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/163610.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ArcGIS10.2保姆式安装教程,超详细;附安装包

安装前请关闭杀毒软件,系统防火墙,断开网络连接 参考链接:请点击 下载链接: 通过百度网盘分享的文件:ArcGIS10.2zip 链接:https://pan.baidu.com/s/1s_xc1HvmMdo4fnnUo97ldA 提取码:v74k 复制这段内容打开「百度网盘A…

2022年11月下午案例分析真题及答案解析

试题一(共15分)(202211) 阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。 【说明】 随着新能源车数量的迅猛增长,全国各地电动汽车配套充电桩急速增长,同时也带…

2023年网络安全比赛--Linux系统渗透提权中职组(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 1.使用渗透机对服务器信息收集,并将服务器中SSH服务端口号作为flag提交; 2.使用渗透机对服务器信息收集,并将服务器中主机名称作为flag提交; 3.使用渗透机对服务器信息收集,并将服…

数据科学家必备的 3 个 Jupyter Notebook 扩展

如果您是数据科学家、机器学习工程师或任何其他类型的数据专业人员,您可能已经花了很多时间使用 Jupyter 笔记本。虽然 Jupyter notebooks 已经是一个强大的工具,但还有许多扩展可以进一步增强您的体验。 在本文中,我们将向您介绍三个最有用…

活动星投票创心服务网络评选微信的投票方式线上免费投票

“创心服务”网络评选投票_视频投票评选小程序_线实时投票小程序_微信投票链接创建现来说,公司、企业、学校更多地想借助短视频推广自己。通过微信投票小程序,网友们就可以通过手机拍视频上传视频参加活动,而短视频微信投票评选活动既可以给用…

表单验证的简单实现

表单验证一. 作用二. 需求三. 实现需求一:HTML:JavaScript:需求二:JavaScript:一. 作用 如果没有表单验证,错误的数据就会发往服务端,会造成服务端压力过大; 所以在前端对数据进行过…

ArcGIS基础实验操作100例--实验98计算上游集水区污染值

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 空间分析篇--实验98 计算上游集水区污染值 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff0…

【阶段三】Python机器学习28篇:机器学习项目实战:KMeans算法的基本原理与KMeans聚类分群模型

本篇的思维导图: KMeans模型 KMeans算法的基本原理 KMeans算法名称中的K代表类别数量,Means代表每个类别内样本的均值,所以KMeans算法又称为K-均值算法。KMeans算法以距离作为样本间相似度的度量标准,将距离相近的样本分配至同一个类别。样本间距离的计算方式可以是…

QListWidget 自定义 item的图标和文字的位置

目录前言思路一思路二思路二缺陷思路三思路四前言 楼主并没有完整的解决这个问题,如果你是着急寻找解决方案的就可以划走了,如果你对楼主的解决思路有兴趣,那么可以继续向下阅读。首先需求是可以控制QListWidgetItem的icon和text x轴的位置&…

【树】树、二叉树的基础知识

树定义:树是n(n≥0)个结点的有限集合T。当n0时,称为空树;当n>0时,该集合满足如下条件: (1) 其中必有一个称为根(root)的特定结点,它没有直接前驱&#xff…

基于javaweb jsp+servlet学生宿舍管理系统

基于javaweb jspservlet学生宿舍管理系统 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 …

Mysql入门技能树-时间日期函数(一)-练习篇

DAY Joe 需要从日期中提取当天是几号,下列哪些函数可以实现这个功能? 1.DAY 2.DAYOFMONTH 3.DAYOFYEAR 4.TO_DAYS 答案是:C SELECT DAY(2023-02-14)SELECT DAYOFMONTH(2023-02-14)结果都是14 -- 返回 d 是一年中的第几天,范围…

【学习笔记】【Pytorch】九、非线性激活

【学习笔记】【Pytorch】九、非线性激活学习地址主要内容一、前言二、Pytorch的非线性激活三、nn.ReLU类的使用1.使用说明2.代码实现二、nn.Sigmoid类的使用1.使用说明2.代码实现学习地址 PyTorch深度学习快速入门教程【小土堆】. 主要内容 一、前言 我们知道人类大脑中的神…

【RabbitMQ】基础篇,学习纪录+笔记

目录 一.介绍 1.1MQ概述 1.2MQ优势和劣势 1.3常见的 MQ 产品 1.4RabbitMQ简介 1.5RabbitMQ中的相关概念 1.6RabbitMQ的安装 二.快速入门 2.1入门程序 2.2工作模式 2.2.1Work queues 工作队列模式 2.2.2Pub/Sub 订阅模式 2.2.3Routing 路由模式 2.2.4Topics 通配符…

vite 4.0 来了,带你手撕 create-vite 源码

通过本文你将了解到以下内容: 1,npm create 具体执行流程2,minimist、prompts、kolorist三个库3,create-vite 的源码分析 vite源码下载: //复制一份vite源码到自己的本地 git clone https://github.com/vitejs/vit…

抗击洪涝灾害,河道水雨情动态在线监测解决方案

一、项目背景我国是个多山的国家且位于东南季风区,降雨分布广泛还分布不均匀,这样一来使汛期高度集中。导致很多沿海城市以及临近河道的地区面临着河道决堤的威胁如何实时监测河道雨水情动态成了让人头疼的问题。在2022年1月,发改委、水利部在…

基于jsp+mysql+Spring的SpringBoot招聘网站项目(完整源码+sql)

基于jspmysqlSpring的SpringBoot招聘网站项目(完整源码sql)主要实现了管理员登录,简历管理,问答管理,职位管理,用户管理,职位申请进度更新,查看简历 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀…

Exchanges

文章目录ExchangesExchanges的类型FanoutDirectTopicExchanges (交换机)RabbitMQ 消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列。 Exchanges的类型 直接(direct),主题(topic),标题(headers),扇出(fanout)&…

硅烷聚乙二醇硅烷,Silane-PEG-Silane同官能团科研试剂,化学结构式

产品名称:硅烷聚乙二醇硅烷,双硅烷聚乙二醇 中文别名:硅烷PEG硅烷,双硅烷聚乙二醇 英文名称:Silane-PEG-Silane 分子量:1k,2k,3.4k,5k,10k,20k…

面对一堆烂代码,重构,还是重新开发?

hello,大家好,我是张张,「架构精进之路」公号作者。 1、烂代码的形成 写烂代码很容易,但代码写成一坨屎,还能正常运行,那就要有点水平才行。 尤其是一些经验不足的新手,根本不在乎代码质量的重要…