0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于PyTorch的深度学习入门教程之PyTorch的自动梯度计算

ss 来源:雁回晴空 作者:雁回晴空 2021-02-16 15:26 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文参考PyTorch官网的教程,分为五个基本模块来介绍PyTorch。为了避免文章过长,这五个模块分别在五篇博文中介绍。

Part1:PyTorch简单知识

Part2:PyTorch的自动梯度计算

Part3:使用PyTorch构建一个神经网络

Part4:训练一个神经网络分类器

Part5:数据并行化

本文是关于Part2的内容。

Part2:PyTorch的自动梯度计算

autograd package是PyTorch中所有神经网络的核心。先了解一些基本知识,然后开始训练第一个神经网络。autograd package提供了Tensors上所有运算的自动求导功能。它是一个按运行定义(define-by-run)的框架,这意味着反向传播是依据代码运行情况而定义的,并且每一个单次迭代都可能不相同。

1 变量(Variable)

autograd.Variable 是这个package的中心类。它打包了一个Tensor,并且支持几乎所有运算。一旦你完成了你的计算,可以调用.backward(),所有梯度就可以自动计算。

你可以使用.data属性来访问原始tensor。相对于变量的梯度值可以被积累到.grad中。

这里还有一个类对于自动梯度的执行是很重要的:Function(函数)

变量和函数是相互关联的,并且建立一个非循环图。每一个变量有一个.grad_fn属性,它可以引用一个创建了变量的函数(除了那些用户创建的变量——他们的grad_fn是空的)。

如果想要计算导数,可以调用Variable上的.backward()。如果变量是标量(只有一个元素),你不需要为backward()确定任何参数。但是,如果它有多个元素,你需要确定grad_output参数(这是一个具有匹配形状的tensor)。

import torch
from torch.autograd import Variable

创建一个变量:

x = Variable(torch.ones(2, 2), requires_grad=True)
print(x)

对变量做一个运算:

y = x + 2
print(y)

y作为一个运算的结果被创建,所以它有grad_fn。

print(y.grad_fn)

在y上做更多的运算:

z = y * y * 3
out = z.mean()

print(z, out)

2 梯度(Gradients)

现在来做反向传播。out.backward()等价于out.backward(torch.Tensor([1.0]))。

out.backward()

打印梯度 d(out)/dx

print(x.grad)

你应该会得到一个元素为4.5的矩阵。

你可以使用autograd做很多疯狂的事情。

x = torch.randn(3)
x = Variable(x, requires_grad=True)

y = x * 2
while y.data.norm() < 1000:
    y = y * 2

print(y)
gradients = torch.FloatTensor([0.1, 1.0, 0.0001])
y.backward(gradients)

print(x.grad)

责任编辑:xj

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4827

    浏览量

    106796
  • 深度学习
    +关注

    关注

    73

    文章

    5590

    浏览量

    123905
  • pytorch
    +关注

    关注

    2

    文章

    813

    浏览量

    14699
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    摩尔线程发布Torch-MUSA v2.1.1版本

    近日,摩尔线程发布其面向PyTorch深度学习框架的MUSA扩展库——Torch-MUSA v2.1.1。该版本在v2.1.0的基础上,进一步扩展了对大规模深度
    的头像 发表于 09-10 11:02 725次阅读

    自动驾驶中Transformer大模型会取代深度学习吗?

    持续讨论。特别是在自动驾驶领域,部分厂商开始尝试将多模态大模型(MLLM)引入到感知、规划与决策系统,引发了“传统深度学习是否已过时”的激烈争论。然而,从技术原理、算力成本、安全需求与实际落地路径等维度来看,Transforme
    的头像 发表于 08-13 09:15 3917次阅读
    <b class='flag-5'>自动</b>驾驶中Transformer大模型会取代<b class='flag-5'>深度</b><b class='flag-5'>学习</b>吗?

    Arm方案 基于Arm架构的边缘侧设备(树莓派或 NVIDIA Jetson Nano)上部署PyTorch模型

    本文将为你展示如何在树莓派或 NVIDIA Jetson Nano 等基于 Arm 架构的边缘侧设备上部署 PyTorch 模型。
    的头像 发表于 07-28 11:50 2497次阅读

    Nordic收购 Neuton.AI 关于产品技术的分析

    生成比传统框架(如 TensorFlow、PyTorch 等)小 10 倍的模型,模型体积可低至个位数 KB,并且推理速度更快、功耗更低。此次收购将 Neuton 的自动化 TinyML 平台
    发表于 06-28 14:18

    摩尔线程发布Torch-MUSA v2.0.0版本 支持原生FP8和PyTorch 2.5.0

    近日,摩尔线程正式发布Torch-MUSA v2.0.0版本,这是其面向PyTorch深度学习框架的MUSA扩展库的重要升级。新版本基于MUSA Compute Capability 3.1
    的头像 发表于 05-11 16:41 1268次阅读

    海思SS626开发板

    识别/运动跟踪等)。 主板集成常用视频硬件接口,所有外设接口电路均通过严格的抗干扰测试,使产品在 EMC 及稳定性方面 具有良好表现;使用通过稳定性测试及深度优化的系统软件(Linux 系统),支持业界主流深度学习框架(如 Ca
    发表于 04-24 10:04

    《RK3588核心板:AIoT边缘计算的革命性引擎,能否解锁智能物联新范式?》

    学习模型,实现毫秒级响应。 功能亮点与场景示例: 多模态AI融合:支持TensorFlow、PyTorch等主流框架模型部署,可应用于智能零售中的行为识别系统,通过摄像头+红外传感器数据融合,精准分析
    发表于 04-02 10:26

    使用OpenVINO™ 2021.4将经过训练的自定义PyTorch模型加载为IR格式时遇到错误怎么解决?

    使用 OpenVINO™ 2021.4 将经过训练的自定义 PyTorch 模型加载为 IR 格式时遇到错误: RuntimeError: [ GENERAL_ERROR ] Failed
    发表于 03-05 08:40

    如何在Arm Ethos-U85上使用ExecuTorch

    在快速发展的机器学习领域,PyTorch 凭借其灵活性和全面的生态系统,已成为模型开发的热门框架。Arm 与 Meta 合作在 ExecuTorch 中引入了对 Arm 平台的支持,进一步简化了模型算法开发过程,实现无缝在边缘侧设备上部署
    的头像 发表于 02-14 14:23 1015次阅读
    如何在Arm Ethos-U85上使用ExecuTorch

    操作指南:pytorch云服务器怎么设置?

    GPU加速和并行计算优化。完成后,定期监测资源使用情况以优化配置。设置PyTorch云服务器需要一系列步骤,以下是UU云小编整理的操作指南:
    的头像 发表于 02-08 10:33 606次阅读

    AI自动化生产:深度学习在质量控制中的应用

    随着科技的飞速发展,人工智能(AI)与深度学习技术正逐步渗透到各个行业,特别是在自动化生产中,其潜力与价值愈发凸显。深度学习软件不仅使人工和
    的头像 发表于 01-17 16:35 1210次阅读
    AI<b class='flag-5'>自动</b>化生产:<b class='flag-5'>深度</b><b class='flag-5'>学习</b>在质量控制中的应用

    【「具身智能机器人系统」阅读体验】+两本互为支持的书

    如何使用PyTorch进行数字图像处理,它借助摄像头来获取视频的图像信息,然后通过已有的图像识别框架模型经深度学习和优化以达到更精准的识别结果,从而为进一步的执行处理提供数据支持和依据。而《具身智能机器人系统
    发表于 01-01 15:50

    Triton编译器在机器学习中的应用

    多种深度学习框架,如TensorFlow、PyTorch、ONNX等,使得开发者能够轻松地将不同框架下训练的模型部署到GPU上。 2. Triton编译器的工作原理 Triton编译器通过以下几个步骤
    的头像 发表于 12-24 18:13 1627次阅读

    利用Arm Kleidi技术实现PyTorch优化

    PyTorch 是一个广泛应用的开源机器学习 (ML) 库。近年来,Arm 与合作伙伴通力协作,持续改进 PyTorch 的推理性能。本文将详细介绍如何利用 Arm Kleidi 技术提升 Arm
    的头像 发表于 12-23 09:19 1619次阅读
    利用Arm Kleidi技术实现<b class='flag-5'>PyTorch</b>优化

    vLLM项目加入PyTorch生态系统,引领LLM推理新纪元

    近日,vLLM项目宣布正式成为PyTorch生态系统的一部分,标志着该项目与PyTorch的合作进入了一个全新的阶段。本文将从以下几个方面进行介绍,特别提醒:安装方案在第四个部分,可选择性阅读
    的头像 发表于 12-18 17:06 1574次阅读
    vLLM项目加入<b class='flag-5'>PyTorch</b>生态系统,引领LLM推理新纪元