所以我想计算以下总和的渐变和Hessian。 Afaik Theano应该能够做到这一点,但我无法弄清楚如何。 X是尺寸为M×N的矩阵; y M大小的矢量; beta一个N大小的矢量。
计算总和的一种方法是使用scan()函数,我这样做:
res,ups = theano.scan(lambda v,w: v*np.log(1/(1+np.exp(-1*w.dot(beta))))
+((1-v)*(np.log(1/(1+np.exp(w.dot(beta)))))), sequences = [y,X])
t7 = theano.function(inputs = [X,y,beta],outputs = res)
就我所知,这是正常的。但是,我不能将它用作关于beta的grad()函数的输入。 所以我想知道的是,是否有办法使用扫描函数作为grad函数的输入或使用不同的方法来计算总和。
(我首先尝试了同情,但是同情不能lambdify Indexedbase对象,所以我可以计算毕业但不能将它用作函数,也许这有帮助吗?)
Sum在X和beta中加上一条线的Dot Product的函数,而二元向量y决定将使用两个函数中的哪一个。
log(1/(1+exp(-X_i*beta)))
希望有帮助吗?