无论如何,有没有计算以 theano 张量为输入的皮尔逊相关性?
Is there anyway to calculate pearson correlation having inputs as theano tensors?
scipy.stats包提供了用numpy数组计算皮尔逊系数的函数。但是有没有一个库我们可以将 theano 张量作为输入传递并计算相关性。 Eval() 函数是将张量转换为值的选项,但这在代码的 运行 时间内是不可能的。
中心余弦相似度与皮尔逊相关性相同
在theano中可以这样计算:
a = T.vector(dtype=theano.config.floatX)
b = T.vector(dtype=theano.config.floatX)
a_centered, b_centered = a - a.mean(), b - b.mean()
r_num = T.dot(a_centered, b_centered)
r_den = T.sqrt(T.dot(a_centered, a_centered) * T.dot(b_centered, b_centered))
# written without the dot products for pedagogical reasons
# r_num = T.sum(a_centered * b_centered)
# r_den = T.sqrt(T.sum(a_centered ** 2) * T.sum(b_centered ** 2))
pearson_corr = r_num / r_den
pearson_corr_fn = theano.function([a, b], pearson_corr)
v1 = np.asarray([3, 4, 5, 7], dtype=np.float32)
v2 = np.asarray([2, 5, 3, 1], dtype=np.float32)
print pearson_corr_fn(v1, v2)
scipy.stats包提供了用numpy数组计算皮尔逊系数的函数。但是有没有一个库我们可以将 theano 张量作为输入传递并计算相关性。 Eval() 函数是将张量转换为值的选项,但这在代码的 运行 时间内是不可能的。
中心余弦相似度与皮尔逊相关性相同
在theano中可以这样计算:
a = T.vector(dtype=theano.config.floatX)
b = T.vector(dtype=theano.config.floatX)
a_centered, b_centered = a - a.mean(), b - b.mean()
r_num = T.dot(a_centered, b_centered)
r_den = T.sqrt(T.dot(a_centered, a_centered) * T.dot(b_centered, b_centered))
# written without the dot products for pedagogical reasons
# r_num = T.sum(a_centered * b_centered)
# r_den = T.sqrt(T.sum(a_centered ** 2) * T.sum(b_centered ** 2))
pearson_corr = r_num / r_den
pearson_corr_fn = theano.function([a, b], pearson_corr)
v1 = np.asarray([3, 4, 5, 7], dtype=np.float32)
v2 = np.asarray([2, 5, 3, 1], dtype=np.float32)
print pearson_corr_fn(v1, v2)