使用 Tensorflow 的相关系数

Correlation coefficient using Tensorflow

我正在 Python 中手动开发相关系数。我已经使用 NumPy 数组进行开发,但我的矩阵很大,NumPy 需要很长时间。

这是我已有的代码:

def corrcoef_2(x):
c = np.zeros((x.shape[0],x.shape[0],x.shape[0]))
for k1 in range(0,x.shape[0]):
    for k2 in range(0,x.shape[0]):
       c[k1,k2] = correlation(x[k1,:],x[k2,:])
return c

def correlation(T1, T2):
    numerator = np.mean((T1 - T1.mean()) * (T2 - T2.mean()))
    denominator = T1.std() * T2.std()
    if denominator == 0:
        return 0
    else:
        result = numerator / denominator
        return result

我不能使用 Numpy corrcoef 或 TensorFlow 本机方法,因为在我想将我的 corrcoef 函数泛化到三个维度之后。

是否可以使用 TensorFlow 执行我在上面所做的相同操作?我该怎么做?

谢谢。

您会发现这在 tensorflow 中相对简单。大多数 Numpy 操作在 tensorflow 中可用,并且通常采用相同的名称和形式(tensorflow 努力模仿 numpy)。

一些可以帮助您这样做的事情:

  • 请记住,tensorflow 与 numpy 的不同之处在于您需要首先定义所有数学运算(这些是符号),然后要求 tensorflow 使用 [=10= 计算特定值].您应该编写代码,使您有一个 build_graph 函数,其中定义了所有张量流操作。在你创建一个会话后 with tf.Session() as sess: 你应该不需要在那个点之后创建任何 tensorflow 操作(你可以这样做,但这通常意味着你在做一些有问题的事情)。

  • 请注意,您可以像在 numpy 中一样执行 + - * / 等操作,tensorflow 会覆盖这些操作以用 tf.sum 和 [=15= 等 tensorflow 构造替换它们] 视情况而定。

  • 您可以在tensorflow中使用任何numpy操作。一切都需要是张量流操作。如果你绝对不能没有一些 python 代码,你必须明确地用 tf.py_func 包装它,但如果你觉得有必要这样做 post 关于 SO 验证为什么它是必要的问题,它不应该是你的情况。

您的 build_graph 函数看起来应该与您提供的代码非常相似,只是用许多 tf. 函数代替了 numpy 等效函数。

一旦你在 tensorflow 中得到这个 运行ning,你将能够 运行 在 GPU 上进行这些操作,只要你有一个支持 CUDA 的 GPU 并且安装了 tensorflow-gpu ,使用 GPU 没有什么特别需要,tensorflow 会假设这是你的意图。