作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如何在 tensorflow 中获取协方差矩阵?就像 numpy
中的 numpy.cov()
一样。
例如,我想获取张量 A
的协方差矩阵,现在我必须改用 numpy
A = sess.run(model.A, feed)
cov = np.cov(np.transpose(A))
有没有办法通过 tensorflow 而不是 numpy 来获取 cov
?
这与问题不同 how to compute covariance in tensorflow ,他们的问题是计算两个向量的协方差,而我的问题是使用 tensorflow API 有效地计算矩阵(二维张量)的协方差矩阵
最佳答案
这已经晚了几个月,但无论如何发布是为了完整性。
import numpy as np
import tensorflow as tf
def tf_cov(x):
mean_x = tf.reduce_mean(x, axis=0, keep_dims=True)
mx = tf.matmul(tf.transpose(mean_x), mean_x)
vx = tf.matmul(tf.transpose(x), x)/tf.cast(tf.shape(x)[0], tf.float32)
cov_xx = vx - mx
return cov_xx
data = np.array([[1., 4, 2], [5, 6, 24], [15, 1, 5], [7,3,8], [9,4,7]])
with tf.Session() as sess:
print(sess.run(tf_cov(tf.constant(data, dtype=tf.float32))))
## validating with numpy solution
pc = np.cov(data.T, bias=True)
print(pc)
关于python - 如何在 tensorflow 中获得协方差矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47709854/
我是一名优秀的程序员,十分优秀!