无论如何,有没有计算以 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)