Если я использую pack_sequence в Pytorch RNN, будут ли у меня проблемы с обратным распространением? - PullRequest
0 голосов
/ 09 июля 2020

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

Часть моей функции потерь включает передачу этой последовательности в RNN, которая выведет скаляр. Эта RNN принимает пакет списков индексов, которые упаковываются (они имеют переменную длину) через nn.utils.rnn.pack_sequence и отправляются через сеть, которая имеет уровень внедрения.

Если вывод моей RNN Часть моих потерь, должна ли моя партия списков индексов (вход в RNN) быть дифференцируемой? Если это так, я думаю, что для хранения градиентов он должен быть типа float, но если я сделаю это, я получу ошибку RuntimeError: Expected tensor for argument #1 'indices' to have scalar type Long; but got torch.cuda.FloatTensor instead (while checking arguments for embedding). (Другими словами, PyTorch требует целочисленных индексов).

Правильно ли я полагаю, что это создает проблему дифференцируемости / обратного распространения?

...