Объясните разницу между "view" и "reshape" в PyTorch?

Этот вопрос проверяет различия между функциями view и reshape в PyTorch.

Короткий ответ

view изменяет форму тензора, не создавая нового объекта, но требует, чтобы тензор был "контегентным". В случае reshape, тензор может не быть контегентным, и он возвращает новый тензор с нужной формой, возможно с копированием данных.

Длинный ответ

view:

- Работает с оригинальным тензором, изменяя его форму без создания нового тензора. Он требует, чтобы тензор был контегентным (имеет непрерывную память).

- Если тензор не является контегентным, нужно использовать метод contiguous() перед применением view.

- Пример:

tensor = tensor.view(-1, 10)

 

reshape:

- Создаёт новый тензор с нужной формой, возможно копируя данные, и не требует, чтобы тензор был контегентным.

- Может использоваться с тензорами, не являющимися контегентными.

- Пример:

tensor = tensor.reshape(-1, 10)

 

view быстрее, но требует контегентности, в то время как reshape более гибкий и может работать с не контегентными тензорами.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • PyTorch

Ключевые слова

Подпишись на Data Science в телеграм