购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 符号计算图模型

符号变量定义后,需要说明这些变量间的运算关系,那如何描述变量间的运算关系呢?Theano实际采用符号计算图模型来实现。首先创建表达式所需的变量,然后通过操作符(op)把这些变量结合在一起,如前文图2-1所示。

Theano处理符号表达式时是通过把符号表达式转换为一个计算图(graph)来处理(TensorFlow也使用了这种方法,等到我们介绍TensorFlow时,大家可对比一下),符号计算图的节点有:variable、type、apply和op。

·variable节点:即符号的变量节点,符号变量是符号表达式存放信息的数据结构,可以分为输入符号和输出符号。

·type节点:当定义了一种具体的变量类型以及变量的数据类型时,Theano为其指定数据存储的限制条件。

·apply节点:把某一种类型的符号操作符应用到具体的符号变量中,与variable不同,apply节点无须由用户指定,一个apply节点包括3个字段:op、inputs、outputs。

·op节点:即操作符节点,定义了一种符号变量间的运算,如+、-、sum()、tanh()等。

Theano是将符号表达式的计算表示成计算图。这些计算图是由Apply和Variable将节点连接而组成,它们分别与函数的应用和数据相连接。操作由op实例表示,而数据类型由type实例表示。下面这段代码和图2-2说明了这些代码所构建的结构。借助这个图或许有助于你进一步理解如何将这些内容拟合在一起:


import theano
import numpy as np
import theano.tensor as T

x = T.dmatrix('x')  
y = T.dmatrix('y')  
z = x + y

图2-2 符号计算图

图2-2中箭头表示指向Python对象的引用。中间大的长方形是一个Apply节点,3个圆角矩形(如X)是Variable节点,带+号的圆圈是ops,3个圆角小长方形(如matrix)是Types。

在创建Variables之后,应用Apply ops得到更多的变量,这些变量仅仅是一个占位符,在function中作为输入。变量指向Apply节点的过程是用来表示函数通过owner域来生成它们。这些Apply节点是通过它们的inputs和outputs域来得到它们的输入和输出变量。

x和y的owner域的指向都是None,这是因为它们不是另一个计算的结果。如果它们中的一个变量是另一个计算的结果,那么owner域将会指向另一个蓝色盒。 LGD9Invr9sgBbSwpHV2OIwF2X8IGPw8Hl9uCRjJSwmleWOQuHlrqdbT3xFU6TdRI

点击中间区域
呼出菜单
上一章
目录
下一章
×