В чем разница между torch.mean и torch.nn.avg_pool?

#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 объединения.