如何在Theano函数内部打印值?

4 投票
1 回答
1090 浏览
提问于 2025-04-18 17:29

我最近从Matlab/C++转到Theano,写了一个函数

train_model = theano.function([x_in, y_index],
                          classifier.cost,
                          updates=updates,
                          givens={
                              x: x_in,
                              y: y_in[y_index]})

我想在每次迭代中打印出网络中两个层之间的值(这样可以帮助调试,更好地控制函数等等)。我尝试修改函数,设置分类器,让它打印出来(可以用print()或者theano.printing.Print/theano.pp()),但我只得到了一次打印,还是在模型设置的时候。

1 个回答

4

在你的例子中,classifier.cost 是一个表达式,可能是由几个其他表达式组成的,这些表达式都是基于相同的输入。你可以把这些中间的表达式变成函数,就像你对 classifier.cost 所做的那样,比如:

f_first_layer = theano.function([x], first_layer)

然后你可以在每次调用 train_model 之后,调用并打印这个函数的输出。如果你在调用 train_model 之前,用和之后调用 train_model 一样的参数来调用它,那么你就能得到 train_model 评估时各层的确切输出(如果在 train_model 之后调用它,结果会不同,因为会有更新)。

撰写回答