In [1]:
import theano.tensor as T
x = T.dmatrix("x")
y = T.dmatrix("y")
z = x + y
In [2]:
type(z)
Out[2]:
In [5]:
type(z.owner)
Out[5]:
In [7]:
z.owner.op.name
Out[7]:
In [8]:
w = x * 2
w.owner.op.name
Out[8]:
In [13]:
print(w.owner)
print(len(w.owner.inputs))
print(w.owner.inputs) # second input is not 2
In [14]:
print(z.owner)
print(len(z.owner.inputs))
print(z.owner.inputs)
In [18]:
w.owner.inputs[1].owner.inputs
Out[18]:
In [1]:
# graph visualization
import theano
import pydot
v = theano.tensor.vector()
from IPython.display import SVG
SVG(theano.printing.pydotprint(v*2, return_image=True,
format='svg'))
Out[1]:
In [2]:
# optimization visualization
import theano
import pydot
a = theano.tensor.vector("a")
b = a + a ** 10
f = theano.function([a], b)
print(f([0,1,2]))
In [6]:
theano.printing.pydotprint(b, outfile = './grap.png', var_with_name_simple=True)
In [8]:
theano.printing.pydotprint(f, outfile="./graph_opt.png", var_with_name_simple=True)
In [ ]: