用python调用caffe时出错:AttributeError: 'module' object has no attribute 'bool_'

本文介绍了解决Caffe与NumPy中IO模块命名冲突的方法,包括重命名Caffe的io.py文件以及调整环境变量中Caffe的路径设置,以避免在使用Caffe时出现错误。

由于用caffe的时候需要将/somepath/your_caffe/python include进来作为环境变量,但是caffe中有个io.py和numpy的io冲突,所以导致这种现象。

下面给出了一种解决方法,即对有冲突的io文件进行重命名:

numpyのioとPyCaffeのio.pyが競合するようです。(Strange Issue using Python #782)

$ python classify.py --raw_scale 255 ~/caffe/101_ObjectCategories/airplanes/image_0001.jpg ../result.npy
Traceback (most recent call last):
  File "classify.py", line 7, in <module>
    import numpy as np

...


  File "/usr/local/lib/python2.7/dist-packages/skimage/util/dtype.py", line 8, in <module>
    dtype_range = {np.bool_: (False, True),
AttributeError: 'module' object has no attribute 'bool_'

無理やりな方法ですがio.pyをcaffe_io.pyにrenameします。
ここでrenameした場合には、次の”Caffeを特徴抽出器として使った分類”に作成するfeature.pyでもrenameする必要があります。

$ cd ~/caffe/python/
$ aftfile="caffe_io"
$ for file in `find . -name "*.py"`; do; cat $file | sed -e "s/import [\w\.]*io/import $aftfile/g" | sed -e "s/caffe\.io/caffe\.$aftfile/g" > $file".tmp";mv $file".tmp" $file; done
$ mv "caffe/io.py" "caffe/"$aftfile".py"

另外,还可以先将PATH中的caffe的路径去掉,然后import numpy,然后在通过sys.path.append把caffe的路径显式添加进路径,从而调用caffe。

import sys
if '/somepath/caffe-yolov2-master/python' in sys.path:
    sys.path.remove('/somepath/caffe-yolov2-master/python')
if '/somepath/caffe-yolov2-master/python/caffe' in sys.path:
    sys.path.remove('/somepath/caffe-yolov2-master/python/caffe')
if '' in sys.path:
    sys.path.remove('')
import numpy as np
import time
# caffe_root = '../../'  # this file should be run from {caffe_root}/examples (otherwise change this line)
caffe_root = '/home/gpu_share/jz/about-caffe/gklz1982/caffe-yolov2-master/'
if caffe_root + 'python' not in sys.path:
    sys.path.append(caffe_root + 'python')
# sys.path.insert(0, caffe_root + 'python')
import caffe
import math

reference:
Caffe, Pylearn2をまとめて試す https://qiita.com/CORDEA/items/9fad27ae024928b6a7b1

### 解决 Python Caffe 模块 AttributeError 当遇到 `AttributeError: module 'caffe' has no attribute 'Net'` 错误,通常是因为 CaffePython 接口未能正确加载或环境配置存在问题。以下是详细的解决方案: #### 1. 验证 Caffe 安装路径已加入到 Python 路径中 确保 `/somepath/your_caffe/python` 已经被添加到了系统的 `PYTHONPATH` 中[^2]。 ```bash echo "export PYTHONPATH=$HOME/path_to_your_caffe/python:$PYTHONPATH" >> ~/.bashrc source ~/.bashrc ``` #### 2. 确认安装了必要的依赖库并编译成功 有即使设置了路径也可能因为缺少某些依赖而无法正常工作。建议重新编译一次 Caffe 并确认所有依赖都已满足。 #### 3. 使用绝对导入方式测试模块可用性 尝试通过显式的全名来访问 Net 类以排除任何潜在的名字空间污染问题: ```python from caffe.proto.caffe_pb2 import NetParameter as Net print(dir(Net)) ``` 如果上述命令可以打印出类的方法列表,则说明基本设置无误;反之则需进一步排查其他可能原因。 #### 4. 更新至最新版本的 Caffe 或降级特定组件 对于部分较新的 Python 版本(如 Python 3.x),可能会与旧版 Caffe 存在兼容性问题。考虑升级整个框架或是单独调整子包版本号,比如 protobuf 库等[^3]。 #### 5. 清理缓存文件重试 有候 PyCharm IDE 及其类似的开发工具会在后台创建一些临性的 .pyc 文件或其他形式的字节码副本,这些残留物可能导致运行行为异常。清理项目目录下的 __pycache__ 文件夹后再做尝试。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值