在PyTorch中,Tensor
类具有grad_fn
属性。这引用了用于获取张量的操作:例如,如果a = b + 2
,a.grad_fn
将是AddBackward0
。但“参考”到底意味着什么
使用inspect.getmro(type(a.grad_fn))
检查AddBackward0
将声明AddBackward0
的唯一基类是object
。此外,这个类的源代码(事实上,在grad_fn
中可能遇到的任何其他类)在source code中找不到
所有这些让我想到以下问题:
grad_fn
中究竟存储了什么?在反向传播期间如何调用它李>grad_fn
中的对象没有某种常见的超类,为什么GitHub上没有这些对象的源代码李>
grad_fn
是一个函数“句柄”,用于访问适用的渐变函数。给定点处的梯度是用于在反向传播期间调整权重的系数“句柄”是对象描述符的通用术语,旨在为对象提供适当的访问权限。例如,当您打开一个文件时,
open
返回一个文件句柄。实例化类时,__init__
函数将返回所创建实例的句柄。句柄包含对相关项的数据和函数的引用(通常是内存地址)它显示为泛型
object
类,因为它来自另一种语言的底层实现,因此它不会准确地映射到Pythonfunction
类型。PyTorch处理跨语言调用和返回。此移交是预编译(共享对象)运行时系统的一部分这足以澄清你所看到的吗
相关问题 更多 >
编程相关推荐