||
计算雅克比矩阵
theano.gradient.jacobian()
>>>x=T.dvector('x')
>>>y=x**2
>>>J,updates=theano.scan(lambda i,y,x:T.grad(y[i],x),sequences=T.arange(y.shape[0]),non_sequences=[y,x])
>>>f=function([x],J,updates=updates)
计算hessian矩阵
theano.gradient.hessian()
>>>x=T.dvector('x')
>>>y=x**2
>>>cost=y.sum()
>>>gy=T.grad(cost,x)
>>>H,updates=theano.scan(lambda i,gy,x:T.grad(gy[i],x),sequences=T.arange(gy.shape[0]),non_sequences=[gy,x])
>>>f=function([x],H,updates=updates)
雅克比矩阵与vector相乘
R-operator是计算雅克比矩阵乘以vector
>>>W=T.dmatrix('W')
>>>V=T.dmatrix('V')
>>>x=T.dvector('x')
>>>y=T.dot(x,W)
>>>JV=T.Rop(y,W,V)
>>>f=theano.function([W,V,x],JV)
L-operator计算vector乘以雅克比矩阵
VJ=T.Lop(y,W,V)
v在Lop中与输出矩阵的形状一致,v在Rop中与输入x的形状一致
Hessian
>>>x=T.dvector('x')
>>>v=T.dvector('v')
>>>y=T.sum(x**2)
>>>gy=T.grad(y,x)
>>>HV=T.Rop(gy,x,v)
>>>f=function([x,v],HV)
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-22 22:25
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社