我想通过 Tensorflow 计算雅可比矩阵。
我拥有的:
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])
fn
是一个损失函数,vars
都是可训练的变量,而 data_num
是一组数据。但是如果我们增加数据的数量,运行函数
compute_grads
会花费大量的时间。 .有任何想法吗?
最佳答案
假设 X
和 Y
是 Tensorflow 张量和 Y
取决于 X
:
from tensorflow.python.ops.parallel_for.gradients import jacobian
J=jacobian(Y,X)
结果具有形状
Y.shape + X.shape
并提供Y
的每个元素的偏导数关于 X
的每个元素.
关于python - 在 Tensorflow 中计算雅可比矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50244270/