当前位置: 首页 > 面试题库 >

在Tensorflow中计算jacobian矩阵

伍弘盛
2023-03-14
问题内容

我想通过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])

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

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


问题答案:

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

from tensorflow.python.ops.parallel_for.gradients import jacobian
J=jacobian(Y,X)

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



 类似资料:
  • 我有一个矩阵。只有唯一的颜色以不同的权重重复它们自己。从它们中,我得选择一半,另一半必须用从第一个中最接近的元素替换。 我想到了在图像中循环,并搜索最近的颜色为当前的一个。找到后,我把一个换成另一个。 但我有3个循环、、。前两个I循环通过RGB矩阵,第三个用于循环到包含最终颜色的矩阵。这需要一些时间来计算。 可以做些什么来加快它的速度? 循环如下所示: 表示选择为最终颜色的半色。 我可以考虑一些小

  • 问题内容: 最近,我一直在玩 TensorFlow, 并提到该框架无法使用我所有可用的计算资源。在卷积神经网络教程中,他们提到 天真地采用模型参数的异步更新会导致次优的训练性能,因为单个模型副本可能会在模型参数的陈旧副本上进行训练。相反,采用完全同步更新将与最慢的模型副本一样慢。 尽管他们在教程和白皮书中都提到了这一点,但我并没有真正找到在本地计算机上进行异步并行计算的方法。可能吗 还是它是Ten

  • 问题内容: 我正在尝试计算Java中的逆矩阵。 我遵循伴随方法(首先计算伴随矩阵,然后转置该矩阵,最后将其乘以行列式值的倒数)。 当矩阵不太大时有效。我检查过,对于尺寸最大为12x12的矩阵,可以快速提供结果。但是,当矩阵大于12x12时,完成计算所需的时间呈指数增长。 我需要反转的矩阵是19x19,并且花费太多时间。消耗更多时间的方法是用于行列式计算的方法。 我使用的代码是: 有人知道如何更有效

  • 如上所述,我需要用Python找到矩阵的基-2-对数。当然,我知道公式$log_a(x)=ln(x)/ln(a)$,其中ln是自然对数,但据我所知,这只适用于标量参数x(如果我错了请纠正我)。至少我还没有看到任何论据,为什么这也适用于矩阵。 那么,有人知道是否存在这样一个内置在matrix-log2函数吗? 或者:由于几年前我使用过Mathematica,所以我知道了MatrixFunction[

  • 本章将重点介绍如何开始使用分布式TensorFlow。目的是帮助开发人员了解重复出现的基本分布式TF概念,例如TF服务器。我们将使用Jupyter Notebook来评估分布式TensorFlow。使用TensorFlow实现分布式计算如下所述 - 第1步 - 为分布式计算导入必需的模块 - 第2步 - 使用一个节点创建TensorFlow集群。让这个节点负责一个名称为“worker”的作业,并在

  • 问题内容: 在MATLAB中,您可以使用函数来计算矩阵的Jordan范式。 在NumPy和SciPy中有可用的等效功能吗? 问题答案: MATLAB jordan函数来自Symbolic Math Toolbox,因此从SymPy库中获取Python替代品似乎并不合理。具体来说,该类具有method 。创建sympy矩阵时,可以将numpy数组作为参数传递。例如,以下摘自Jordan标准格式的Wi