【问题标题】:NameError: name 'xrange' is not defined when running tensorflow object detection api [duplicate]NameError:运行tensorflow对象检测api时未定义名称'xrange' [重复]
【发布时间】:2019-01-12 01:17:17
【问题描述】:

我在 Ubuntu 系统下使用 CPU 版本的 Tensorflow 1.9 和 Python 3.6 运行 python object_detection/builders/model_builder_test.py,出现 NameError: name 'xrange' is not defined,有人知道为什么会发生这种情况以及如何处理它?谢谢。这是我遵循的指南。

https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md

Traceback (most recent call last):
  File "object_detection/builders/model_builder_test.py", line 311, in test_create_ssd_resnet_v1_fpn_model_from_config
    model = model_builder.build(model_proto, is_training=True)
  File "/home/tensorflow/models/research/object_detection/builders/model_builder.py", line 110, in build
    add_background_class)
  File "/home/tensorflow/models/research/object_detection/builders/model_builder.py", line 214, in _build_ssd_model
    ssd_config.anchor_generator)
  File "/home/tensorflow/models/research/object_detection/builders/anchor_generator_builder.py", line 91, in build
    cfg.normalize_coordinates
  File "/home/tensorflow/models/research/object_detection/anchor_generators/multiscale_grid_anchor_generator.py", line 61, in __init__
    for scale in xrange(scales_per_octave)]
NameError: name 'xrange' is not defined

【问题讨论】:

  • xrange 在 python 3 上不存在。使用范围
  • @joaquin 值得注意的是,python 2 中不存在范围,因此如果 OP 需要在早于 python 3 的 python 版本中使用它,则应使用 xrange
  • @Adi219 他正在使用帖子中声明的 Python 3.6
  • @joaquin 我知道,这就是为什么我说它“值得注意”:)(因为它对于偶然发现这个问题的用户仍然是有用的信息)
  • @Adi219 range 确实存在于 Python 2 中,它返回一个列表而不是生成器。

标签: python python-3.x tensorflow


【解决方案1】:

xrange() 已从 python3 中删除,并替换为 range()。请改用range()(它的工作原理与xrange() 完全相同)。

但是,如果您需要在 python2 中使用 range() 函数(在这种情况下您不需要),请使用 xrange() 因为 range() 返回一个列表而不是生成器(正如 @xdurch0 所说在 cmets 中)。

【讨论】:

  • 请(潜在的)反对者解释他们为什么反对?
猜你喜欢
  • 1970-01-01
  • 2018-11-19
  • 1970-01-01
  • 1970-01-01
  • 2015-09-15
  • 1970-01-01
  • 2018-03-11
  • 1970-01-01
  • 2022-01-06
相关资源
最近更新 更多