30.1_确认工作①:Variable实例变量
30.1 确认工作①:Variable实例变量
我们先来回顾一下Variable类的实例变量。首先看一下初始化Variable类的__init__方法。
class Variable: def__init__(self,data,name $\equiv$ None): if data is not None: ifnotisinstance(data,np.ndarray): raiseTypeError('{}isnotsupported'.format(type(data))) self.data $=$ data self.name $=$ name self.grad $=$ None self creator $=$ None self_generation $= 0$如代码所示,Variable类有几个实例变量。这里重点关注一下其中的 data 和 grad。data 和 grad 分别用于正向传播和反向传播的计算。需要注意的是,data 和 grad 都是 ndarray 实例的引用。为了强调这一点,笔者引入图 30-1 这种图形表示方法。

图30-1 Variable的新表示方法
如图30-1所示,我们将data和grad画成立方体的容器。图30-2是data和grad引用了ndarray实例的图示。

图30-2 Variable的新表示方法(数据引用)

图30-2中的左图是执行 时的例子,右图是执行 或 时的例子。笔者将使用这种图形表示方法进行说明。