python编程求导数_科学网-python计算导数jacobian以及hessian-于博的博文

计算雅克比矩阵

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)

转载本文请联系原作者获取授权,同时请注明本文来自于博科学网博客。

收藏

分享

分享到:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值