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

Класс AdaptiveMaxPool1d

Класс AdaptiveMaxPool1d реализует операцию адаптивного максимального пулинга для одномерных данных. В отличие от обычного пулинга, адаптивный пулинг не требует задания размера окна и шага - вместо этого он принимает целевой размер выходного тензора. Первым параметром передаётся целевой размер выхода, вторым параметром можно указать возврат индексов максимальных элементов.

Синтаксис

torch.nn.AdaptiveMaxPool1d(output_size, return_indices=False)

Параметры

Класс принимает следующие параметры:

output_size - целевой размер выходного тензора по пространственному измерению. Может быть задан как целое число или как кортеж из одного элемента.

return_indices - если установить в True, то слой будет возвращать не только результат пулинга, но и индексы максимальных элементов. Это может быть полезно для обратных операций, таких как MaxUnpool1d.

Пример с выходным размером 2

Давайте применим адаптивный макспулинг к одномерному тензору длины 8, уменьшив его до размера 2:

import torch import torch.nn as nn # Создаём слой адаптивного макспулинга pool = nn.AdaptiveMaxPool1d(output_size=2) # Создаём входной тензор размером (batch=1, channels=1, length=8) t = torch.tensor([ [[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0]] ]) res = pool(t) print(res)

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

tensor([ [[4., 8.]] ])

Пример с возвратом индексов

Используем параметр return_indices для получения индексов максимальных элементов:

import torch import torch.nn as nn # Создаём слой с возвратом индексов pool = nn.AdaptiveMaxPool1d(output_size=2, return_indices=True) t = torch.tensor([ [[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0]] ]) res, idx = pool(t) print("Result:", res) print("Indices:", idx)

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

Result: tensor([ [[4., 8.]] ]) Indices: tensor([ [[3, 7]] ])

Пример работы с многоканальными данными

Адаптивный макспулинг работает с многоканальными данными, обрабатывая каждый канал независимо:

import torch import torch.nn as nn pool = nn.AdaptiveMaxPool1d(output_size=3) # Тензор размером (batch=1, channels=3, length=6) t = torch.tensor([ [ [1.0, 2.0, 3.0, 4.0, 5.0, 6.0], [6.0, 5.0, 4.0, 3.0, 2.0, 1.0], [1.0, 3.0, 5.0, 2.0, 4.0, 6.0] ] ]) res = pool(t) print(res)

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

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

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

  • класс MaxPool1d,
    который выполняет обычный максимальный пулинг с фиксированным окном
  • класс AdaptiveAvgPool1d,
    который выполняет адаптивный средний пулинг для 1D данных
  • класс AdaptiveMaxPool2d,
    который выполняет адаптивный макспулинг для 2D данных
  • класс Conv1d,
    который выполняет одномерную свёртку входного сигнала
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить