theano——Graph Structures

Theano编程的核心是用符号占位把数学关系表示出来。

import theano.tensor as T
x = T.dmatrix('x')
y = x*2.

>>> y.owner.op.name
'Elemwise{mul,no_inplace}'
>>> y.owner.inputs
[x, DimShuffle{x,x}.0]

>>> y.owner.inputs[0]
x
>>> y.owner.inputs[1]
DimShuffle{x,x}.0

编译Theano其实是编译了一张图。

a = T.vector('a')   # declare symbolic variable
b = a + a**10       # build symbolic expression 
f = theano.function([a], b)
                    # compile function
print(f([0, 1, 2]))

图结构中在编译之前要求参与运算的数据结构都需声明各个维度是否可broadcastable。numpy使用的是运行时的shape信息(不需声明,自动broadcast?)。

你可能感兴趣的:(theano——Graph Structures)