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。有任何想法吗?
假设X和Y是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。