返回顶部
首页 > 资讯 > 后端开发 > Python >pytorch简介及常用工具包展示
  • 132
分享到

pytorch简介及常用工具包展示

pytorch常用工具包pytorch工具包pytorch简介pytorch包 2023-02-24 14:02:26 132人浏览 薄情痞子

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

摘要

目录一、PyTorch 简介二、pytorch 优势三、pytorch 常用工具包四、pytorch 注意点五、pytorch 理解六、pytorch-Tensor七、python

一、pytorch 简介

  • Pytorch是torch的Python版本,是由Facebook开源的神经网络框架,专门针对 GPU 加速的深度神经网络(DNN)编程。Torch 是一个经典的对多维矩阵数据进行操作的张量
    (tensor )库,在机器学习和其他数学密集型应用有广泛应用。
  • Pytorch的计算图是动态的,可以根据计算需要实时改变计算图。
  • 由于Torch语言采用 lua,导致在国内一直很小众,并逐渐被支持 Python 的 Tensorflow 抢走用户。作为经典机器学习库 Torch 的端口,PyTorch 为 Python 语言使用者提供了舒适的写代码选择。

二、pytorch 优势

  • 1.简洁:
    PyTorch的设计追求最少的封装,尽量避免重复造轮子。不像 TensorFlow 中充斥着session、graph、operation、name_scope、variable、tensor、layer等全新的概念,PyTorch 的设计遵循tensor→variable(autograd)→nn.Module 三个由低到高的抽象层次,分别代表高维数组(张量)、自动求导(变量)和神经网络(层/模块),而且这三个抽象之间联系紧密,可以同时进行修改和操作。
  • 2.速度:
    PyTorch 的灵活性不以速度为代价,在许多评测中,PyTorch 的速度表现胜过 TensorFlow和Keras 等框架。
  • 3.易用:
    PyTorch 是所有的框架中面向对象设计的最优雅的一个。PyTorch的面向对象的接口设计来源于Torch,而Torch的接口设计以灵活易用而著称,Keras作者最初就是受Torch的启发才开发了Keras。
  • 4.活跃的社区:
    PyTorch 提供了完整的文档,循序渐进的指南,作者亲自维护的论坛,供用户交流和求教问题。Facebook 人工智能研究院对 PyTorch 提供了强力支持。

三、pytorch 常用工具包

  1. torch :类似 NumPy 的张量库,支持GPU;
  2. torch.autograd :基于 type 的自动区别库,支持 torch 之中的所有可区分张量运行;
  3. torch.nn :为最大化灵活性而设计,与 autograd 深度整合的神经网络库;
  4. torch.optim:与 torch.nn 一起使用的优化包,包含 SGD、RMSProp、LBFGS、Adam 等标准优化方式;
  5. torch.multiprocessing: python 多进程并发,进程之间 torch Tensors 的内存共享;
  6. torch.utils:数据载入器。具有训练器和其他便利功能;
  7. torch.legacy(.nn/.optim) :出于向后兼容性考虑,从 Torch 移植来的 legacy 代码;

四、pytorch 注意点

特别注意一个问题:
通道问题:不同视觉库对于图像读取的方式不一样,图像通道也不一样:
OpenCV 的 imread 默认顺序时 H * W * C
pytorch的Tensor是 C * H * W
Tensorflow是两者都支持

五、pytorch 理解

  1. numpy风格的tensor操作
    • pytorch对tensor提供的api参照了numpy
  2. 变量自动求导
    • 在计算过程形成的计算图中,参与的变量可快速计算出自己对于目标函数的梯度
  3. 神经网络求导及损失函数优化等高层封装
    • 网络层封装在torch.nn
    • 损失函数封装在torch.functional
    • 优化函数封装在torch.optim

六、pytorch-Tensor

1. tensor 数据类型

tensor数据类型:3浮点(float16,float32,float64)5整数(int16,int32,int64,int8+uint8)

Data typedtypeCPU tensorGPU tensor
16-bit floating pointtorch.float16 or torch.halftorch.HalfTensortorch.cuda.HalfTensor
32-bit floating pointtorch.float32 or torch.floattorch.FloatTensortorch.cuda.FloatTensor
64-bit floating pointtorch.float64 or torch.doubletorch.DoubleTensortorch.cuda.DoubleTensor
Data typedtypeCPU tensorGPU tensor
8-bit integer(unsigned)torch.uint8torch.ByteTensortorch.cuda.ByteTensor
8-bit integer(signed)torch.int8torch.CharTensortorch.cuda.CharTensor
16-bit integer(signed)torch.int16 or torch.shorttorch.ShortTensortorch.cuda.ShortTensor
32-bit integer(signed)torch.int32 or torch.inttorch.IntTensortorch.cuda.IntTensor
64-bit integer(signed)torch.int64 or torch.longtorch.LongTensortorch.cuda.LongTensor

2. 创建 tensor 相关的 API

创建tensor的常见api

