【问题标题】:[Tensorflow][Object detection] ValueError when try to train with --num_clones=2[Tensorflow][对象检测] 尝试使用 --num_clones=2 进行训练时出现 ValueError
【发布时间】:2018-07-25 13:02:33
【问题描述】:

我想在多个 CPU 上进行训练,所以我运行了这个命令

C:\Users\solution\Desktop\Tensorflow\research>python object_detection/train.py --logtostderr --pipeline_config_path=C:\Users\solution\Desktop\Tensorflow\myFolder\power_drink.config --train_dir=C:\Users\solution\Desktop\Tensorflow\research\object_detection\train --num_clones=2 --clone_on_cpu=True

我收到以下错误

Traceback(最近一次调用最后一次):文件“object_detection/train.py”, 第 169 行,在 tf.app.run() 文件 "C:\Users\solution\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\platform\app.py", 第 124 行,运行中 _sys.exit(main(argv)) 文件“object_detection/train.py”,第 165 行,在 main worker_job_name, is_chief, FLAGS.train_dir) 文件“C:\Users\solution\Desktop\Tensorflow\research\object_detection\trainer.py”, 246号线,在火车上 克隆 = model_deploy.create_clones(deploy_config, model_fn, [input_queue]) 文件 "C:\Users\solution\Desktop\Tensorflow\research\slim\deployment\model_deploy.py", 第 193 行,在 create_clones 中 输出 = model_fn(*args, **kwargs) 文件“C:\Users\solution\Desktop\Tensorflow\research\object_detection\trainer.py”, 第 158 行,在 _create_losses 中 train_config.merge_multiple_label_boxes) ValueError: no enough values to unpack (expected 7, got 0)

如果我将 num_clones 设置为 1 或省略它,它可以正常工作。 我也尝试设置 --ps_tasks=1 这没有帮助

任何建议将不胜感激

【问题讨论】:

  • python3 问题可能。在models/research/object_detection/utils/learning_schedules.py 中将range(num_boundaries) 更改为list(range(num_boundaries))

标签: python tensorflow object-detection


【解决方案1】:

您没有提及您正在训练哪种类型的模型 - 如果您像我一样使用 TensorFlow 对象检测 API 示例 (Faster-RCNN-Inception-V2) 中的默认模型,那么 num_clones 应该等于 @987654322 @。但是,我使用的是 GPU,但是当我从一个克隆到两个克隆时,我看到了类似的错误,并且在训练配置文件中设置 batch_size: 2 是解决方案。

【讨论】:

    【解决方案2】:

    我通过稍微更改原始配置中的一个参数解决了这个问题:

    ...
    train_config: {
      fine_tune_checkpoint: "C:/some_path/model.ckpt"
      batch_size: 1
      sync_replicas: true
      startup_delay_steps: 0
      replicas_to_aggregate: 8
      num_steps: 25000
      ...
    }
    ...
    

    更改参数replicas_to_aggregate: 1 或设置sync_replicas: false 都解决了我的问题,因为我只在一张显卡上训练并且没有任何副本(就像在 TPU 上训练时一样)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-17
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-31
      • 2018-12-07
      • 2017-12-08
      • 2019-06-28
      相关资源
      最近更新 更多