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

Метод squeeze_ тензора

Метод squeeze_ изменяет тензор на месте, удаляя все размерности, длина которых равна единице. Он является версией метода squeeze с операцией на месте (in-place). Метод может принимать необязательный параметр dim, чтобы удалить размерность только по указанной оси. В отличие от squeeze, этот метод изменяет сам тензор, не создавая копии, что экономит память.

Синтаксис

tensor.squeeze_([dim])

Пример

Давайте создадим тензор с размерностью 1 и удалим её с помощью метода squeeze_:

import torch t = torch.tensor([[[1, 2, 3, 4, 5]]]) print("Исходная форма:", t.shape) t.squeeze_() print("Форма после squeeze_:", t.shape) print("Содержимое:", t)

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

Исходная форма: torch.Size([1, 1, 5]) Форма после squeeze_: torch.Size([5]) Содержимое: tensor([1, 2, 3, 4, 5])

Пример

Удалим только конкретную размерность с помощью аргумента dim:

import torch t = torch.tensor([[[1, 2, 3], [4, 5, 6]]]) print("Исходная форма:", t.shape) t.squeeze_(dim=0) print("Форма после squeeze_(dim=0):", t.shape) print("Содержимое:", t)

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

Исходная форма: torch.Size([1, 2, 3]) Форма после squeeze_(dim=0): torch.Size([2, 3]) Содержимое: tensor([[1, 2, 3], [4, 5, 6]])

Пример

Попробуем удалить размерность, которая не равна единице - тензор не изменится:

import torch t = torch.tensor([[1, 2, 3, 4, 5]]) print("Исходная форма:", t.shape) t.squeeze_(dim=1) print("Форма после squeeze_(dim=1):", t.shape) print("Содержимое:", t)

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

Исходная форма: torch.Size([1, 5]) Форма после squeeze_(dim=1): torch.Size([1, 5]) Содержимое: tensor([[1, 2, 3, 4, 5]])

Пример

Метод squeeze_ работает только с размерностями, равными 1. В отличие от unsqueeze_, он не может добавлять новые оси:

import torch t = torch.tensor([[[1, 2, 3]]]) print("Начальная форма:", t.shape) t.squeeze_() print("Форма после squeeze_:", t.shape) t.unsqueeze_(dim=0) print("Форма после unsqueeze_:", t.shape)

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

Начальная форма: torch.Size([1, 1, 3]) Форма после squeeze_: torch.Size([3]) Форма после unsqueeze_: torch.Size([1, 3])

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

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