a6657266的个人博客分享 http://blog.sciencenet.cn/u/a6657266

博文

python计算导数jacobian以及hessian

已有 15325 次阅读 2013-7-11 20:40 |系统分类:科研笔记| Python

计算雅克比矩阵

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)





https://blog.sciencenet.cn/blog-571755-707260.html

上一篇:python shared数据类型更改,print
下一篇:python theano中的四个模式
收藏 IP: 210.72.26.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-22 22:25

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部