59.3_切断连接的方法

59.3 切断连接的方法

接下来在Variable类中添加用于切断连接的方法。Variable类位于dezero/core.py中。我们在Variable类中添加下面的unchain方法。

dezero/core.py
class Variable:
    ...
    def unchain(self):
        selfCreator = None

unchain方法只是将创造者self creator设为None。这样就切断了与作为创造者的函数之间的连接。

随后我们再增加用于切断连接的方法。这个方法是 unchain_backward。

当这个方法被调用时,它会被调用的变量反向回溯计算图,并调用图中出现的所有变量的 unchain 方法。代码如下所示。

dezero/core.py
class Variable:   
def unchain_backward(self): if self creator is not None: func  $=$  [self Creator] while func: f  $=$  func.pop() for x in finputs: if x creator is not None: func.append(x creator) x.unchain()

代码实现中反向回溯变量和函数,并调用变量的 unchain 方法。这个逻辑与 Variable 类的 backward 方法的逻辑相同。但由于这里不用考虑回溯变量的顺序(变量的“辈分”),所以这个实现比 backward 方法的代码更简单。