我有一个问题,我不知道如何计算两个张量的协方差。我试过contrib.metrics.streaming_covariance
。但总是返回0
。一定有一些错误。如何计算张量流中的协方差?
1
A
回答
1
你可以用两个随机变量X
和Y
与预期值x0
和y0
的协方差的定义:
cov_xx = 1/(N-1) * Sum_i ((x_i - x0)^2)
cov_yy = 1/(N-1) * Sum_i ((y_i - y0)^2)
cov_xy = 1/(N-1) * Sum_i ((x_i - x0) * (y_i - y0))
的关键点是估计x0
和y0
她e,因为你通常不知道概率分布。在许多情况下,x_i
或y_i
的平均值估计分别是x_0
或y_0
,即分布估计是均匀的。
然后你可以计算的协方差矩阵的内容如下:
import tensorflow as tf
x = tf.constant([1, 4, 2, 5, 6, 24, 15], dtype=tf.float64)
y = tf.constant([8, 5, 4, 6, 2, 1, 1], dtype=tf.float64)
cov_xx = 1/(tf.shape(x)[0] - 1) * tf.reduce_sum((x - tf.reduce_mean(x))**2)
cov_yy = 1/(tf.shape(x)[0] - 1) * tf.reduce_sum((y - tf.reduce_mean(y))**2)
cov_xy = 1/(tf.shape(x)[0] - 1) * tf.reduce_sum((x - tf.reduce_mean(x)) * (y - tf.reduce_mean(y)))
with tf.Session() as sess:
sess.run([cov_xx, cov_yy, cov_xy])
print(cov_xx.eval(), cov_yy.eval(), cov_xy.eval())
当然,如果你需要的协方差矩阵形式,你可以按照如下修改的最后一部分:
with tf.Session() as sess:
sess.run([cov_xx, cov_yy, cov_xy])
print(cov_xx.eval(), cov_yy.eval(), cov_xy.eval())
cov = tf.constant([[cov_xx.eval(), cov_xy.eval()], [cov_xy.eval(),
cov_yy.eval()]])
print(cov.eval())
要验证的TensorFlow方式的元素,你可以用numpy的检查:
import numpy as np
x = np.array([1,4,2,5,6, 24, 15], dtype=float)
y = np.array([8,5,4,6,2,1,1], dtype=float)
pc = np.cov(x,y)
print(pc)
0
函数contrib.metrics.streaming_covariance
创建一个update_op
操作,该操作更新基础变量并返回更新的协方差。所以你的代码应该是:
x = tf.constant([1, 4, 2, 5, 6, 24, 15], dtype=tf.float32)
y = tf.constant([8, 5, 4, 6, 2, 1, 1], dtype=tf.float32)
z, op = tf.contrib.metrics.streaming_covariance(x,y)
with tf.Session() as sess:
tf.global_variables_initializer().run()
tf.local_variables_initializer().run()
sess.run([op])
print(sess.run([z]))
#Output
[-17.142859]
相关问题
- 1. 如何计算张量流中的单位方差?
- 2. 如何计算张量流量损失?
- 3. 如何计算张量流中张量的形状
- 4. 协方差矩阵计算
- 5. 计算张量流中二阶导数时的误差
- 6. 如何计算n维变量之间的协方差
- 7. Java中的计算协方差矩阵
- 8. 如何从随机向量计算协方差矩阵?
- 9. 在Matlab中计算协方差矩阵
- 10. 多元统计协方差计算
- 11. 在张量流中计算交叉熵
- 12. 如何计算Python中的自协方差
- 13. 使用Excel计算协方差矩阵
- 14. 运行(单程)协方差计算
- 15. 使用VBA计算协方差矩阵
- 16. 计算协方差矩阵式
- 17. 计算方差和协方差的数据声明
- 18. 是否有可能根据两个变量之间的协方差与第三个变量计算协方差
- 19. 如何在张量流中制作张量柱的直方图
- 20. 如何计算协方差的导数/梯度?
- 21. 我如何计算2幅图像之间的协方差?
- 22. tf.nn.moments如何计算方差?
- 23. 如何计算perl中的方差?
- 24. 如何更有效地计算滚动协方差
- 25. 如何从ff_matrix高效地计算协方差矩阵
- 26. 如何用熊猫计算协方差矩阵
- 27. 如何加入张量流中的张量张量?
- 28. 计算协方差矩阵 - numpy.cov和numpy.dot之间的差异?
- 29. PyMC - 方差 - 协方差矩阵估计
- 30. 如何提高张量流计算时间