python求高阶导数_TensorFlow:计算Hessian矩阵(和高阶导数)

本文介绍了如何使用TensorFlow在Python中计算高阶导数,特别是展示了一个计算Hessian矩阵的例子。通过定义一个二次函数,然后利用`tf.gradients`进行两次微分,得到Hessian矩阵。在示例中,尽管变量随机,由于函数的二次性质,Hessian矩阵的值始终为常数。
摘要由CSDN通过智能技术生成

好吧,你可以不费吹灰之力就计算出海森矩阵!

假设有两个变量:x = tf.Variable(np.random.random_sample(), dtype=tf.float32)

y = tf.Variable(np.random.random_sample(), dtype=tf.float32)

以及使用这两个变量定义的函数:f = tf.pow(x, cons(2)) + cons(2) * x * y + cons(3) * tf.pow(y, cons(2)) + cons(4) * x + cons(5) * y + cons(6)

其中:def cons(x):

return tf.constant(x, dtype=tf.float32)

所以用代数术语来说,这个函数是

现在,我们定义了一种计算hessian的方法:def compute_hessian(fn, vars):

mat = []

for v1 in vars:

temp = []

for v2 in vars:

# computing derivative twice, first w.r.t v2 and then w.r.t v1

temp.append(tf.gradients(tf.gradients(f, v2)[0], v1)[0])

temp = [cons(0) if t == None else t for t in temp] # tensorflow returns None when there is no gradi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值