You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于TensorFlow Tensor实现独立皮尔逊相关系数指标

TensorFlow原生实现皮尔逊相关系数

直接用TensorFlow内置算子实现即可,不需要引入TensorFlow Probability,完全规避依赖冲突和CUDA运行异常问题,实现逻辑严格匹配皮尔逊相关系数的数学定义:

import tensorflow as tf

def p_corr(y_true, y_pred):
    # 统一张量精度,避免类型运算报错
    y_true = tf.cast(y_true, tf.float32)
    y_pred = tf.cast(y_pred, tf.float32)

    # 计算两个序列的均值
    mean_true = tf.reduce_mean(y_true)
    mean_pred = tf.reduce_mean(y_pred)

    # 计算协方差项(皮尔逊系数分子)
    cov = tf.reduce_sum((y_true - mean_true) * (y_pred - mean_pred))

    # 计算两个序列的标准差乘积(皮尔逊系数分母),加极小值避免除零错误
    std_true = tf.sqrt(tf.reduce_sum(tf.square(y_true - mean_true)))
    std_pred = tf.sqrt(tf.reduce_sum(tf.square(y_pred - mean_pred)))
    denominator = std_true * std_pred + 1e-12

    return cov / denominator

使用说明

  • 入参y_true和y_pred要求维度完全一致,支持任意形状的数值型张量输入
  • 所有算子均为TensorFlow原生支持,可兼容eager执行和静态图模式,直接作为模型训练的评估指标传入model.compile(metrics=[p_corr])也可正常运行
  • 分母加入1e-12的极小常数做数值稳定性处理,不会影响正常计算的精度,仅在输入序列为常数(标准差为0)时避免出现NaN异常

该实现返回的相关系数取值范围为[-1, 1],值越接近1代表两个序列正相关性越强,越接近-1代表负相关性越强,接近0代表无线性相关性。

内容的提问来源于stack exchange,提问作者Jimut123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 19:24:28