#pytorch
#пыторч
Вопрос:
Взяв в качестве примера тензор с формой [4,8,12], в чем разница между двумя линиями:
torch.mean(x, dim=2) torch.nn.functional.avg_pool1d(x, kernel_size=12)
Ответ №1:
В том самом примере, который вы привели, результат тот же, но только потому, что вы указали dim=2
и kernel_size
равны размерности третьего (индекс 2) измерения. Но в принципе вы применяете две разные функции, которые иногда просто сталкиваются с определенным выбором гиперпараметров.
torch.mean
фактически это функция уменьшения размерности, означающая, что при усреднении всех значений по одному измерению вы эффективно избавляетесь от этого измерения. С другой стороны, среднее 1-мерное объединение более эффективно в этом отношении, поскольку оно дает вам гораздо большую гибкость в выборе размера ядра, заполнения и шага, как вы обычно делаете при использовании сверточного слоя.
Вы можете рассматривать первую функцию как конкретный случай 1-d объединения.