Я работаю над моделью внимания, и перед запуском финальной модели я проходил через тензорные фигуры, проходящие через код. У меня есть операция, где мне нужно изменить тензор. Тензор имеет форму torch.Size([[30, 8, 9, 64]])
, где 30
- это batch_size
, 8
- номер головы внимания (это не относится к моему вопросу) 9
- количество слов в предложении, а 64
является некоторым промежуточным представлением вложения слова. Мне нужно изменить тензор до размера torch.size([30, 9, 512])
перед дальнейшей обработкой. Итак, я искал некоторые ссылки в Интернете, и они сделали следующее x.transpose(1, 2).contiguous().view(30, -1, 512)
тогда как я думал, что это должно сработать x.transpose(1, 2).reshape(30, -1, 512)
.
В первом случае grad_fn
- это <ViewBackward>
, тогда как в моем случае это <UnsafeViewBackward>
. Разве эти две операции не являются одинаковыми? Приведет ли это к ошибке тренировки?