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

Класс MaxPool3d

Класс MaxPool3d применяет трёхмерную операцию max pooling к входному тензору. Он уменьшает пространственную размерность данных, выбирая максимальное значение в каждом окне пулинга. Первый параметр kernel_size определяет размер окна пулинга в трёх измерениях. Второй параметр stride задаёт шаг перемещения окна, по умолчанию равен kernel_size. Третий параметр padding добавляет нулевые отступы вокруг входных данных для контроля размера выхода. Также можно передать dilation для расширения окна, ceil_mode для округления размера вверх и return_indices для возврата индексов максимальных значений.

Синтаксис

torch.nn.MaxPool3d( kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False )

Пример ⁅n="sect"⁆

Создадим простой трёхмерный тензор и применим к нему MaxPool3d с окном размером 2:

import torch import torch.nn as nn # Create a 3D tensor with shape (batch, channels, depth, height, width) t = torch.tensor([[[[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]]]], dtype=torch.float) print("Input tensor:") print(t) print("Shape:", t.shape) # Create MaxPool3d layer with kernel size 2 pool = nn.MaxPool3d(kernel_size=2) res = pool(t) print("\nOutput tensor:") print(res) print("Shape:", res.shape)

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

Input tensor: tensor([[[[[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]]]]]) Shape: torch.Size([1, 1, 1, 3, 3]) Output tensor: tensor([[[[[5., 6.], [8., 9.]]]]]) Shape: torch.Size([1, 1, 1, 2, 2])

Пример ⁅n="sect"⁆

Используем MaxPool3d с шагом 1 и отступом 1, чтобы сохранить размерность:

import torch import torch.nn as nn torch.manual_seed(0) t = torch.randn(1, 1, 4, 4, 4) print("Input shape:", t.shape) pool = nn.MaxPool3d( kernel_size=2, stride=1, padding=1 ) res = pool(t) print("Output shape:", res.shape)

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

Input shape: torch.Size([1, 1, 4, 4, 4]) Output shape: torch.Size([1, 1, 4, 4, 4])

Пример ⁅n="sect"⁆

Получим индексы максимальных значений с помощью параметра return_indices для использования в MaxUnpool3d:

import torch import torch.nn as nn t = torch.tensor([[[[ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16] ]]]], dtype=torch.float) print("Input tensor:") print(t) print("Shape:", t.shape) pool = nn.MaxPool3d( kernel_size=2, stride=2, return_indices=True ) res, indices = pool(t) print("\nOutput values:") print(res) print("Output indices:") print(indices)

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

Input tensor: tensor([[[[[ 1., 2., 3., 4.], [ 5., 6., 7., 8.], [ 9., 10., 11., 12.], [13., 14., 15., 16.]]]]]) Shape: torch.Size([1, 1, 1, 4, 4]) Output values: tensor([[[[[ 6., 8.], [14., 16.]]]]]) Output indices: tensor([[[[[ 5, 7], [13, 15]]]]])

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

  • класс MaxPool1d,
    который применяет одномерное max pooling
  • класс MaxPool2d,
    который применяет двумерное max pooling
  • класс AvgPool3d,
    который применяет трёхмерное average pooling
  • класс Conv3d,
    который применяет трёхмерную свёртку
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить