Python快乐编程:人工智能深度学习基础
上QQ阅读APP看书,第一时间看更新

2.7.1 variable节点

variable节点是符号表达式中存放信息的数据结构,是Theano中最常用的数据结构,可以分为输入符号变量和输出符号变量。

一个符号变量通常具有下面4个重要的域。

· type:定义可以在计算中使用的变量,指向type节点(本节后续内容将进行讲解)。

· owner:可以为None或者一个变量的apply节点的一个输出(本节后续内容将进行讲解)。

· index:一个索引值,当owner的值不为None时,如果变量是输入符号变量,则表示该变量在owner所指向的符号表达式中是第index个输入变量;当owner的值为None时,如果变量是输出符号变量,则表示该变量在owner所指向的符号表达式中是第index个输出变量。

· name:为变量定义名称,方便打印或调试。

例如,输入以下的命令定义一个符号表达式y=-x:

    import theano
    x = theano.tensor.ivector('x')
    y = -x

x和y都是变量,即变量类的实例。x和y的type都是theano.tensor.ivector。y是输出符号变量,而x是输入符号变量。计算的自身是通过apply节点和y.owner来进行访问的。更具体地说,Theano中的每一个变量都是一个基本结构,用来表示在计算中某个具体的点上的基准。通常是符号变量类或者是它的一个子类的实例。

符号变量中有一个特殊的子类:Constant(常量)。常量就是有着一个额外域data的符号变量,它的值在初始化(initialize)后不能再改变。当在计算图中用作Opapplication的输入时,需要假设该输入总是常量的数据域部分,也就是说,需要假设op不会修改该输入。在一个函数的输入列表中,常量是无须指定的。