所以... Theano 在计算之前为它计算的表达式构建图表。通过将示例中的 'x' 等 theano 变量传递给逻辑回归对象的初始化,您将在对象中创建许多表达式,例如 p_y_given_x,它们是依赖于 x 的 theano 表达式。这稍后用于符号梯度计算。
为了更好地感受它,您可以执行以下操作:
import theano.pp #pp is for pretty print
x = T.dmatrix('x') #naming your variables is a good idea, and important i think
lr = LogisticRegression(x,n_in = 28*28, n_out= 10)
print pp(lr.p_y_given_x)
这应该给你一个输出,比如
softmax( W \dot x + b)
当你在它的时候继续尝试
print pp(T.grad(lr._y_given_x,x)) #might need syntax checkng
这就是 theano 在内部存储表达式的方式。然后就可以使用这些表达式在theano中创建函数了,比如
values = theano.shared( value = mydata, name = 'values')
f = theano.function([],lr.p_y_given_x ,
givens ={x:values},on_unused_input='ignore')
print f()
然后调用 f 应该为您提供 mydata 中定义的值的预测类概率。在 theano 中执行此操作的方法(以及在 DL 教程中执行此操作的方法)是传递一个“虚拟”theano 变量,然后使用“givens”关键字将其设置为包含您的数据的共享变量。这很重要,因为将变量存储在共享变量中允许 theano 使用 GPU 进行矩阵运算。