我有一個問題,我不知道如何計算兩個張量的協方差。我試過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. 如何提高張量流計算時間