k-max pooling实现

使用theano实现k-max pooling,github上目前还没有找到theano的实现,自己就写了一个简单的,仿照的是keras issues里面的一个提交。由于theano在反向bp时能够自动处理array index的变化,因此本质上是很简单的。
def k_max_pooling2d(data, k):
    output = data[T.arange(data.shape[0]).dimshuffle(0, "x", "x", "x"),
              T.arange(data.shape[1]).dimshuffle("x", 0, "x", "x"),
              T.sort(T.argsort(data, axis=2)[:, :, -k:, :], axis=2),
              T.arange(data.shape[2]).dimshuffle("x", "x", "x", 0)]
    return output

猜你喜欢

转载自blog.csdn.net/solo_sky/article/details/50807663