美文网首页
tensorflow计算每一个样本的loss关于输入变量的Hes

tensorflow计算每一个样本的loss关于输入变量的Hes

作者: 无解后仰跳投 | 来源:发表于2020-05-23 13:02 被阅读0次

在tensorflow中,计算tensor y 关于tensor x的梯度是

dy_dx = tf.gradients(y, x)[0]

这里其实是计算的d(sum(y))/dx, 但等价于y的每一个分量关于x的导数。

假定有M个batch, 每个样本是N维,即输入x是一个M*N的矩阵,输出y是M*1的向量,如果想要计算每一个y的每一个分量关于x的Hessian矩阵,结果应该是M*N*N的 tensor。采用如下方式

# Hessian matrix batch_size * n_dim * n_dim

grads = tf.gradients(y, [x])[0]

hess = tf.stack([tf.gradients(tmp, [x])[0] for tmp in tf.unstack(grads, axis=1)], axis=2)

相关文章

网友评论

      本文标题:tensorflow计算每一个样本的loss关于输入变量的Hes

      本文链接:https://www.haomeiwen.com/subject/otbkahtx.html