РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
65 of 769 menu

Метод unsqueeze_

Метод unsqueeze_ добавляет новое измерение в тензор на указанной позиции, изменяя исходный тензор непосредственно на месте. В отличие от метода unsqueeze, который возвращает новый тензор, данная версия модифицирует сам объект, экономя память при работе с большими данными. Метод принимает один обязательный параметр - позицию, на которой будет вставлено новое измерение.

Синтаксис

tensor.unsqueeze_(dim)

Параметр dim определяет позицию для вставки нового измерения. Отрицательные значения отсчитываются от конца, например -1 означает последнюю позицию.

Пример

Давайте создадим одномерный тензор и добавим новое измерение в начало:

import torch t = torch.tensor([1, 2, 3, 4, 5]) print(f"Размер до: {t.shape}") t.unsqueeze_(0) print(f"Размер после: {t.shape}") print(t)

Результат выполнения кода:

Размер до: torch.Size([5]) Размер после: torch.Size([1, 5]) tensor([[1, 2, 3, 4, 5]])

Пример

Добавим измерение в конец тензора с помощью отрицательного индекса:

import torch t = torch.tensor([1, 2, 3, 4, 5]) print(f"Размер до: {t.shape}") t.unsqueeze_(-1) print(f"Размер после: {t.shape}") print(t)

Результат выполнения кода:

Размер до: torch.Size([5]) Размер после: torch.Size([5, 1]) tensor([[1], [2], [3], [4], [5]])

Пример

Добавим измерение в середину двумерного тензора:

import torch t = torch.tensor([ [1, 2, 3], [4, 5, 6], ]) print(f"Размер до: {t.shape}") t.unsqueeze_(1) print(f"Размер после: {t.shape}") print(t)

Результат выполнения кода:

Размер до: torch.Size([2, 3]) Размер после: torch.Size([2, 1, 3]) tensor([ [[1, 2, 3]], [[4, 5, 6]], ])

Пример

Покажем отличие от версии без нижнего подчёркивания:

import torch t = torch.tensor([1, 2, 3, 4, 5]) t_copy = t.unsqueeze(0) print(f"Исходный тензор: {t.shape}") print(f"Новый тензор: {t_copy.shape}") print(f"Это один объект? {t is t_copy}")

Результат выполнения кода:

Исходный тензор: torch.Size([5]) Новый тензор: torch.Size([1, 5]) Это один объект? False

Смотрите также

  • метод unsqueeze,
    который добавляет измерение и возвращает новый тензор
  • метод squeeze_,
    который удаляет измерения размером 1 на месте
  • метод view,
    который изменяет форму тензора без копирования данных
  • метод reshape,
    который изменяет форму тензора, создавая копию при необходимости
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить