2016-05-11 1 views
0

J'ai essayé de déboguer du code Theano, pour lequel j'ai utilisé Keras comme frontal. Ce que je fais est d'insérer soit:Pourquoi les modules pdb et code de Python interagissent-ils différemment avec Theano?

import pdb 
pdb.set_trace() 

ou

import code 
code.interact(local=locals(), banner='==>") 

au point où je veux commencer à interagir avec mon code pour voir ce qui se passe et de tester de manière interactive des solutions. Mais, quand je l'utilise pdb pour interagir avec mon code, je vois ce comportement étrange:

--Return-- 
> /home/me/Projects/keras_expts2/cifar10_cnn_ecoc2a.py(174)<module>()->None 
-> pdb.set_trace() 
(Pdb) import theano.tensor as T 
(Pdb) a=T.fvector() 
(Pdb) type(a) 
*** NameError: name 'a' is not defined 
(Pdb) T 
<module 'theano.tensor' from '/home/smgutstein/Downloads/Theano/theano/tensor/__init__.pyc'> 
(Pdb) T.fvector 
TensorType(float32, vector) 

Alors, pdb sait ce que T et fvector sont, juste ne crée pas une variable fvector Théano.

Cependant, en utilisant le code, je vois cela (mieux) Comportement:

==> 
>>> import theano.tensor as T 
>>> a = T.fvector() 
>>> type(a) 
<class 'theano.tensor.var.TensorVariable'> 
>>> T.fvector 
TensorType(float32, vector) 
>>> 

Pourquoi cette différence?

Répondre

0

Parce que a est une commande pdb (abréviation de alias), a=T.fvector() obtient analysé comme vous essayez d'exécuter cette commande plutôt que l'instruction Python.