我正在遵循教程here(带有自定义数据集的Google Colab中的对象检测)。笔记本的第一行是tensorflow模型的git克隆:
!git clone --quiet https://github.com/tensorflow/models.git
之后,他们设置PYTHONPATH变量以确保我们可以导入模型。
os.environ['PYTHONPATH'] += ':/content/models/research/:/content/models/research/slim/'
如果我现阶段尝试导入模型
from nets import inception_resnet_v2
我得到了错误:
ImportError: No module named nets
我检查了一下,并发现了nets文件夹和nets / inception_resnet_v2.py文件(在models / research / slim文件夹中)。我怀疑它与colab命名约定有关,因为pwd命令给出了:
/root/models/research
我在上面的命令中用root替换了内容,但是它也不起作用。有人here发表了类似的问题,但唯一的答案是张量流问题1832,在这里不是问题。有人可以帮忙吗?
编辑:操作系统是Linux-4.14.79 + -x86_64-with-Ubuntu-18.04-bionic
答案 0 :(得分:1)
该解决方案取决于您的操作系统(Linux或Windows)。有人已经问过同样的问题:tutorialTensorflow对象检测:ImportError:没有名为nets的模块。 Tensorflow object detection: ImportError: No module named nets
如果使用Windows,则更改PYTHONPATH可能不起作用。这是一个尝试。
首先,运行文件setup.py
。
python setup.py build
python setup.py install
,它可能会给您一个警告error: could not create 'build'
(因为该文件已经存在)。因为在您的git clone中有一个名为“ build”的文件。但是,命令“ build”和“ install”需要创建一个名为“ build”的新文件夹。我不知道文件“ build”是用来做什么的,所以我选择将文件移到另一个目录并使用上面的命令,它将起作用。
答案 1 :(得分:1)
Python进程在启动时会读取PYTHONPATH
的值,因此在该进程已经运行时修改该环境变量不会改变该进程寻找包的位置。您应该改为调整sys.path
的值:
import sys
sys.path.extend(['/content/models/research/', '/content/models/research/slim/'])
答案 2 :(得分:0)
%cd /content/models/research/slim
!python setup.py build
!python setup.py install
%cd /content/models/research/deeplab
这样做让我解决了...