繁体   English   中英

在 PyTorch 中,grad_fn 属性究竟存储了什么以及如何使用?

[英]In PyTorch, what exactly does the grad_fn attribute store and how is it used?

在 PyTorch 中, Tensor class 具有grad_fn属性。 引用了用于获取张量的操作:例如,如果a = b + 2a.grad_fn将是AddBackward0 但是“参考”到底是什么意思?

使用inspect.getmro(type(a.grad_fn))检查AddBackward0将 state 发现 AddBackward0 的唯一基础AddBackward0object 此外,此 class 的源代码(实际上,可能在 grad_fn 中遇到的任何其他grad_fn )在源代码中无处可寻!

所有这些都让我想到以下问题:

  1. grad_fn中究竟存储了什么以及在反向传播过程中如何调用它?
  2. 为什么在grad_fn中存储的对象没有某种常见的超级 class,为什么在 GitHub 上没有它们的源代码?

grad_fn是 function “句柄”,可以访问适用的梯度 function。 给定点的梯度是在反向传播期间调整权重的系数。

“句柄”是 object 描述符的总称,旨在提供对 object 的适当访问权限。 例如,当您打开一个文件时, open返回一个文件句柄。 当您实例化 class 时, __init__ function 返回创建实例的句柄。 句柄包含对相关项目的数据和函数的引用(通常是 memory 地址)。

It appears as the generic object class because it's from the underlying implementation in another language, such that it does not map exactly to the Python function type. PyTorch 处理跨语言调用和返回。 这种移交是预编译(共享对象)运行时系统的一部分。

这足以澄清你所看到的吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM