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

Класс AvgPool1d

Класс AvgPool1d применяет усредняющий пулинг к входным данным размерности (N, C, L), где N - размер батча, C - количество каналов, L - длина последовательности. Операция заключается в скольжении окна заданного размера по временной оси и вычислении среднего арифметического значений внутри окна. Класс позволяет управлять размером окна, шагом и типом заполнения.

Основные параметры конструктора: kernel_size (размер окна пулинга), stride (шаг окна, по умолчанию равен kernel_size), padding (заполнение нулями) и ceil_mode (режим округления размеров).

Синтаксис

torch.nn.AvgPool1d( kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True )

Пример

Создадим слой пулинга с окном размера 3 и применим его к одномерному тензору:

import torch layer = torch.nn.AvgPool1d(kernel_size=3) t = torch.tensor([[[1, 2, 3, 4, 5, 6]]], dtype=torch.float) res = layer(t) print(res)

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

tensor([[[2., 5.]]])

Выходной тензор имеет форму (1, 1, 2)⁅/⁆c: было два непересекающихся окна: [1,2,3] → 2.0 и [4,5,6] → 5.0.

Пример

Применим пулинг с окном размера 2 и шагом 2 к тензору из 4 элементов:

import torch layer = torch.nn.AvgPool1d(kernel_size=2, stride=2) t = torch.tensor([[[10, 20, 30, 40]]], dtype=torch.float) res = layer(t) print(res)

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

tensor([[[15., 35.]]])

Окна [10,20] → 15.0 и [30,40] → 35.0.

Пример

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

import torch layer = torch.nn.AvgPool1d(kernel_size=3, padding=1, stride=1) t = torch.tensor([[[1, 2, 3, 4, 5]]], dtype=torch.float) res = layer(t) print(res)

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

tensor([[[0.6667, 2.0000, 3.0000, 4.0000, 3.0000]]])

Заполнение нулями добавило по одному нулю с каждой стороны, что позволило сохранить длину последовательности.

Пример

Применим пулинг к батчу из двух образцов с несколькими каналами:

import torch torch.manual_seed(0) layer = torch.nn.AvgPool1d(kernel_size=2, stride=2) t = torch.randn(2, 3, 6) res = layer(t) print(res.shape)

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

torch.Size([2, 3, 3])

Размерность временной оси уменьшилась с 6 до 3 (6 / 2 = 3), количество батчей и каналов сохранилось.

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

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