pytorch如何计算导数_PyTorch的自动求导机制详细解析,PyTorch的核心魔法

本文深入解析PyTorch的自动求导机制,介绍了如何利用autograd计算高维曲线的梯度,以及动态计算图的概念。文章涵盖了张量、反向传播、神经网络训练过程,并通过实例展示了如何使用PyTorch进行梯度计算。
摘要由CSDN通过智能技术生成

加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!

同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。关注极市平台公众号,回复加群,立刻申请入群~

作者:Vaibhav Kumar

编译:ronghuaiyang

这篇文章详细解析了PyTorch的自动求导机制,让你了解PyTorch的核心魔法。

在这个过程中,它从不显式地构造整个雅可比矩阵。直接计算JVP通常更简单、更有效。

我们都同意,当涉及到大型神经网络时,我们都不擅长微积分。通过显式求解数学方程来计算这样大的复合函数的梯度是不现实的,特别是这些曲线存在于大量的维数中,是无法理解的。

要处理14维空间中的超平面,想象一个三维空间,大声地对自己说“14”。每个人都这么做——Geoffrey Hinton

这就是PyTorch的autograd发挥作用的地方。它抽象了复杂的数学,帮助我们“神奇地”计算高维曲线的梯度,只需要几行代码。这篇文章试图描述autograd的魔力。

PyTorch基础

在进一步讨论之前,我们需要了解一些基本的PyTorch概念。

张量:简单地说,它只是PyTorch中的一个n维数组。张量支持一些额外的增强,这使它们独一无二:除了CPU,它们可以加载或GPU更快的计算。在设置.requires_grad = True的时候,他们开始形成一个反向图,跟踪应用于他们的每个操作,使用所谓的动态计算图(DCG)计算梯度(后面会进一步解释)。

在早期版本的PyTorch中,使用torch.autograd.Variable类用于创建支持梯度计算和操作跟踪的张量,但截至PyTorch v0.4.0,Variable类已被禁用。torch.Tensor和torch.autograd.Variable现在是同一个类。更准确地说, torch.Tensor能够跟踪历史并表现得像旧的Variable。

i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值