我正在使用TensorFlow中的特征分解,但发现它非常慢。以下是展示TensorFlow速度与numpy和scipy速度对比的代码:
import numpy as np
import scipy as sp
import tensorflow as tf
from time import time
A = np.random.randn(400, 400)
A_tf = tf.constant(A)
cur = time()
d, v = sp.linalg.eig(A)
print(f'sp: {time() - cur:4.2f} s')
cur = time()
d, v = np.linalg.eig(A)
print(f'np: {time() - cur:4.2f} s')
cur = time()
d, v = tf.linalg.eig(A_tf)
print(f'tf: {time() - cur:4.2f} s')
这将产生以下输出:
sp: 0.09 s
np: 0.08 s
tf: 5.04 s
这里有什么想法吗?
tf.linalg.eig
中使用@tf.function
进行包装。有关更多详细信息,请参见此链接。谢谢! - user11530462