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

Функция F.pad

Функция F.pad дополняет тензор значениями по указанным осям. Первым параметром функция принимает входной тензор. Вторым параметром - кортеж с количеством элементов для дополнения по каждому измерению. Третьим параметром можно указать режим дополнения: 'constant', 'reflect', 'replicate' или 'circular'. Для режима 'constant' можно задать значение через параметр value.

Синтаксис

torch.nn.functional.pad(input, pad, mode='constant', value=0)

Пример

Давайте дополним одномерный тензор нулями по одному элементу слева и справа:

import torch import torch.nn.functional as F t = torch.tensor([1, 2, 3, 4, 5]) res = F.pad(t, pad=(1, 1), mode='constant', value=0) print(res)

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

tensor([0, 1, 2, 3, 4, 5, 0])

Пример

Дополним двумерный тензор по строкам и столбцам с разными значениями:

import torch import torch.nn.functional as F t = torch.tensor([ [1, 2, 3], [4, 5, 6], ]) res = F.pad(t, pad=(1, 2, 1, 0), mode='constant', value=-1) print(res)

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

tensor([ [-1, -1, -1, -1, -1, -1], [-1, 1, 2, 3, -1, -1], [-1, 4, 5, 6, -1, -1], ])

Пример

Используем режим отражения для дополнения трёхмерного тензора:

import torch import torch.nn.functional as F t = torch.tensor([ [1, 2, 3], [4, 5, 6], ]) res = F.pad(t, pad=(1, 1, 1, 1), mode='reflect') print(res)

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

tensor([ [5, 4, 5, 6, 5], [2, 1, 2, 3, 2], [5, 4, 5, 6, 5], [2, 1, 2, 3, 2], ])

Пример

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

import torch import torch.nn.functional as F t = torch.tensor([1, 2, 3, 4, 5]) res = F.pad(t, pad=(3, 2), mode='replicate') print(res)

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

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

Пример

Используем циклический режим для дополнения двумерного тензора:

import torch import torch.nn.functional as F t = torch.tensor([ [1, 2, 3], [4, 5, 6], ]) res = F.pad(t, pad=(2, 1, 1, 2), mode='circular') print(res)

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

tensor([ [6, 4, 5, 6, 4, 5], [3, 1, 2, 3, 1, 2], [6, 4, 5, 6, 4, 5], [3, 1, 2, 3, 1, 2], [6, 4, 5, 6, 4, 5], ])

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

  • функцию interpolate,
    которая изменяет размер тензора с интерполяцией
  • функцию unfold,
    которая извлекает скользящие блоки из тензора
  • функцию fold,
    которая объединяет скользящие блоки обратно в тензор
  • функцию conv2d,
    которая часто использует дополнение для сохранения размеров
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить