TensorFlow中的矩阵幂



给定一个整数k和一个对称矩阵A(作为tf.Variable(,如何计算Ak次方

tf.matmul(A, tf.matmul(A, tf.matmul(A, ...)... )

TensorFlow中最有效?

使用tf.while_loop应该非常有效:

import tensorflow as tf
k = 3
A = tf.Variable([[1, -3], [2, 5]])
result = tf.Variable(A)
i = tf.constant(0)
c = lambda i: tf.less(i, k - 1)
def body(i):
result.assign(tf.matmul(A, result))
return [tf.add(i, 1)]
_ = tf.while_loop(c, body, [i])
print(result)
<tf.Variable 'Variable:0' shape=(2, 2) dtype=int32, numpy= array([[-41, -75], [ 50, 59]], dtype=int32)>

这可能是解决这个问题的一种方法
i。将矩阵A转换为numpy ndarray(比方说B(
ii。使用:np.linalg.matrix_power(B,k(
iii.计算B的k次方。将结果转换回tf.Variable

以下是上述方法的工作代码

import tensorflow as tf
import numpy as np
k = 2
A = tf.Variable([[1, -3], [2, 5]])
B = A.numpy()
M = np.linalg.matrix_power(B, k)
power = tf.Variable(M)
print(power)

您也可以对分数执行此操作。如果你需要它保持在张量形式,使用(1+x(^n的泰勒级数和整数幂的近似解,其中1是单位矩阵

不太确定你会用它做什么,但你可能会找到一些很酷的东西。

相关内容

  • 没有找到相关文章

最新更新