Darkflow: Ошибка изменения формы тензора потока тензор

Созданный на 8 апр. 2017  ·  3Комментарии  ·  Источник: thtrieu/darkflow

Я пытаюсь обучить йоло на собственном наборе данных. Мне удалось успешно переобучить тренировку на 10 изображениях с 2 объектами. Вывод работает хорошо.

Теперь я пытаюсь тренироваться на полном наборе данных из 6000 изображений и получаю сообщение об ошибке.
Командная строка, которую я использую для обучения:
./flow --train --dataset /home/ubuntu/datasets/img/ --annotation /home/ubuntu/datasets/anno/ --model cfg/yolo-17c.cfg --load bin/yolo.weights --keep 5 --epoch 30000 --save 1000 --lr 0.00001 --batch 16 --gpu .8

Фактическая ошибка:

Вызвано оператором "Reshape", определенным в:
Файл "./flow", строка 44, в
tfnet = TFNet (ФЛАГИ)
Файл "/home/ubuntu/darkflow/net/build.py", строка 63, в __init__
self.setup_meta_ops ()
Файл "/home/ubuntu/darkflow/net/build.py", строка 106, в setup_meta_ops
если self.FLAGS.train: self.build_train_op ()
Файл "/home/ubuntu/darkflow/net/help.py", строка 15, в build_train_op
self.framework.loss (self.out)
Файл "/home/ubuntu/darkflow/net/yolov2/train.py", строка 56, утерян
net_out_reshape = tf.reshape (net_out, [-1, H, W, B, (4 + 1 + C)])
Файл "/home/ubuntu/.conda/envs/py3/lib/python3.5/site-packages/tensorflow/python/ops/gen_array_ops.py", строка 2630, в измененной форме
имя = имя)
Файл "/home/ubuntu/.conda/envs/py3/lib/python3.5/site-packages/tensorflow/python/framework/op_def_library.py", строка 763, в apply_op
op_def = op_def)
Файл "/home/ubuntu/.conda/envs/py3/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", строка 2327, в create_op
original_op = self._default_original_op, op_def = op_def)
Файл "/home/ubuntu/.conda/envs/py3/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", строка 1226, в __init__
self._traceback = _extract_stack ()
InvalidArgumentError (см. Выше для трассировки): вход для изменения формы - это тензор с 1149200 значениями, но для запрошенной формы требуется число, кратное 18590
[[Узел: Reshape = Reshape [T = DT_FLOAT, Tshape = DT_INT32, _device = "/ job: localhost / replica : 0 / task: 0 / gpu : 0"] (вывод, Reshape / shape)]]
[[Узел: mul_30 / _195 = _Recv [client_terminated = false, recv_device = "/ job: localhost / replica : 0 / task: 0 / cpu : 0", send_device = »/ job: localhost / replica : 0 / task: 0 / gpu : 0 ", send_device_incarnation = 1, tensor_name =" edge_188_mul_30 ", tensor_type = DT_FLOAT, _device =" / job: localhost / replica : 0 / task: 0 / cpu : 0 "] ()]]

В моем файле labels.txt 17 меток.
В yolo-17c.cfg я внес следующие изменения:
filters=125 для последнего слоя. Я также пробовал это с 425 и 35
classes=17 зависимости от количества занятий

Я понимаю, что номер 18590 связан с width=416, height=416 когда я меняю их на width=224, height=224 , я получаю
...but the requested shape requires a multiple of 21560

@thtrieu , @ Dhruv-Mohan, @abagshaw у вас есть идеи, почему я получаю эту ошибку?

Спасибо вам за помощь

Самый полезный комментарий

Вам нужно установить filters=110 для последней конверсии. слой.
Это должно быть основано на этой формуле:
фильтры = # число * (# классы + 5)

[сверточный]
size = 1
шаг = 1
pad = 1
фильтры = 110
активация = линейная
[область]
якоря = 0,738768,0,874946, 2,42204,2,65704, 4,30971,7.04493, 10,246,4,59428, 12,6868,11,8741

надеюсь, это поможет

Все 3 Комментарий

Вам нужно установить filters=110 для последней конверсии. слой.
Это должно быть основано на этой формуле:
фильтры = # число * (# классы + 5)

[сверточный]
size = 1
шаг = 1
pad = 1
фильтры = 110
активация = линейная
[область]
якоря = 0,738768,0,874946, 2,42204,2,65704, 4,30971,7.04493, 10,246,4,59428, 12,6868,11,8741

надеюсь, это поможет

@ 1NNcoder Скажите, решена ли проблема? Если да, то можете закрыть и освободить место для других людей :)

Да это работает

Была ли эта страница полезной?
0 / 5 - 0 рейтинги