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

PyMC输入维度不匹配问题求助:矩阵点积维度异常排查

PyMC中logit_p维度不匹配问题的解决

你的核心问题是点积计算方式错误:

  • 代码里的X_data * beta是元素级逐元素乘法,不是矩阵与向量的点积运算。X_data维度(198,37),beta维度(37,),逐元素相乘后得到的是(198,37)的二维张量,但Bernoulli分布要求logit_p必须和观测值y_data同维度(一维,198个元素),这直接导致了维度不匹配的错误。

修正步骤:

  1. 替换点积计算方式:
    把X_data * beta改成pm.math.dot(X_data, beta)或者X_data @ beta,这两种方式都会正确计算矩阵与向量的点积,输出(198,)的一维向量,和y_data维度匹配。
  2. 清理冗余代码:
    你定义了priors_for_covariates列表但完全没用到,建议删掉这段代码,避免混淆。

修正后的代码:

with pm.Model() as model:
    X_data = pm.Data("X", standard_scaler.transform(X))
    y_data = pm.Data("y", y.values)
    beta = pm.Normal("beta", mu=0, tau=0.0001, shape=(X.shape[1]))
    # 改用矩阵点积计算logit_p
    logit_p = pm.Deterministic("logit_p", pm.math.dot(X_data, beta))
    print(X_data.shape)
    likelihood = pm.Bernoulli("likelihood", logit_p=logit_p, observed=y_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 07:52:11