广告
返回顶部
首页 > 资讯 > 后端开发 > Python >pytorch框架的详细介绍与应用详解
  • 138
分享到

pytorch框架的详细介绍与应用详解

pytorch框架介绍pytorch框架应用 2023-05-15 05:05:09 138人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录PyTorch框架的详细介绍与应用一.pytorch概述1.pytorch概念2.pytorch与Tensorflow的区别3.pytorch包含的内容二.pytorch常用模块

pytorch框架的详细介绍与应用

最近小阿奇在搭建模型的时候,发现pytorch框架十分的方便好用。所以特地整理了这个帖子,帮助自己捋一下思路打个基础,也方便大家交流学习。很用心的一篇博客哦~

一.pytorch概述

1.pytorch概念

Pytorch是torch的python版本,是由Facebook开源神经网络框架,专门针对 GPU 加速的深度神经网络(DNN)编程。Torch 是一个经典的对多维矩阵数据进行操作的张量(tensor )库,在机器学习和其他数学密集型应用有广泛应用。与Tensorflow的静态计算图不同,pytorch的计算图是动态的,可以根据计算需要实时改变计算图。

2.pytorch与tensorflow的区别

a.pytorch相对于tensorflow出现的较晚一些,主要是针对深度神经网络而开发出来,这几年发展也是十分不错;tensorflow出现的较早,它的优点是分布式计算,在面临较大数据时相对效率较高;
b.pytorch是动态框架,tensorflow是静态框架,主要区别就是静态框架在构建计算图的时候提前构建好,之后则无法改变,固定了计算的流程,势必带来了不灵活性,如果我们要改变计算的逻辑,或者随着时间变化的计算逻辑,这样的动态计算TensorFlow是实现不了的;而动态框架可以根据具体计算情况进行改变
c.tensorflow的库相对完备齐全,而pytorch还在完善中;所以tensorflow在可视化方面十分出色;
d.pytorch对Python十分友好,更加python化的框架,而tensorflow的话更加像独立的语言和框架

3.pytorch包含的内容

1. overview

pytorch 由低层到上层主要有三大块功能模块,如下图所示

1.1 张量计算引擎(tensor computation)
Tensor 计算引擎,类似 numpy 和 matlab,基本对象是tensor(类比 numpy 中的 ndarray 或 matlab 中的 array)。除提供基于 CPU 的常用操作的实现外,pytorch 还提供了高效的 GPU 实现,这对于深度学习至关重要。

1.2 自动求导机制(autograd)
由于深度学习模型日趋复杂,因此,对自动求导的支持对于学习框架变得必不可少。pytorch 采用了动态求导机制,使用类似方法的框架包括: chainer,dynet。作为对比,theano,tensorflow 采用静态自动求导机制。

1.3 神经网络的高层库(NN)
pytorch 还提供了高层的。对于常用的网络结构,如全连接、卷积、RNN 等。同时,pytorch 还提供了常用的、optimizer 及参数。

2. 自定义 Module

2.1 Function
Function 是 pytorch 自动求导机制的核心类。Function 是无参数或者说无状态的,它只负责接收输入,返回相应的输出;对于反向,它接收输出相应的梯度,返回输入相应的梯度。
2.2 Module
类似于 Function,Module 对象也是 callable ,输入和输出也是 Variable。不同的是,Module 是[可以]有参数的。Module 包含两个主要部分:参数及计算逻辑(Function 调用)。由于ReLU激活函数没有参数,这里我们以最基本的全连接层为例来说明如何自定义Module。

二.pytorch常用模块

名称作用
torch类似 NumPy 的张量库,强 GPU 支持 ;
torch.autograd基于 tape 的自动区别库,支持 torch 之中的所有可区分张量运行;
torch.nn为最大化灵活性未涉及、与 autograd 深度整合的神经网络库;
torch.optim与 torch.nn 一起使用的优化包,包含 SGD、RMSProp、LBFGS、Adam 等标准优化方式;
torch.multiprocessingpython 多进程并发,进程之间 torch Tensors 的内存共享;
torch.utils数据载入器。具有训练器和其他便利功能;
torch.legacy(.nn/.optim)处于向后兼容性考虑,从 Torch 移植来的 legacy 代码
torchvision独立于pytorch的关于图像操作的一些方便工具

