1. 程式人生 > >pytroch如何對線性層進行池化(pooling)?Expected 3-dimensional tensor, but got 2-dimensional tensor for argument

pytroch如何對線性層進行池化(pooling)?Expected 3-dimensional tensor, but got 2-dimensional tensor for argument

要實現的功能如圖所示

而池化操作是要有通道的,如果直接對(batchsize,num_neuron)的張量進行一維池化(nn.MaxPool1d)操作,會有以下的錯誤

import torch
t=torch.randn(10,64)
n=torch.nn.MaxPool1d(2,2)
n(t)

Expected 3-dimensional tensor, but got 2-dimensional tensor for argument #1 'self' (while checking arguments for max_pool1d)

正確的做法應該是先進行升維,升出來通道維度。

import torch
t=torch.randn(10,64)
t=t.unsqueeze(1)
n=torch.nn.MaxPool1d(2,2)
out=n(t)
print(out.size())

 以上程式碼的輸出為:

torch.Size([10, 1, 32])

在對多層感知機進行池化的過程也是類似的。

池化之後應該就不需要通道維了,可以用squeeze降低維度。