模块'tensorflow'没有属性'contrib'

时间:2019-04-26 14:53:02

标签: tensorflow

我正在尝试使用Tensorflow Object-Detection-API训练自己的自定义对象检测器

我在Google计算引擎中使用“ pip install tensorflow”安装了tensorflow。然后,我按照该网站上的所有说明进行操作:https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/latest/training.html

当我尝试使用train.py时,出现以下错误消息:

  

回溯(最近通话最近):   在第49行的文件“ train.py”中    从object_detection.builders导入dataset_builder   在第27行中的文件“ /usr/local/lib/python3.6/dist-packages/object_detection-0.1->py3.6.egg/object_detection/builders/dataset_builder.py”   从object_detection.data_decoders导入tf_example_decoder   在第27行的“ /usr/local/lib/python3.6/dist-packages/object_detection-0.1-py3.6.egg/object_detection/data_decoders/tf_example_decoder.py”文件中       slim_example_decoder = tf.contrib.slim.tfexample_decoder   AttributeError:模块“ tensorflow”没有属性“ contrib”

当我尝试学习tensorflow的版本时,我也得到了不同的结果。

  

python3 -c'将tensorflow导入为tf; print(tf。版本)':2.0.0-dev20190422

当我使用

  

pip3显示张量流:

     

名称:tensorflow   版本:1.13.1   简介:TensorFlow是面向所有人的开源机器学习框架。   主页:https://www.tensorflow.org/   作者:Google Inc.   作者电子邮件:opensource@google.com   许可证:Apache 2.0   位置:/usr/local/lib/python3.6/dist-packages   需要:gast,astor,absl-py,tensorflow估计器,keras预处理,grpcio,6,keras应用,轮,numpy,tensorboard,protobuf,termcolor   必填者:

    sudo python3 train.py --logtostderr --train_dir=training/ -- 
    pipeline_config_path=training/ssd_inception_v2_coco.config

我该怎么做才能解决此问题?除了以下内容,我找不到与此错误消息有关的任何内容:tensorflow 'module' object has no attribute 'contrib'

7 个答案:

答案 0 :(得分:2)

tf.contrib已从TF 2.0 alpha开始移出TF。
看看这些tf 2.0发行说明https://github.com/tensorflow/tensorflow/releases/tag/v2.0.0-alpha0
您可以使用tf_upgrade_v2脚本将TF 1.x代码升级到TF2.x。 https://www.tensorflow.org/alpha/guide/upgrade

答案 1 :(得分:2)

This issue可能对您有所帮助,它说明了如何实现TPUStrategy,这是TF <2.0中tf.contrib的流行功能。

因此,在TF 1.X中,您可以执行以下操作:

resolver = tf.contrib.cluster_resolver.TPUClusterResolver('grpc://' + os.environ['COLAB_TPU_ADDR'])
tf.contrib.distribute.initialize_tpu_system(resolver)
strategy = tf.contrib.distribute.TPUStrategy(resolver)

在不推荐使用tf.contrib的TF> 2.0中,您可以通过以下方式实现相同的目标:

tf.config.experimental_connect_to_host('grpc://' + os.environ['COLAB_TPU_ADDR'])
resolver = tf.distribute.cluster_resolver.TPUClusterResolver('grpc://' + os.environ['COLAB_TPU_ADDR'])
tf.tpu.experimental.initialize_tpu_system(resolver)
strategy = tf.distribute.experimental.TPUStrategy(resolver) 

答案 2 :(得分:2)

我也在使用 Google Colab。 A comment 建议放置

%tensorflow_version 1.x

在第一个(代码)单元格中,它起作用了!

答案 3 :(得分:0)

我使用tensorflow 1.8训练模型,目前没有问题。 Tensorflow 2.0 alpha不适用于对象检测API

答案 4 :(得分:0)

我使用google colab来运行我的模型,直到我使用嵌入式tesorboard为止,一切都很完美。使用tensorboard inline,我遇到了同样的问题:“模块'tensorflow'没有属性'contrib'”。

初始化张量板后,使用setup.py(research文件夹)重建并重新安装模型时,便可以进行训练。

答案 5 :(得分:0)

如果要使用tf.contrib,现在需要从github复制源代码并将其粘贴到脚本/笔记本中。这很烦人,而且并不总是有效。但这是我发现的唯一解决方法。例如,如果要使用tf.contrib.opt.AdamWOptimizer,则必须从此处复制和粘贴。 https://github.com/tensorflow/tensorflow/blob/590d6eef7e91a6a7392c8ffffb7b58f2e0c8bc6b/tensorflow/contrib/opt/python/training/weight_decay_optimizers.py#L32

答案 6 :(得分:0)

使用最新版本的tensorflow:pip install tensorflow==2.2.0