23.2_将代码移到核心类

23.2 将代码移到核心类

接下来在dezero目录下添加一些文件。此处的目标是将上一步的step22.py中的代码移到dezero/core/simple.py中(核心文件)。文件名中之所以有core(核心),是因为已经实现的功能都可以视为DeZero的核心功能。该文件最终会被替换为core.py,考虑到这一点,我们暂时将其命名为core SIMPLE.py。

下面从step22.py中复制以下类到核心文件中。

  • Config
    Variable

  • Function

Add(Function)

  • Mul(Function)

  • Neg(Function)

  • Sub(Function)
    Div(Function)

  • Pow(Function)

上面的Add(Function)中的(Function)的意思是该类继承了Function类。上面列表中有Config类、Variable类、Function类,还有6个继承自Function类的函数类。接下来是step22.py中的Python函数。我们把以下函数移到核心文件中去。

using_config
no_grad
as_array
as variable

  • add
    mul

  • neg

  • sub

  • rsub
    div

  • rdiv
    pow

最前面的两个函数是DeZero的配置函数,用于启用或禁用反向传播。函数as_array和as_variable用于将传来的参数对象转换为ndarray或Variable。剩下的是DeZero自身使用的函数。下面我们直接将step22.py中的类和函数复制到核心文件中。

我们此前还实现了一些在DeZero中使用的具体的函数,如Exp类和Square类,exp函数和square函数。但是,这些内容不会纳入核心文件中。我们稍后会把它们添加到dezero/functions.py中。

现在可以从外部的Python文件导入dezero使用了,代码如下所示。

import numpy as np   
fromdezero.core.simple import Variable   
 $\mathbf{x} =$  Variable(np.array(1.0))   
print(x)

运行结果

variable(1.0)

如上所示,编写fromdezero.core.simpleimportVariable即可导入Variable类。请注意,这里用的是dezero.core.simple。后面我们会引入一种省略core-simple的机制,直接编写fromdezero importVariable即可。

使用from ... import ...语法可以直接导入模块中的类和函数等。此外,使用import XXX as A可以以名称A导入一个名为XXX的模块。例如,使用importdezero.core.simpleas dz就能以名称dz导入dezero.core-simple模块。导入后,我们可以通过dz.Variable来访问Variable类。