方法名说明
Tensor()直接从参数构造张量,支持list和numpy数组
eye(row,column)创建指定行数&列数的单位tensor(单位阵)
linspace(start,end,count)在[s,e]上创建c个元素的一维tensor
logspace(start,end,count)在[10s,10e]上创建c个元素的一维tensor
ones(size)返回指定shape的tensor,元素初始值为1
zeros(size)返回指定shape的tensor,元素初始值为0
ones_like(t)返回一个tensor,shape与t相同,且元素初始值为1
zeros_like(t)返回一个tensor,shape与t相同,且元素初始值为1
arange(s,e,sep)在区间[s,e)上以间隔sep生成一个序列张量

3. tensor 对象的 API

tensor 对象的方法

方法名作用
size()返回张量的shape
numel()计算tensor的元素个数
view(shape)修改tensor的shape,与np.reshape相似,view返回的是对象的共享内存
resize类似于view,但在size超出时会重新分配内存空间
item若为单元素tensor,则返回python的Scalar
from_numpy从numpy数据填充
numpy返回ndarray类型

七、python 自动求导

tensor对象通过一系列运算组成动态图,每个tensor对象都有以下几个控制求导的属性。

变量作用
requird_grad默认为False,表示变量是狗需要计算导数
grad_fn变量的梯度函数
grad变量对应的梯度

八、pytorch 神经网络

torch.nn提供了创建神经网络的基础构件,这些层都继承自Module类。下面是自己手动实现一个线性层(linear layer)。适当参考,以后直接调用现成的接口,这里稍微了解一下,无实际意义。 ​​​​

import torch

class Linear(torch.nn.Module):
    def __init__(self, in_features, out_features, bias=True):
        super(Linear, self).__init__()
        # torch.randn() 返回一个符合均值为0,方差为1的正态分布
        self.weight = torch.nn.Parameter(torch.randn(out_features, in_features))
        if bias:
            self.bias = torch.nn.Parameter(torch.randn(out_features))

    def forward(self, x):
        # xW+b
        x = x.mm(self.weight)
        if self.bias:
            x = x + self.bias.expand_as(x)
        return x

if __name__ == '__main__':
    
    net = Linear(3,2)
    x = net.forward
    print('11',x)

下面表格中列出了比较重要的神经网络层组件
对应的在nn.functional模块中,提供这些层对应的函数实现。
通常对于可训练参数的层使用module,而对于不需要训练参数的层如softmax这些,可以使用functional中的函数。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dnU00LSM-1649391626450)(photo/图片.png)]

一些容器

容器类型功能
Module神经网络模块基类
Sequential序贯模型,类似keras,用于构建序列型神经网络
ModuleList用于存储层,不接受输入
Parameters(t)模块的属性,用于保存其训练参数
ParameterList参数列表1

容器代码:

# 方法1 像
model1 = nn.Sequential()
model.add_module('fc1', nn.Linear(3,4))
model.add_module('fc2', nn.Linear(4,2))
model.add_module('output', nn.Softmax(2))

# 方法2
model2 = nn.Sequential(
          nn.Conv2d(1,20,5),
          nn.ReLU(),
          nn.Conv2d(20,64,5),
          nn.ReLU()
        )
# 方法3        
model3 = nn.ModuleList([nn.Linear(3,4), nn.ReLU(), nn.Linear(4,2)])
  • torch.nn.Module提供了神经网络的基类,当实现神经网络时需要继承自此模块,并在初始化函数中创建网络需要包含的层,并实现forward函数完成前向计算,网络的反向计算会由自动求导机制处理。
  • 通常将需要训练的层写在init函数中,将参数不需要训练的层在forward方法里调用对应的函数来实现相应的层。

编码三步走:

在pytorch中就只需要分三步:

  1. 写好网络;
  2. 编写数据的标签和路径索引
  3. 把数据送到网络。

到此这篇关于pytorch 简介及常用工具包展示的文章就介绍到这了,更多相关pytorch 常用工具包内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: pytorch简介及常用工具包展示

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

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

