MultiprocessIterator выдает ошибку при изменении batch_size - PullRequest
0 голосов
/ 15 февраля 2019

Я хочу тренировать более быстрый R-CNN с ChainerCV.В качестве первого теста я в основном скопировал предоставленный пример , я изменил только строки , соответствующие набору данных, чтобы использовать мой собственный набор данных.Я проверил, полностью ли функционирует мой набор данных со всеми операциями, описанными в этого руководства .

Если я запускаю скрипт без изменений, все работает отлично, но если я изменяю batch_size , я получаю ошибку.Я попытался увеличить shared_mem со 100 МБ до 1000 МБ, но ошибка не исчезла.

Ошибка при установке batch_size = 2:

Exception in main training loop: all the input array dimensions except for the concatenation axis must match exactly
Traceback (most recent call last):
  File "/home/cv/anaconda3/envs/chainer/lib/python3.6/site-packages/chainer/training/trainer.py", line 315, in run
    update()
  File "/home/cv/anaconda3/envs/chainer/lib/python3.6/site-packages/chainer/training/updaters/standard_updater.py", line 165, in update
    self.update_core()
  File "/home/cv/anaconda3/envs/chainer/lib/python3.6/site-packages/chainer/training/updaters/standard_updater.py", line 171, in update_core
    in_arrays = self.converter(batch, self.device)
  File "/home/cv/anaconda3/envs/chainer/lib/python3.6/site-packages/chainer/dataset/convert.py", line 134, in concat_examples
    [example[i] for example in batch], padding[i])))
  File "/home/cv/anaconda3/envs/chainer/lib/python3.6/site-packages/chainer/dataset/convert.py", line 164, in _concat_arrays
    return xp.concatenate([array[None] for array in arrays])
Will finalize trainer extensions and updater before reraising the exception.
Traceback (most recent call last):
  File "/home/cv/ChainerCV/faster_rcnn/train.py", line 131, in <module>
    main()
  File "/home/cv/ChainerCV/faster_rcnn/train.py", line 126, in main
    trainer.run()
  File "/home/cv/anaconda3/envs/chainer/lib/python3.6/site-packages/chainer/training/trainer.py", line 329, in run
    six.reraise(*sys.exc_info())
  File "/home/cv/anaconda3/envs/chainer/lib/python3.6/site-packages/six.py", line 693, in reraise
    raise value
  File "/home/cv/anaconda3/envs/chainer/lib/python3.6/site-packages/chainer/training/trainer.py", line 315, in run
    update()
  File "/home/cv/anaconda3/envs/chainer/lib/python3.6/site-packages/chainer/training/updaters/standard_updater.py", line 165, in update
    self.update_core()
  File "/home/cv/anaconda3/envs/chainer/lib/python3.6/site-packages/chainer/training/updaters/standard_updater.py", line 171, in update_core
    in_arrays = self.converter(batch, self.device)
  File "/home/cv/anaconda3/envs/chainer/lib/python3.6/site-packages/chainer/dataset/convert.py", line 134, in concat_examples
    [example[i] for example in batch], padding[i])))
  File "/home/cv/anaconda3/envs/chainer/lib/python3.6/site-packages/chainer/dataset/convert.py", line 164, in _concat_arrays
    return xp.concatenate([array[None] for array in arrays])
ValueError: all the input array dimensions except for the concatenation axis must match exactly

Информация о системе:

__Hardware Information__
Machine                                       : x86_64
CPU Name                                      : skylake
Number of accessible CPU cores                : 8

__OS Information__
Platform                                      : Linux-4.15.0-45-generic-x86_64-with-debian-stretch-sid
Release                                       : 4.15.0-45-generic
System Name                                   : Linux
Version                                       : #48~16.04.1-Ubuntu SMP Tue Jan 29 18:03:48 UTC 2019
OS specific info                              : debianstretch/sid
glibc info                                    : glibc 2.10

__CUDA Information__
Found 1 CUDA devices
id 0     b'GeForce GTX 1080'                              [SUPPORTED]
                      compute capability: 6.1
                           pci device id: 0
                              pci bus id: 1
Summary:
    1/1 devices are supported
CUDA driver version                           : 10000

__Conda Information__
conda_build_version                           : 3.17.6
conda_env_version                             : 4.6.3
platform                                      : linux-64
python_version                                : 3.7.1.final.0

РЕДАКТИРОВАТЬ: При запуске пример с batch_size =2 ошибка также происходит.

Ответы [ 3 ]

0 голосов
/ 18 февраля 2019

При попытке исправить ошибку я получил еще одну ошибку .

ValueError: Currently only batch size 1 is supported.

Ожидание, кажется, решение.

0 голосов
/ 19 февраля 2019

Текущая реализация Faster-RCNN не поддерживает многопартийное обучение, но вы можете переписать его для поддержки, как показано ниже.https://github.com/knorth55/chainer-light-head-rcnn/blob/master/light_head_rcnn/links/model/light_head_rcnn_train_chain.py

Другой вариант - использовать Faster-RCNN с FPN в ChainerCV.Последняя версия ChainerCV имеет Faster-RCNN с FPN, который поддерживает многопартийное обучение.https://github.com/chainer/chainercv/blob/master/examples/fpn/train_multi.py

0 голосов
/ 16 февраля 2019

self.converter предполагает, что первый аргумент batch состоит из входных данных, имеющих одинаковую форму.Например, если вы используете набор данных изображения, все изображения должны иметь форму (C, H, W).

Итак, вы можете проверить, что ваш набор данных возвращает изображения одинаковой формы?И если ваш набор данных имеет различные формы изображений, как насчет использования TransformDataset, как https://github.com/chainer/chainercv/blob/df63b74ef20f9d8c830e266881e577dd05c17442/examples/faster_rcnn/train.py#L86?

...