Чтобы определить проблему, вы должны проверить форму ваших входных данных для каждой мини-партии. Документация гласит: nn.DataParallel
разбивает входной тензор на dim0
и отправляет каждый кусок в указанные графические процессоры. Из сообщения об ошибке кажется, что вы пытаетесь передать 0-мерный тензор.
Одной из возможных причин может быть, если у вас есть мини-пакет с n
примерами, и вы запускаете свою программу на более чем n
графических процессорах, тогда вы получите эту ошибку.
Давайте рассмотрим следующий сценарий.
- Всего примеров обучения = 161, Размер партии = 80, Общее количество мини-партий = 3
- Количество графических процессоров, указанных для DataParallel = 3
Теперь в вышеприведенном сценарии в 3-й мини-партии будет 1 пример. Таким образом, невозможно отправить чанки на все конкретные графические процессоры, и вы получите сообщение об ошибке. Поэтому, пожалуйста, проверьте, не являетесь ли вы жертвой этой проблемы.