在运行TensorFlow的classify_image时,获取AttributeError:'module'对象没有属性'gfile'

时间:2016-02-15 06:24:45

标签: tensorflow

我在运行使用TensorFlow的示例文件时出现此错误,在imagenet模型中,

File "classify_image.py", line 154, in run_inference_on_image
if not tf.gfile.Exists(image):

AttributeError:'module'对象没有属性'gfile'

我尝试在虚拟服务器上同时使用pip和source两者进行安装,但我仍然遇到此错误。

2 个答案:

答案 0 :(得分:6)

有两种方法可以解决这个问题:

选项1

这是雅罗斯拉夫上述评论的扩展,比选项2更容易。

修改classify_image.py,如下所示:

tf.gfile.Exists的所有实例替换为os.path.exists,然后 将tf.gfile.GFiletf.gfile.FastGFile的所有实例替换为open

然后运行修改后的classify_image.py,它应该可以正常工作。

选项2

根据here

所述,将张量流更新为包含gfile的最新版本

但是,执行此操作后,尝试运行classify_image.py时可能会遇到以下错误:

$ python classify_image.py
>> Downloading inception-2015-12-05.tgz 100.0%
Succesfully downloaded inception-2015-12-05.tgz 88931400 bytes.
[libprotobuf ERROR google/protobuf/src/google/protobuf/io/coded_stream.cc:207] A protocol message was rejected because it was too big (more than 67108864 bytes).  To increase the limit (or to disable these warnings), see CodedInputStream::SetTotalBytesLimit() in google/protobuf/io/coded_stream.h.
Traceback (most recent call last):
  File "classify_image.py", line 213, in <module>
    tf.app.run()
  File "/Users/USERNAME/.virtualenvs/mlnd/lib/python2.7/site-packages/tensorflow/python/platform/default/_app.py", line 30, in run
    sys.exit(main(sys.argv))
  File "classify_image.py", line 209, in main
    run_inference_on_image(image)
  File "classify_image.py", line 159, in run_inference_on_image
    create_graph()
  File "classify_image.py", line 141, in create_graph
    graph_def.ParseFromString(f.read())
google.protobuf.message.DecodeError: Error parsing message

要解决此问题,您可以按照here所述更改源代码中的一行,然后在您的计算机上重新编译tensorflow。

选项2可能有点工作,特别是如果您使用的是Mac。

答案 1 :(得分:0)

以下步骤帮助我解决了问题

  1. 更新张量流,如https://www.tensorflow.org/versions/r0.7/get_started/os_setup.html
  2. 所述

    2.对我而言,这导致了protobuf错误。要解决我跑

      
        

    $ sudo pip uninstall protobuf

             

    $ sudo pip install --upgrade     https://storage.googleapis.com/tensorflow/mac/tensorflow-0.7.1-cp27-none-any.whl