Функция CudnnConvolutionBackward вернула недопустимый градиент с индексом 1 — got [294, 592, 1, 1], но ожидаемая форма, совместимая с [294, 768, 1, 1]

#pytorch

#пыторч

Вопрос:

Я работаю над проектом pytorch (torch = 1.2.0) с учетом сокращения CNN. Я удалил несколько фильтров из модели и попытался переобучить уменьшенную модель. Однако мой код выходит из строя при обработке обратного прохода. Мой последний слой был [294, 768, 1, 1], но был сведен к [294, 592, 1, 1]. Это означает, что в слое, предшествующем последнему, количество фильтров было уменьшено с 768 до 592. Прямой проход выполняется хорошо, что означает совместимость всех слоев модели, но он сразу же завершается сбоем при обратной обработке последних слоев со следующим сообщением:

Функция CudnnConvolutionBackward вернула недопустимый градиент с индексом 1 — got [294, 592, 1, 1], но ожидаемая форма, совместимая с [294, 768, 1, 1]

Я этого не понимаю, поскольку модель была обрезана, но похоже, что она пытается «откорректировать» исходные размеры слоя.

Комментарии:

1. Можете ли вы предоставить содержимое CudnnConvolutionBackward ?

2. CudnnConvolutionBackward — это внутренняя функция pytorch, используемая backward()

3. Вам нужно предоставить некоторый код, без него у нас нет абсолютно никакого способа помочь вам.