安装并导入theano.tensor时遇numpy AttributeError问题求助
解决Theano导入时的
np.bool AttributeError问题 错误原因
这个错误是由于NumPy 1.20及以上版本弃用了np.bool这个别名(原指向内置bool),而旧版Theano仍在调用这个已被移除的API,导致导入失败。
解决方案
以下三种方法任选其一即可:
1. 降级NumPy到兼容版本
卸载当前高版本NumPy,安装Theano兼容的旧版本:
pip uninstall -y numpy pip install numpy==1.19.5
2. 安装Theano开发版(已修复该问题)
Theano的开发分支已经适配了NumPy的新版本,直接安装开发版即可:
pip uninstall -y theano pip install git+https://github.com/Theano/Theano.git
3. 添加临时兼容补丁(无需修改版本)
在导入Theano之前,手动将np.bool映射到官方推荐的np.bool_,添加以下代码即可:
import numpy as np # 临时兼容np.bool别名 np.bool = np.bool_
修改后的完整代码示例:
import numpy as np # 临时兼容补丁 np.bool = np.bool_ import theano.tensor as tt import pymc as pm N = 100 with pm.Model() as model: p = pm.Uniform("freq_cheating", 0, 1) with model: true_answers = pm.Bernoulli("truths", p, shape=N, testval=np.random.binomial(1, 0.5, N)) with model: first_coin_flips = pm.Bernoulli("first_flips", 0.5, shape=N, testval=np.random.binomial(1, 0.5, N)) with model: second_coin_flips = pm.Bernoulli("second_flips", 0.5, shape=N, testval=np.random.binomial(1, 0.5, N)) with model: val = first_coin_flips*true_answers + (1 - first_coin_flips)*second_coin_flips observed_proportion = pm.Deterministic("observed_proportion", tt.sum(val)/float(N))
内容的提问来源于stack exchange,提问作者Karol
相关产品推荐
相关产品推荐

