为什么Python的pdb和代码模块与Theano的交互方式不同

时间:2016-05-11 15:36:30

标签: python theano pdb

我一直在尝试调试一些Theano代码,为此我使用了Keras作为前端。我一直在做的是插入:

import pdb
pdb.set_trace()

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

我希望开始与我的代码进行交互以查看正在进行的操作以及交互式测试解决方案。但是,当我使用pdb与我的代码进行交互时,我看到了这种奇怪的行为:

--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)

所以,pdb知道T和fvector是什么,它只是不会创建一个Theano fvector变量。

然而,使用代码,我看到了这个(更好)的行为:

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

为什么会出现这种差异?

1 个答案:

答案 0 :(得分:0)

因为apdb命令(alias的缩写),所以当您尝试运行该命令而不是Python语句时,a=T.fvector()会被解析。