为什么我不能在tensorflow中导入tfprof_log_pb2?

时间:2017-01-06 14:21:23

标签: tensorflow anaconda spyder

this line我知道新添加的配置文件工具已导入,但看起来很奇怪:1)无法从交互式界面导入; 2)当在spyder中运行mnist示例时,我也会收到错误说ImportError: cannot import name 'tfprof_log_pb2'

我认为,因为张量流是在anaconda中进行的,然后它可能是一个旧版本,因此没有tfprof。但这只能解释为什么我不能直接在交互界面(不是在anaconda环境中)中运行from tensorflow.tools.tfprof import tfprof_log_pb2,并且无法解释为什么当我在anaconda中运行它时会引发错误。它在spyder中引发了这个错误,那么支持tfprof的版本就应该存在。

3 个答案:

答案 0 :(得分:1)

这两个答案都是正确的。

Ubuntu (python2.7和GPU)中,我采取捷径并将张量流从10更新为12: std::string 在中国,我使用清华大学的镜子来加快安装速度 它顺利进行。

但是这似乎不适用于 Mac (至少对于python3.5和cpu而言),即使你的张量流版本是12或更高,该文件还没有生成(甚至其他那里已经列出了两个文件( pip install \ -i https://pypi.tuna.tsinghua.edu.cn/simple/ \ https://mirrors.tuna.tsinghua.edu.cn/tensorflow/linux/gpu/tensorflow_gpu-0.12.1-cp27-none-linux_x86_64.whl )。所以我只是复制了那个文件(它必须和我的Ubuntu中的文件相同,对吗?)由Yaroslav Bulatov保护到文件夹。它可以工作。

答案 1 :(得分:1)

您的磁盘上是否有tfprof_log_pb2.py?它是一个自动生成的文件,它不存在于源树中。相反,它被放置在bazel-genfiles目录中,并且应该在build_pip_package.sh期间被复制到分发中

this issue为其他工具修复了一些丢失的文件,我想知道tfprof文件是否逃脱了修复(即,如果它不是tools:all_files目标的一部分)

BTW,来自我本地版本的文件的副本 - http://pastebin.com/dJnnWKuy

答案 2 :(得分:1)

如果python的protobuf比3.1.0更旧且TF也更旧,则会出现问题。我遇到了如下问题:

$ python

Python 2.7.10 (default, Jul 30 2016, 19:40:32)
>>> from tensorflow.tools.tfprof import tfprof_log_pb2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named tfprof

这就是我解决它的方法:

将setuptools更新到最新的32.x或更高版本(我这样做是因为我的TF安装无法将setuptools更新到32.x版本):

pip install update --user setuptools

之后我按如下方式安装了TF:

export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.12.1-py2-none-any.whl
sudo pip install --upgrade $TF_BINARY_URL

您将注意到TF 12.1安装了以下内容:

Collecting tensorflow==0.12.1 from https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.12.1-py2-none-any.whl
Collecting numpy>=1.11.0 (from tensorflow==0.12.1)
Collecting protobuf>=3.1.0 (from tensorflow==0.12.1)
Collecting setuptools (from protobuf>=3.1.0->tensorflow==0.12.1)

TF安装成功后:

Successfully installed protobuf-3.1.0.post1 tensorflow-0.12.1

我尝试了第一个命令如下:

$ python

Python 2.7.10 (default, Jul 30 2016, 19:40:32)
>>> from tensorflow.tools.tfprof import tfprof_log_pb2
>>> tfprof_log_pb2
<module 'tensorflow.tools.tfprof.tfprof_log_pb2' from '/Library/Python/2.7/site-packages/tensorflow/tools/tfprof/tfprof_log_pb2.pyc'>