【问题标题】:Correlation coefficient using Tensorflow使用 Tensorflow 的相关系数
【发布时间】:2018-10-01 17:56:54
【问题描述】:

我正在用 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 做与我在上面做的相同的事情?我该怎么做?

谢谢。

【问题讨论】:

    标签: python tensorflow correlation


    【解决方案1】:

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

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

    • 请记住,tensorflow 与 numpy 不同,因为您需要先定义所有数学运算(这些是符号),然后让 tensorflow 使用 sess.run 计算特定值。您应该编写代码,以便拥有一个 build_graph 函数,其中定义了所有 tensorflow 操作。在创建会话 with tf.Session() as sess: 之后,您应该不需要在该点之后创建任何 tensorflow 操作(您可以这样做,但这通常意味着您正在做一些错误的事情)。

    • 请注意,您可以像在 numpy 中一样执行 + - * / 之类的操作,tensorflow 会覆盖这些操作,以酌情用 tf.sumtf.multiply 之类的 tensorflow 构造替换它们。

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

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

    一旦你在 tensorflow 中运行了这些操作,只要你有一个启用 CUDA 的 GPU 并安装了tensorflow-gpu,你就可以非常简单地在 GPU 上运行这些操作,使用 GPU 没有什么特别需要的,tensorflow 会假设那是你的意图。

    【讨论】:

      猜你喜欢
      • 2017-02-15
      • 2018-06-15
      • 1970-01-01
      • 2022-12-09
      • 1970-01-01
      • 1970-01-01
      • 2013-09-29
      • 2012-12-07
      • 1970-01-01
      相关资源
      最近更新 更多