SailAvid - 4 months ago 70

Python Question

**How can I print the numerical value of a theano TensorVariable?**

I'm new to theano, so please be patient :)

I have a function where I get

`y`

Now I want to debug-print the shape of this

`y`

Using

`print y.shape`

results in the console output (i was expecting numbers, i.e.

`(2,4,4)`

`Shape.0`

Or how can I print the numerical result of for example the following code (this counts how many values in

`y`

`errorCount = T.sum(T.gt(T.abs_(y),T.max(y)/2.0))`

`errorCount`

`T.sum`

But using

`print errCount`

gives me (expected something like

`134`

`Sum.0`

Answer

If y is a theano variable, y.shape will be a theano variable. so it is normal that

```
print y.shape
```

return:

```
Shape.0
```

If you want to evaluate the expression y.shape, you can do:

```
y.shape.eval()
```

if `y.shape`

do not input to compute itself(it depend only on shared variable and constant). Otherwise, if `y`

depend on the `x`

Theano variable you can pass the inputs value like this:

```
y.shape.eval(x=numpy.random.rand(...))
```

this is the same thing for the `sum`

. Theano graph are symbolic variable that do not do computation until you compile it with `theano.function`

or call `eval()`

on them.

**EDIT:** Per the docs, the syntax in newer versions of theano is

```
y.shape.eval({x: numpy.random.rand(...)})
```