gpt4 book ai didi

scipy - TensorFlow 乔尔斯基分解

转载 作者:行者123 更新时间:2023-12-03 03:07:41 29 4
gpt4 key购买 nike

通过阅读 TensorFlow 文档,我发现有一种方法可以计算 Cholesky decomposition of a square matrix 。然而,通常当我想使用 Cholesky 分解时,我这样做是为了求解直接矩阵求逆可能不稳定的线性系统。

因此,我正在寻找一种类似于Scipy中实现的方法。 。有谁知道这是否存在于 TensorFlow 中或者是否有办法将其合并?

最佳答案

user19..8:如果您想将事情“主要”保留在 tensorflow 中,那么现在执行此操作的方法是执行您和 Berci 在评论中讨论的操作:运行 tensorflow 图,直到您需要的点求解线性系统,然后用 feed_dict 将结果反馈回来。在伪代码中:

saved_tensor1 = tf.Variable(...)
saved_tensor2 = tf.Variable(...)

start_of_model...
tensor1, tensor2 = various stuff...
do_save_tensor1 = saved_tensor1.assign(tensor1)
do_save_tensor2 = saved_tensor2.assign(tensor2)
your_cholesky = tf.cholesky(your_other_tensor, ...)

## THIS IS THE SPLIT POINT
# Second half of your model starts here
solved_system = tf.placeholder(...) # You'll feed this in with feed_dict
final_answer = do_something_with(saved_tensor1, saved_tensor2, solved_system)

然后要运行整个过程,请执行以下操作:

_, _, cho = tf.run([do_save_tensor1, do_save_tensor2, your_cholesky])
solution = ... solve your linear system with scipy ...
feed_dict = {solved_system: solution}
answer = tf.run(final_answer, feed_dict=feed_dict)

这里的关键是将中间结果存储在 tf.Variables 中,以便您可以在之后恢复计算。

(我并不保证您从 tf.cholesky 中得到的内容能够以正确的格式直接提供给 scipy,或者您不应该在前面的步骤中取出矩阵并将其提供给 scipy,但这个整体工作流程应该适合您)。

请注意,如果您正在进行大量的多核或 GPU 操作,然后必须在将矩阵吐出到 scipy 时进行序列化,这将产生性能瓶颈,但它也可能很好 - 很大程度上取决于您的设置。

关于scipy - TensorFlow 乔尔斯基分解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33709598/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com