Graph Structure
Graph Definition
theano's symbolic mathematical computation, which is composed of:
- Apply node: the application of an operator to some variable.
- Variable node: symbolic varibles.
- Op node: mathematical operation like:
+,-,*,\,sqrt,sum,tanh. - Types: describe data type.
Example
Code
>>> import theano.tensor as T
>>> x = T.matrix('x')
>>> y = T.matrix('y')
>>> z = x + y
>>> print z.owner
Elemwise{add,no_inplace}(Elemwise{pow,no_inplace}.0, y)

- python object references: Arrow.
- Apply node: blue box. is composed of
inputs,opandoutputfields. - Variable Node: Red Box. the
ownerofxandypoint toNone, as they are not the results of another computation. If one of them is the result of another computation, it'sownerfield would point to another Apply Node. - Op Node: Green circle.
- Types: Purple boxes.
Note: Apply Node points to z, so z.owner points back to the Apply instance.
Graph Structures
Apply
internal node represent of computation graph in theano, which can be accessed by variable_name.owner.
the Apply Node has three fields, and can be created by gof.Apply(op,inputs,outputs):
- Op: the function to be applied.
- inputs:the arguments of the functions.
- outputs: the return value of the function.
Op
certain computation on some inputs and producing some types of outputs.
Type
it helps to tailor C code to handle and optimize the computation graph.
Variable
- type:
- owner: None or
Apply Node - index
- name: string for debugging
Constant
a constant is a variable. it assume the Op Node will not modify the inputs.