59.3_切断连接的方法
59.3 切断连接的方法
接下来在Variable类中添加用于切断连接的方法。Variable类位于dezero/core.py中。我们在Variable类中添加下面的unchain方法。
dezero/core.py
class Variable:
...
def unchain(self):
selfCreator = Noneunchain方法只是将创造者self creator设为None。这样就切断了与作为创造者的函数之间的连接。
随后我们再增加用于切断连接的方法。这个方法是 unchain_backward。
当这个方法被调用时,它会被调用的变量反向回溯计算图,并调用图中出现的所有变量的 unchain 方法。代码如下所示。
dezero/core.pyclass 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 方法的代码更简单。