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

pymc3报initvals未使用ValueError错误解决方案

报错根因

这个错误是PyMC3版本API不匹配导致的,和系统、C++编译器、Theano版本无关。
Automated Recommendation Tool(ART)的源码是基于PyMC3 3.8及更早版本编写的,在PyMC3 3.9及之后的版本中,pm.sample()的参数规则做了调整:旧版本用于传入采样初始值的initvals参数被改名为start,且参数不再透传给步方法初始化逻辑。你当前安装的是PyMC3 3.11.4,代码里传的initvals会被当成未识别的步方法参数,直接抛出ValueError。

修复方案

二选一即可,优先选第一个方案,改动最小、不会引发依赖冲突。

方案1:修改ART源码适配新版PyMC3(推荐)

找到本地ART安装目录下的art/core.py文件,定位到1428行附近的pm.sample()调用块,做一处参数名修改即可:

  • 将传入的initvals=initvals修改为start=initvals

修改后的对应代码段如下:

step = pm.NUTS()
self.trace[j] = pm.sample(
    const.n_iterations,
    step=step,
    start=initvals,
    progressbar=progressbar,
    tune=const.tune_steps,
    cores=cores,
    return_inferencedata=False,
)

保存修改后重新运行代码即可解决该报错。
补充:如果后续运行碰到其他参数类报错,都是同一类版本适配问题,对照PyMC3 3.11.4的API说明替换对应参数名即可,不存在底层逻辑冲突。

方案2:降级PyMC3到ART适配版本

如果不想修改源码,可以直接将PyMC3降级到3.8版本,和ART原生适配:

# pip环境执行
pip install pymc3==3.8

# conda环境执行
# conda install pymc3=3.8

降级完成后无需改任何代码,直接运行即可。该方案的缺点是老版本PyMC3可能和当前环境的其他依赖产生版本冲突,稳定性不如方案1。

额外注意事项

如果修复参数问题后,多核心采样出现进程卡死、随机数种子异常的问题,可以把pm.sample()里的cores参数暂时设为1,单核心跑通后再尝试调大核心数,这是Linux环境下PyMC3多进程fork和新版Theano的已知兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 09:06:49