和数值相关的

Tensor
Variable
Parameter

Tensor:
PyTorch中的计算基本都是基于Tensor的,可以说是PyTorch中的基本计算单元。

Variable:
Tensor的一个Wrapper,其中保存了Variable的创造者,Variable的值(tensor),还有Variable的梯度(Variable)。自动求导机制的核心组件,因为它不仅保存了 变量的值,还保存了变量是由哪个op产生的。这在反向传导的过程中是十分重要的。
Variable的前向过程的计算包括两个部分的计算,一个是其值的计算(即,Tensor的计算),还有就是Variable标签的计算。标签指的是什么呢?如果您看过PyTorch的官方文档 Excluding subgraphs from backward 部分的话,您就会发现Variable还有两个标签:requires_grad和volatile。标签的计算指的就是这个。

Parameter:
这个类是Variable的一个子集,PyTorch给出这个类的定义是为了在Module(下面会谈到)中添加模型参数方便。

模型相关的

Function
Module

Function:
如果您想在PyTorch中自定义OP的话,您需要继承这个类,您需要在继承的时候复写forward和backward方法,可能还需要复写__init__方法(由于篇幅控制,这里不再详细赘述如果自定义OP)。您需要在forward中定义OP,在backward说明如何计算梯度。
关于Function,还需要知道的一点就是,Function中forward和backward方法中进行计算的类型都是Tensor,而不是我们传入的Variable。计算完forward和backward之后,会包装成Varaible返回。这种设定倒是可以理解的,因为OP是一个整体嘛,OP内部的计算不需要记录creator

Module:
这个类和Function是有点区别的,回忆一下,我们定义Function的时候,Funciton本身是不需要变量的,而Module是变量和Function的结合体。在某些时候,我们更倾向称这种结构为Layer。但是这里既然这么叫,那就这么叫吧。

Module实际上是一个容器,我们可以继承Module,在里面加几个参数,从而实现一个简单全连接层。我们也可以继承Module,在里面加入其它Module,从而实现整个VGG结构。

到此这篇关于pytorch框架的详细介绍与应用的文章就介绍到这了,更多相关pytorch框架介绍内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: pytorch框架的详细介绍与应用详解

本文链接: https://www.lsjlt.com/news/208447.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • pytorch框架的详细介绍与应用详解
    目录pytorch框架的详细介绍与应用一.pytorch概述1.pytorch概念2.pytorch与tensorflow的区别3.pytorch包含的内容二.pytorch常用模块...
    99+
    2023-05-15
    pytorch框架介绍 pytorch框架应用
  • SpringBoot框架详细介绍
    目录 1.SpringBoot简介 2. 搭建springboot工程 3. 了解pom.xml以及配置文件 4. springboot的配置文件种类 5. java读取springboot配置文件的内容。 第一种: @Value读取 第二...
    99+
    2023-10-08
    spring boot java spring
  • MySQL Test Run 测试框架详细介绍
    目录一、介绍二、安装三、测试示例四、创建测试用例五、mtr其他常用参数介绍–force–record–big-test–suite=[...
    99+
    2022-11-13
  • Struts2之Validator验证框架的详细介绍
    Struts2中提供了数据校验验证数据例如验证邮件、数字等。验证方式有3种:一是通过validate()方法,二是通过Xml,三是使用注解方式。一、初始化首先定义一个User类package com.cyw.test;import java...
    99+
    2023-05-31
    struts 验证 dat
  • 详细介绍Golang Iris框架的安装和使用
    随着互联网的快速发展,Web开发也变得越来越重要。在现代Web开发中,一个高效、功能强大的Web框架是必不可少的。Golang Iris 就是这样一个强大的Web框架,它能够让Web开发变得更加简单、高效。本文将详细介绍Golang Iri...
    99+
    2023-05-14
  • Android 常见的图片加载框架详细介绍
    Android 常见的图片加载框架 图片加载涉及到图片的缓存、图片的处理、图片的显示等。而随着市面上手机设备的硬件水平飞速发展,对图片的显示要求越来越高,稍微处理不好就会造成内...
    99+
    2022-06-06
    图片 框架 Android
  • Scrapy框架CrawlSpiders的介绍以及使用详解
    在Scrapy基础——Spider中,我简要地说了一下Spider类。Spider基本上能做很多事情了,但是如果你想爬取知乎或者是简书全站的话,你可能需要一个更强大的武器。CrawlSpider基于Spid...
    99+
    2022-06-04
    详解 框架 Scrapy
  • Python模块介绍与使用详细讲解
    目录模块的相关概念 1. 什么是模块2. 使用模块的好处模块的使用1. 自定义模块a) 方法一: 导入模块:b) 方法二c) 导入自己的模块Python中的包 1...
    99+
    2022-11-12
  • Node.js模块化原理与应用详细介绍
    目录什么是模块化模块化规范node.js中的模块分类加载模块node.js的模块作用域什么是模块作用域模块作用域的好处向外共享模块作用域中的成员module对象module.expo...
    99+
    2022-11-13
  • SpringCloudFeign配置应用详细介绍
    目录前言1、Feign简介2、Feign配置应用前言 服务消费者调用服务提供者的时候使用RestTemplate技术 存在不便之处: 拼接urlrestTmplate.getFor...
    99+
    2022-11-13
  • Yarn的安装与使用详细介绍
    在官方介绍里有这么一句话: Yarn is a package manager for your code. It allows you to use and share code with other d...
    99+
    2022-06-04
    详细介绍 Yarn
  • JSON基础介绍与详细用法
    一、什么是JSON 1、JSON指的是JavaScript对象表示法(JavaScript Object Notation)。2、JSON是轻量级的文本数据交换格式,比XML更小、更...
    99+
    2022-11-13
  • SpringMVC配置与使用详细介绍
    目录一、SpringMVC的使用1、MVC模式2、具体的坐标如下3、配置DispatcheServlet4、编写springmvc.xml的配置文件二、SpringMVC原理1、Sp...
    99+
    2022-11-13
  • Clouda框架介绍与应用场景
    Clouda是一个基于浏览器运行的前端应用开发框架。它提供了一套完整的开发工具和资源,可以帮助开发者快速构建跨平台的Web应用。Cl...
    99+
    2023-08-23
    Clouda
  • JDK与Dubbo中的SPI详细介绍
    目录1、SPI简介2、JDK中的SPI3、Dubbo中的SPI4、Dubbo中扩展点使用方式5、DubboSPI中的Adaptive功能1、SPI简介 SPI 全称为 (Servic...
    99+
    2022-11-13
  • windows网络唤醒功能详细介绍与应用
    在有些情况下,我们需要通过网络远程唤醒PC机以方便我们的操作,特别是那些网管们,谁也不想在两个相聚有一段举例的主机之间来来回回。下面就详细讲解一下网络唤醒功能。当然值得注意的是,这些操作只能是针对局域网,因为广播的唤醒数...
    99+
    2023-06-05
    windows 网络唤醒 网络 应用 功能
  • Android 中的注解详细介绍
    注解是我们经常接触的技术,Java有注解,Android也有注解,本文将试图介绍Android中的注解,以及ButterKnife和Otto这些基于注解的库的一些工作原理. 归...
    99+
    2022-06-06
    注解 Android
  • Android应用 坐标系详细介绍
    Android 应用坐标系详解:             ...
    99+
    2022-06-06
    Android
  • C++的类与C#的类详细介绍
    本篇内容介绍了“C++的类与C#的类详细介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!许多编程人员学习C++总结经验为,有的觉得C++语...
    99+
    2023-06-17
  • 详细介绍mysql中limit与offset的用法
    目录mysql limit与offset用法附:Mysql limit offset用法举例总结有的时候我们在学习或者工作中会使用到SQL语句,那么介绍一下limit和offset的...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作