adaptive pooling keras 实现。

今天看论文时,看到一篇语义分割的文章,发现作者使用了一个adaptive average pooling的pooling 操作。一看这个怎么还没有见过。然后百度一搜发现这是pytroch 独有的一个pooling 操作。我平时一般使用的是keras.

看了一下这个原理,发现它是知道输出大小再进行pooling 池化的操作。

我们平时一般使用的池化操作一般都是定义 kerne_size ,strde 和padding 来计算output_size

output\_size=ceil((input_size+2*padding-kernekl\_size)/stride)+1

adaptive pooling 就是知道inputsize和outputsize 求解kernek_size和stride

最后查看源码可以得到下面的公式

stride=floor((input\_size/(output\_size))

kernel\_size=input\_size-(output\_size-1)*stride 

padding=0

这里有了公式这样就可以进行操作了。

def adapmaxpooling(x,outsize):
    x_shape=K.int_shape(x)
    batchsize1,dim1,dim2,channels1=x_shape
    stride=np.floor(dim1/outsize).astype(np.int32)
    kernels=dim1-(outsize-1)*stride
    adpooling=MaxPooling2D(pool_size=(kernels,kernels),strides=stride)(x)
    
    return adpooling
    

这样就可以了。这里我参考了AdaptivePooling与Max/AvgPooling相互转换。 感谢作者。

adaptive pooling

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值