k-max-pooling

 

 

还有一种常用的操作是k-max-pooling.这种是在max-pooling上改进来的,因为max-pooling操作太简单粗暴了,k-max-pooling认为每一块不只一个点重要,前几个亮点都比较重要,所以在每一个pooling块中取了前k大的值。

 

import torch
def kmax_pooling(x, dim, k):
    index = x.topk(k, dim=dim)[1].sort(dim=dim)[0]
    return x.gather(dim, index)
x = torch.rand(4, 5, 6, 10)
print(x)                        # [torch.FloatTensor of size 4x5x6x10]
y = kmax_pooling(x, 3, 5)       
print(y)                        # # [torch.FloatTensor of size 4x5x6x5]

 

你可能感兴趣的:(深度学习基础)