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

Класс MaxPool1d

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

Основные параметры: kernel_size - размер окна пулинга, stride - шаг скольжения окна, padding - количество нулевых элементов, добавляемых по краям, dilation - расстояние между элементами в окне, и ceil_mode - определяет способ вычисления размера выходного тензора при нецелых значениях.

Синтаксис

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

Пример

Создадим слой MaxPool1d с окном размера 2 и шагом 2, и применим его к одномерному тензору:

import torch import torch.nn as nn pool = nn.MaxPool1d(kernel_size=2, stride=2) t = torch.tensor([1, 3, 2, 4, 5, 7]) res = pool(t.unsqueeze(0).unsqueeze(0)) print(res)

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

tensor([[[3, 4, 7]]])

Слой выбрал максимальные значения из пар (1,3), (2,4) и (5,7).

Пример

Теперь применим MaxPool1d к тензору с batch-размером и несколькими каналами. Входной тензор имеет форму (batch, channels, length):

import torch import torch.nn as nn pool = nn.MaxPool1d(kernel_size=3, stride=1, padding=1) t = torch.tensor([ [ [1, 2, 3, 4, 5], [6, 7, 8, 9, 10] ], [ [10, 20, 30, 40, 50], [60, 70, 80, 90, 100] ] ]) res = pool(t) print(res)

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

tensor([ [ [2, 3, 4, 5, 5], [7, 8, 9, 10, 10] ], [ [20, 30, 40, 50, 50], [70, 80, 90, 100, 100] ] ])

За счет padding=1 длина выходного тензора совпадает с длиной входного.

Пример

Используем MaxPool1d с параметром return_indices=True, чтобы получить индексы максимальных элементов. Это может пригодиться для обратного распространения:

import torch import torch.nn as nn pool = nn.MaxPool1d(kernel_size=2, stride=2, return_indices=True) t = torch.tensor([5, 1, 3, 8, 2, 7]) res, indices = pool(t.unsqueeze(0).unsqueeze(0)) print(res) print(indices)

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

tensor([[[5, 8, 7]]]) tensor([[[0, 3, 5]]])

Тензор indices содержит позиции максимальных элементов в каждом окне.

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

  • класс MaxPool2d,
    который выполняет макспулинг для двумерных данных (изображений)
  • класс AvgPool1d,
    который выполняет усредняющий пулинг для одномерных данных
  • класс AdaptiveMaxPool1d,
    который выполняет адаптивный макспулинг для одномерных данных с заданным выходным размером
  • класс Conv1d,
    который выполняет одномерную свертку, часто используемую вместе с пулингом
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить