当前位置:网站首页 > 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 实现,这对于深度学习至关重要。

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.multiprocessing python 多进程并发,进程之间 torch Tensors 的内存共享;
torch.utils 数据载入器。具有训练器和其他便利功能;
torch.legacy(.nn/.optim) 处于向后兼容性考虑,从 Torch 移植来的 legacy 代码
torchvision 独立于pytorch的关于图像操作的一些方便工具库

和数值相关的

Tensor Variable Parameter 

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

模型相关的

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

到此这篇pytorch框架的详细介绍与应用的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 简述 Pytorch框架_简述 Pytorch框架2024-10-30 22:41:29
  • PyTorch 深度学习入门2024-10-30 22:41:29
  • 深度学习在图像处理中的应用(tensorflow2.4以及pytorch1.10实现)2024-10-30 22:41:29
  • pytorch框架详解2024-10-30 22:41:29
  • 《每天五分钟玩转pytorch》专栏:通俗易懂的深度学习框架_《每天五分钟玩转pytorch》专栏:通俗易懂的深度学习框架2024-10-30 22:41:29
  • 【Pytorch】2024 Pytorch基础入门教程(完整详细版)2024-10-30 22:41:29
  • Vitis-AI量化编译YOLOv5(Pytorch框架)并部署ZCU104(一)(代码已开源)2024-10-30 22:41:29
  • pytorch框架介绍2024-10-30 22:41:29
  • 【PyTorch框架】——框架安装&使用流程&搭建PyTorch神经网络气温预测_【PyTorch框架】——框架安装&使用流程&搭建PyTorch神经网络气温预测2024-10-30 22:41:29
  • pytorch框架介绍2024-10-30 22:41:29
  • 全屏图片