[Tensorflow] [物体检测]尝试使用--num_clones = 2训练时的ValueError

时间:2018-02-14 20:50:33

标签: python tensorflow object-detection

我想训练多个CPU,所以我运行这个命令

  

C:\用户\溶液\桌面\ Tensorflow \研究>蟒   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

我收到了以下错误

  

回溯(最近一次调用最后一次):文件" object_detection / train.py",   第169行,in       tf.app.run()文件" C:\ Users \ solution \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ tensorflow \ python \ platform \ app.py",   第124行,在运行中       _sys.exit(main(argv))File" object_detection / train.py",第165行,主要       worker_job_name,is_chief,FLAGS.train_dir)文件" C:\ Users \ solution \ Desktop \ Tensorflow \ research \ object_detection \ trainer.py",   246行,在火车上       clones = model_deploy.create_clones(deploy_config,model_fn,[input_queue])文件   " C:\用户\溶液\桌面\ Tensorflow \研究\苗条\部署\ model_deploy.py&#34 ;,   第193行,在create_clones中       outputs = model_fn(* args,** kwargs)File" C:\ Users \ solution \ Desktop \ Tensorflow \ research \ object_detection \ trainer.py",   第158行,在_create_losses中       train_config.merge_multiple_label_boxes)ValueError:没有足够的值来解包(预期7,得0)

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

任何建议都将不胜感激

2 个答案:

答案 0 :(得分:0)

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

...
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上训练时一样) )。

答案 1 :(得分:0)

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