T.hessian在theano中给出了NotImplementedError()

时间:2015-11-03 15:32:28

标签: python theano

它是如何运作的

    g_W = T.grad(cost=cost, wrt=classifier.vparamW) 

而这

    H_W=T.hessian(cost=cost, wrt=classifier.vparamW)

给出NotImplementedError() 可能是这种成本函数的问题:

    -T.mean(T.log(self.p_y_given_x)[T.arange(y.shape[0]), y]) 

这里y是从0到n-1和

的类标签的向量
    self.p_y_given_x = T.nnet.softmax(T.dot(input, self.W) + self.b) 

1 个答案:

答案 0 :(得分:1)

我无法使用已提供的有限代码重现此问题。不过,以下是T.gradT.hessian的完整工作演示。

import numpy
import theano
import theano.tensor as T

x = T.matrix()
w_flat = theano.shared(numpy.random.randn(3, 2).astype(theano.config.floatX).flatten())
w = w_flat.reshape((3, 2))
cost = T.pow(theano.dot(x, w), 2).sum()
g_w = T.grad(cost=cost, wrt=[w])
h_w = T.hessian(cost=cost, wrt=[w_flat])
f = theano.function([x], outputs=g_w + h_w)
for output in f(numpy.random.randn(4, 3).astype(theano.config.floatX)):
    print output.shape, '\n', output

请注意wrt的{​​{1}}值必须是矢量。