Graph pytorch中正向传递计算图结构的获取

Graph pytorch中正向传递计算图结构的获取,graph,pytorch,computation,Graph,Pytorch,Computation,是否有任何方法可以自动提取一个计算图,该图表示一系列pytorch计算中的向前传递?我们希望图中的节点能够访问组成前向传递的函数,以便我们可以单独调用它们。我们还希望能够访问每个函数的中间输出值 这与由autograd构建的计算图有所不同,后者通常只表示向后传递。其节点仅包含对一个grad\u fn的引用,它是向前函数的导数 例如,如果我们提供以下代码: 导入火炬 x=火炬。随机数(10) M=火炬。随机数(10,10) h=火炬。matmul(M,x) h=火炬。添加(h,x) h=火炬。ta

是否有任何方法可以自动提取一个计算图,该图表示一系列pytorch计算中的向前传递?我们希望图中的节点能够访问组成前向传递的函数,以便我们可以单独调用它们。我们还希望能够访问每个函数的中间输出值

这与由
autograd
构建的计算图有所不同,后者通常只表示向后传递。其节点仅包含对一个
grad\u fn
的引用,它是向前函数的导数

例如,如果我们提供以下代码:

导入火炬
x=火炬。随机数(10)
M=火炬。随机数(10,10)
h=火炬。matmul(M,x)
h=火炬。添加(h,x)
h=火炬。tanh(h)
y=火炬总数(h)
我们想自动提取一个图形结构,如

     y
     |
   [sum]
     |
   [tanh]
     |
   [add] 
  /     \
  | [matmul]     
  | /      \
  x         M
其中,每个带括号的节点可以是一个对象(例如,调用
节点
),该对象将对其相应函数的引用存储为属性,并在向前传递期间存储函数的输出


如果有人能指出任何pytorch API能够实现类似这样的功能,那就太好了

你可能想调查一下。您可以为任何
nn.Module
注册前向钩子,钩子本身具有对类实例的引用。这些可能用于在向前传递期间构造字典。该工具相对简单,并使用类似的方法来构建向前传球的摘要,也许它可以帮助您查看它?非常感谢!!!我一定会看看你刚才提到的功能。