我为我的项目运行了两个神经网络,它们都使用不同版本的caffe . 我试图使用sys模块添加caffe模块的路径 . 第一个神经网络没有任何困难地运行,但是第二个神经网络在其caffe模块的路径方面存在问题 .
我已经尝试删除我之前添加的caffe路径位置,然后尝试添加第二个神经网络的caffe路径 . 然后它也给了我错误 .
我找到的唯一解决方案是在子进程中运行我的第二个神经网络 . 但是它效率不高,因为我必须将所有数据保存在文件中,然后在主进程中读取并执行计算 .
有人建议我使用环境变量,但我不知道如何使用这个概念 .
任何帮助,如何加载多个caffe版本将是伟大的 .
EDIT
我尝试使用 Shai ex给出的逻辑添加不同版本的模块:添加不同版本的numpy . 然而,相同的逻辑在caffe的情况下不起作用 .
import caffe_a as caffe_a, caffe_b as caffe_b
error displayed :警告:在InitGoogleLogging()写入STDERR之前记录F0223 08:21:57.810040 17753 layer_factory.hpp:69]检查失败:registry.count(类型)== 0(1对0)层类型卷积已经注册 . *** Check failure stack trace: *** 已中止(核心转储)
Another approach tried and failed:
我试图使用 threading ,我试图在每个独立的线程中加载不同的caffe版本 . 现在我没有得到任何错误但是只有一个版本的caffe被加载 . 实际上 sys.modules
变量在所有线程之间全局共享,因此当执行第二个 import caffe
语句时,python只看到模块已经存在并且不加载新的caffe模块 .
有没有什么方法可以改变线程的行为?
1 回答
我不是python的专家,但我会试一试......
我假设你有两个文件夹
/path/to/caffe-a
和/path/to/caffe-b
每个文件夹都是caffe的另一个分支的克隆 . 所以你有等等...
为了区分这两个版本,我建议您创建软链接:
在python中,将两个版本的caffe添加到路径中
现在用不同的名称导入它们
使用
'a'
版本构建网络使用
'b'
版本构建网络:祝好运...