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
,op
andoutput
fields. - Variable Node: Red Box. the
owner
ofx
andy
point toNone
, as they are not the results of another computation. If one of them is the result of another computation, it'sowner
field 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.