Как преобразовать (1,64,224,224) —> (1,64) с использованием адаптивного среднего пула(Pytorch)?

#pytorch #average #dimensionality-reduction #pooling

Вопрос:

Есть ли в Pytorch какой-либо способ уменьшить размеры тензора в модели?

Комментарии:

1. пожалуйста, отметьте соответствующие ответы как правильные

Ответ №1:

Адаптивное среднее объединение или фактически любое типичное объединение в Pytorch не уменьшает размеры тензора. Вы можете найти все типы пулов, которые предлагает Pytorch, здесь: https://pytorch.org/docs/master/nn.html#pooling-layers

Я предлагаю использовать этот код шаблона, чтобы опробовать различные объединения и их влияние на размеры:

 m = nn.AdaptiveAvgPool2d((5,7))
input = torch.randn(1, 64, 8, 9)
output = m(input)
print(output.size())
 

Чтобы уменьшить размерность в моделях Pytorch, вы можете указать блок, который сжимает() тензор или даже сглаживает тензор, например, с помощью example_tensor.view(-1, x, y).

Сартак Джайн

Ответ №2:

Этот код должен работать для сжатия (1,64,224,224) —> (1,64)

 import torch
import torch.nn as nn
m = nn.AdaptiveAvgPool2d((1,1))
input = torch.randn(1, 64, 224, 224)
output = m(input).view(1,-1)
print(output.size())  #torch.Size([1, 64])