猜你喜欢
  • pytorch简介及常用工具包展示
    目录一、pytorch 简介二、pytorch 优势三、pytorch 常用工具包四、pytorch 注意点五、pytorch 理解六、pytorch-Tensor七、python ...
    99+
    2023-02-24
    pytorch 常用工具包 pytorch 工具包 pytorch 简介 pytorch包
  • pytorch常用工具包有哪些
    本文小编为大家详细介绍“pytorch常用工具包有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“pytorch常用工具包有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、pytorch 简介Pytor...
    99+
    2023-07-05
  • node.js包管理工具Yarn使用简介
    Yarn是由Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 , 它主要是为了弥补 npm 的一些缺陷而出现的。和npm相比,它...
    99+
    2024-04-02
  • k8s的包管理工具helm使用简介
    目录Helm Helm是什么?Helm中一个很重要的元素:Chart使用Helm安装helm客户端注意点通过二进制的方式安装helm客户端:添加chart存储库搜索chart存储库安...
    99+
    2024-04-02
  • Java常用工具类库——Hutool的使用简介
    目录前言HuTool 中的一些常用工具类日期相关 API随机工具图片工具彩色转换成黑白添加文字水印加密解密工具布隆过滤器邮件工具HTML 工具HtmlUtil.cleanHtmlTa...
    99+
    2024-04-02
  • MySQL的工作流程及常用工具简介——MySQL数据库软件的使用
     一. MySQL的工作流程 (1)操作系统用户启动MySQL服务。 (2)MySQL服务启动期间,首先将配置文件中的参数信息读入服务器内存。 (3)根据MySQL配置文件的参数信息或者编译MySQL时参数的默认值生成一个服务实例进程I...
    99+
    2018-11-17
    MySQL的工作流程及常用工具简介——MySQL数据库软件的使用
  • GoldenGate的Logdump工具使用简介
    Logdump工具是GoldenGate提供的一个用于查询、分析、过滤、查看和保存存储在trail文件或extract文件中的数据的工具。1、启动Logdump工具[oracle@rhel6 ~]...
    99+
    2024-04-02
  • MongoDB mongoexport工具的使用简介
    目录01  基本介绍02  常用参数03  命令04  经验值05  反向导入01  基本介绍   ...
    99+
    2024-04-02
  • Jar包常见的反编译工具介绍与使用
    反编译JAR能干什么: 排查问题、分析商业软件代码逻辑,学习优秀的源码思路。 反编译工具介绍 JD-GUI 下载地址:http://java-decompiler.github.io/ 点评:支...
    99+
    2023-10-22
    Java 反编译 Jar JD-GUI
  • zookeeper:简介及常用命令
    目录 一、Zookeeper简介 二、Zookeeper服务端常用命令 1、启动ZooKeeper服务 2、查看ZooKeeper服务状态 3、停止ZooKeeper服务 4、重启ZooKeeper服务 三、Zookeeper客户端常用命...
    99+
    2023-10-03
    java-zookeeper zookeeper 大数据
  • Conda简介及常用指令
    目录 一. Conda简介 二. Conda常用指令 1. 虚拟环境管理 2. 模块/包管理 一. Conda简介 Conda 是一个开源的包管理系统和环境管理系统,可在 Windows、macOS 和 Linux 上运行。Conda...
    99+
    2023-10-24
    python conda 开发语言 深度学习
  • Android自动化测试工具?Monkey简介及入门
      记得第二家单位的安卓开发在上线前都用monkey压几个小时,确实也能发现些问题,崩溃率低了些,没测过的确实可以压一压 搜了下资料,monkey确实很简单,发现问题自己搜...
    99+
    2022-06-06
    工具 测试工具 测试 Android
  • MySQL pt-slave-restart工具的使用简介
        在MySQL主从复制环境的搭建中,常常会遇到一种场景,主库和从库都要初始化用户的账号密码,正常的情况下,需要在主库和从库都关闭session级别的binlog,然后再进行用户信息导入。 &...
    99+
    2022-05-18
    MySQL pt-slave-restart pt-slave-restart工具的使用
  • PostgreSQL工具pgAdmin的介绍及使用
    目录1. pgAdmin的介绍2. pgAdmin的使用1. pgAdmin的介绍 pgAdmin 4是一款专门针对PostgreSQL数据库的客户端管理软件,该版本在pgAdmin 3的基础上做了较大的架构变化,由之前...
    99+
    2022-07-14
    pgAdmin使用
  • Java常用工具类汇总以及示例代码
    今天小编给大家分享的是Java常用工具类汇总以及示例代码,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程...
    99+
    2023-06-14
  • Python中常用的四种工具介绍
    本篇内容介绍了“Python中常用的四种工具介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Python作为粘合剂互不兼容的系统常常需要被...
    99+
    2023-06-17
  • PHP中zip压缩工具扩展包怎么用
    这篇文章主要介绍了PHP中zip压缩工具扩展包怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。PHP的zip压缩工具扩展包学习总算到了 PHP 的拿手好戏上场了,前面我们...
    99+
    2023-06-15
  • 介绍几个常用的golang部署工具
    随着互联网技术的快速发展,越来越多的企业开始采用云计算、虚拟化等技术来优化其应用部署和管理,提高系统的可靠性和容错性,保证业务的稳定运行。而golang作为一种高效、快速、安全的编程语言,受到越来越多企业和开发者的青睐。然而,golang应...
    99+
    2023-05-14
  • Java中GUI工具包AWT和Swing用法介绍
    java 中编写 GUI 有两中工具包,分别为 AWT、Swing。 Swing 是 AWT 的拓展,Swing 具有比 AWT 丰富的组件和方法。 AWT 和 Swing 都能跨平...
    99+
    2024-04-02
  • 官方压测工具mysqlslap介绍及使用
    mysqlslap是官方的一款做压力测试的工具,可以模拟多个客户端进行并发测试。 比如可以模拟多少并发,执行多少次,针对某个存储引擎……等等 比如对myisam引擎做并发量为100,查询次数为1000...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作