在Tensorflow中计算jacobian矩阵

Whi*_*ear 2 python gradient tensorflow

我想通过Tensorflow计算Jacobian矩阵。

是)我有的:

def compute_grads(fn, vars, data_num):
    grads = []
    for n in range(0, data_num):
        for v in vars:
            grads.append(tf.gradients(tf.slice(fn, [n, 0], [1, 1]), v)[0])
    return tf.reshape(tf.stack(grads), shape=[data_num, -1])
Run Code Online (Sandbox Code Playgroud)

fn是损失函数,vars都是可训练的变量,并且data_num是许多数据。

但是,如果我们增加数据数量,则需要花费大量时间来运行该功能compute_grads。有任何想法吗?

Tri*_*een 5

假设XY是Tensorflow张量,并且Y取决于X

from tensorflow.python.ops.parallel_for.gradients import jacobian
J=jacobian(Y,X)
Run Code Online (Sandbox Code Playgroud)

结果具有形状,Y.shape + X.shape并提供的每个元素Y相对于的每个元素的偏导数X

  • 不。此上下文中的 + 号是元组串联(即 a1,a2..,an,b1,b2.,...,bn)。 (2认同)