21.2_与float和int一起使用

21.2 与float和int一起使用

下面继续修改Variable,使其能与Python的int、float,以及np.float64、np.int64等类型一起使用。假设x是Variable实例,我们该怎么做才能让 x+3.0x + 3.0 这样的代码顺利执行呢?其中一种方法是在add函数中添加以下阴影部分的代码。

steps/step21.py def add(x0,x1): x1  $=$  as_array(x1) return Add()  $(\mathbf{x}\theta ,\mathbf{x}1)$

上面的代码使用了as_array函数。这是我们在步骤9中实现的函数。如果x1是int或float,使用这个函数就可以把它转换为ndarray实例。而ndarray实例(之后)则会在Function类中被转换为Variable实例。这样,我们就可以写出如下代码。

steps/step21.py   
 $\begin{array}{rl} & {\mathrm{x} = \mathrm{Variable}(\mathrm{np.array}(2.0))}\\ & {\mathrm{y} = \mathrm{x} + 3.0}\\ & {\mathrm{print}(\mathrm{y})} \end{array}$

运行结果

variable(5.0)

上面的代码成功地将float和Variable实例相加并计算出结果。目前我们只修改了add函数,使用同样的做法还可以对mul等函数进行同样的修改。这样就能通过+和*将Variable实例与int、float结合起来计算了。不过当前实现仍存在两个问题。