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

Класс UpsamplingNearest2d

Класс UpsamplingNearest2d выполняет интерполяцию методом ближайшего соседа для двумерных данных, таких как изображения или карты признаков. Он увеличивает высоту и ширину тензора в заданное количество раз или до указанных размеров. Это один из базовых способов апскейлинга в нейронных сетях.

Синтаксис

torch.nn.UpsamplingNearest2d(size=None, scale_factor=None)

Параметры:

size (int или tuple) - целевой размер (высота, ширина). Если передан один int, то размер будет (size, size).

scale_factor (float или tuple) - множитель увеличения для высоты и ширины. Если передан один float, то коэффициент применяется к обоим измерениям.

Важно: один из параметров должен быть задан.

Пример

Создадим слой для увеличения изображения в 2 раза:

import torch import torch.nn as nn upsample = nn.UpsamplingNearest2d(scale_factor=2) t = torch.randn(1, 3, 4, 4) res = upsample(t) print(res.shape)

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

torch.Size([1, 3, 8, 8])

Пример

Зададим конкретный размер выходного тензора:

import torch import torch.nn as nn upsample = nn.UpsamplingNearest2d(size=(8, 10)) t = torch.randn(1, 3, 4, 4) res = upsample(t) print(res.shape)

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

torch.Size([1, 3, 8, 10])

Пример

Используем разные коэффициенты по осям:

import torch import torch.nn as nn upsample = nn.UpsamplingNearest2d(scale_factor=(2, 3)) t = torch.randn(1, 3, 4, 4) res = upsample(t) print(res.shape)

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

torch.Size([1, 3, 8, 12])

Пример

Сравним исходный и увеличенный тензоры:

import torch import torch.nn as nn torch.manual_seed(0) t = torch.tensor([ [1, 2], [3, 4] ]).float().view(1, 1, 2, 2) upsample = nn.UpsamplingNearest2d(scale_factor=2) res = upsample(t) print(res.squeeze())

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

tensor([ [1., 1., 2., 2.], [1., 1., 2., 2.], [3., 3., 4., 4.], [3., 3., 4., 4.] ])

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

  • класс Upsample,
    который предоставляет более общие возможности для апскейлинга
  • класс UpsamplingBilinear2d,
    который использует билинейную интерполяцию вместо ближайшего соседа
  • класс ConvTranspose2d,
    который выполняет увеличение разрешения с обучаемыми параметрами
  • класс PixelShuffle,
    который переупорядочивает каналы для увеличения пространственного разрешения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить