【文档学习】Pytorch——torch.autorgrad包

torch.autograd提供了实现自动计算任意标量值函数的类别核函数,需要手动修改现有代码(需要重新定义需要计算梯度Tensor,加上关键词requires_grad=True)。本文更新于2019.06.12。

文章目录

  • torch.autograd.backward
  • torch.autograd.grad
  • 局部梯度计算失效(Locally disabling gradient computation)
    • torch.autograd.no_grad
    • torch.autograd.enable_grad
    • torch.autograd.set_grad_enabled(mode)
  • In-place张量操作
  • In-place正确性检查
  • Variable(弃用)
  • Tensor autograd functions
    • torch.Tesnor
      • backward
      • detach
      • detach_
      • grad
      • is_leaf
      • register_hook
      • requires_grad
      • retain_grad
  • Function
    • backward
    • forward
  • Numerical gradient checking
    • torch.autograd.gradcheck
    • torch.autograd.gradgradcheck
  • Profiler(分析工具)
    • torch.autograd.profiler.profile
      • export_chrome_trace
      • key_averages
      • self_cpu_times_total
      • table
      • total_average
    • torch.autograd.profiler.emit_vntx
      • 前向-反向相关
      • 双反向
    • torch.autograd.profiler.load_nvprof
  • Anomaly detection(异常检测)
    • torch.autograd.detect_anomaly
    • torch.autograd.set_detect_anomaly

torch.autograd.backward

【文档学习】Pytorch——torch.autorgrad包_第1张图片

torch.autograd.grad

【文档学习】Pytorch——torch.autorgrad包_第2张图片

局部梯度计算失效(Locally disabling gradient computation)

torch.autograd.no_grad

【文档学习】Pytorch——torch.autorgrad包_第3张图片

torch.autograd.enable_grad

【文档学习】Pytorch——torch.autorgrad包_第4张图片

torch.autograd.set_grad_enabled(mode)

【文档学习】Pytorch——torch.autorgrad包_第5张图片

In-place张量操作

在autograd中支持原位操作是很难的,PyTorch也不建议大家在大多数情况下使用这些操作。autograd的缓冲区冻结和再利用策略使其非常高效,因此极少数情况下才会为了减少内存使用而进行原位操作。除非任务内存消耗非常巨大,否则绝不要使用它们。

In-place正确性检查

所有张量都会跟踪发生在其上面的原位操作,如果检查到某个张量被保存下来用于某个函数的反向传播,但是后面它又被原位修改了,再反向传播开始的时候就会报错。这也确保了,如果你调用了原位函数而没有看见错误的情况下,所有梯度的计算应该都是正确的。

Variable(弃用)

在这里插入图片描述
Variable API已经被弃用了,即在调用tensor的autograd中,不再必需Variables。Autograd自动支持requires_grad为真的张量。下面给出了具体的修改:

  • Variable(tensor)Variable(tensor, requires_grad仍在使用,但是其返回Tensor而不是Variable。
  • var.datatensor.data是同一个东西。
  • 诸如var.backward()var.detach()var.register_hook()等操作现在都被移到张量上,方法名称相同。

此外,用户也可以利用创建requires_grad=True的张量来调用factory methods, 比如torch.randn()torch.zeros()torch.ones等,用法类似:
autograd_tensor = torch.randn((2,3,4),requires_grad=True)

Tensor autograd functions

torch.Tesnor

在这里插入图片描述

backward

【文档学习】Pytorch——torch.autorgrad包_第6张图片

detach

【文档学习】Pytorch——torch.autorgrad包_第7张图片

detach_

在这里插入图片描述

grad

【文档学习】Pytorch——torch.autorgrad包_第8张图片

is_leaf

【文档学习】Pytorch——torch.autorgrad包_第9张图片

register_hook

【文档学习】Pytorch——torch.autorgrad包_第10张图片

requires_grad

【文档学习】Pytorch——torch.autorgrad包_第11张图片

retain_grad

在这里插入图片描述

Function

【文档学习】Pytorch——torch.autorgrad包_第12张图片

backward

【文档学习】Pytorch——torch.autorgrad包_第13张图片

forward

【文档学习】Pytorch——torch.autorgrad包_第14张图片

Numerical gradient checking

torch.autograd.gradcheck

【文档学习】Pytorch——torch.autorgrad包_第15张图片
【文档学习】Pytorch——torch.autorgrad包_第16张图片

torch.autograd.gradgradcheck

【文档学习】Pytorch——torch.autorgrad包_第17张图片
【文档学习】Pytorch——torch.autorgrad包_第18张图片

Profiler(分析工具)

autograd包含了一个分析器,可以观察模型中不同操作子的损失(CPU和GPU上的)。目前有两种实现模式:只支持CPU的profile和基于nvprof的(CPU和GPU上都注册了)emit_nvtx

torch.autograd.profiler.profile

【文档学习】Pytorch——torch.autorgrad包_第19张图片

export_chrome_trace

【文档学习】Pytorch——torch.autorgrad包_第20张图片

key_averages

【文档学习】Pytorch——torch.autorgrad包_第21张图片

self_cpu_times_total

在这里插入图片描述

table

【文档学习】Pytorch——torch.autorgrad包_第22张图片

total_average

【文档学习】Pytorch——torch.autorgrad包_第23张图片

torch.autograd.profiler.emit_vntx

【文档学习】Pytorch——torch.autorgrad包_第24张图片

前向-反向相关

在查看用Nividia Visual Profiler中的emit_nvtx创建的profile时,将反向传播操作和左营的前向传播操作联系起来有时是很困难的。为了使这个任务更容易,emit_nvtx通过级联数字信息来排序其生成物。

在正向传播过程中,每个函数范围用seq=装饰,每增加一个反向函数目标就给反向传播存储一个。因此,seq-标注关系每个前向传播的函数范围,从而告诉用户一个反向传播的目标是否是由前向传播函数创建的。反向传播目标接收个数为N的序列。在反向传播过程中,top-level…
在这里插入图片描述
在这里插入图片描述

双反向

【文档学习】Pytorch——torch.autorgrad包_第25张图片

torch.autograd.profiler.load_nvprof

【文档学习】Pytorch——torch.autorgrad包_第26张图片

Anomaly detection(异常检测)

torch.autograd.detect_anomaly

【文档学习】Pytorch——torch.autorgrad包_第27张图片
【文档学习】Pytorch——torch.autorgrad包_第28张图片
【文档学习】Pytorch——torch.autorgrad包_第29张图片

torch.autograd.set_detect_anomaly

【文档学习】Pytorch——torch.autorgrad包_第30张图片
更多内容,欢迎加入星球讨论。

你可能感兴趣的:(Python基础,torch)