zoukankan      html  css  js  c++  java
  • In Theano, how to do Reverse-MaxPooling in the Convolutional MaxPooling Auto-Encoder

    MaxPooling Layer always follows Convolutional Layer. But in the Convolutional MaxPooling Auto-Encoder, how to do reverse or Un-MaxPooling?

    Here is the method:

     1 import numpy as np
     2 import theano
     3 import theano.tensor as T
     4 import theano.sandbox.neighbours as nbr
     5 
     6 poolsize = (2, 2)
     7 print 'neighbor box:'
     8 print poolsize
     9 # Defining batch images
    10 images = T.tensor4('images')
    11 #conver images to neighbors matrix
    12 neibs = nbr.images2neibs(images, neib_shape=poolsize)
    13 
    14 # Constructing theano function 
    15 window_function = theano.function([images], neibs)
    16 
    17 # Input tensor image width and height are 4
    18 im_val = np.random.randint(0, 100, (2, 1, 4, 4))
    19 im_val = im_val.astype(np.float32)
    20 # Function application
    21 neibs_val = window_function(im_val)
    22 
    23 print 'original images:'
    24 print im_val
    25 print 'neighbor flatten:'
    26 print neibs_val
    27 
    28 
    29 neibs0 = T.zeros_like(neibs)
    30 #get maximum of neighbors
    31 am = T.argmax(neibs, axis=1)
    32 neibs1 = T.set_subtensor(neibs0[T.arange(neibs.shape[0]), am], 1)
    33 neibs *= neibs1 #suppress the non-maximum
    34 
    35 #convert neighbors matrix to images
    36 im_new = nbr.neibs2images(neibs, poolsize, im_val.shape)
    37 # Theano function definition
    38 inv_window = theano.function([images], im_new)
    39 # Function application
    40 im_new_val = inv_window(im_val)
    41 
    42 print 'non maximum suppression result:'
    43 print im_new_val
    View Code

    The following is the output:

     1 neighbor box:
     2 (2, 2)
     3 original images:
     4 [[[[ 15.  46.  46.  37.]
     5    [ 73.  93.   2.  91.]
     6    [ 97.  93.  78.   7.]
     7    [  0.  24.  34.  26.]]]
     8 
     9 
    10  [[[ 70.  46.   2.  93.]
    11    [ 11.  54.  29.  83.]
    12    [  0.  48.  69.  95.]
    13    [ 49.  48.  10.  19.]]]]
    14 neighbor flatten:
    15 [[ 15.  46.  73.  93.]
    16  [ 46.  37.   2.  91.]
    17  [ 97.  93.   0.  24.]
    18  [ 78.   7.  34.  26.]
    19  [ 70.  46.  11.  54.]
    20  [  2.  93.  29.  83.]
    21  [  0.  48.  49.  48.]
    22  [ 69.  95.  10.  19.]]
    23 non maximum suppression result:
    24 [[[[  0.   0.   0.   0.]
    25    [  0.  93.   0.  91.]
    26    [ 97.   0.  78.   0.]
    27    [  0.   0.   0.   0.]]]
    28 
    29 
    30  [[[ 70.   0.   0.  93.]
    31    [  0.   0.   0.   0.]
    32    [  0.   0.   0.  95.]
    33    [ 49.   0.   0.   0.]]]]
    View Code
  • 相关阅读:
    【BZOJ 4581】【Usaco2016 Open】Field Reduction
    【BZOJ 4582】【Usaco2016 Open】Diamond Collector
    【BZOJ 4580】【Usaco2016 Open】248
    【BZOJ 3754】Tree之最小方差树
    【51Nod 1501】【算法马拉松 19D】石头剪刀布威力加强版
    【51Nod 1622】【算法马拉松 19C】集合对
    【51Nod 1616】【算法马拉松 19B】最小集合
    【51Nod 1674】【算法马拉松 19A】区间的价值 V2
    【BZOJ 2541】【Vijos 1366】【CTSC 2000】冰原探险
    【BZOJ 1065】【Vijos 1826】【NOI 2008】奥运物流
  • 原文地址:https://www.cnblogs.com/starimpact/p/4319709.html
Copyright © 2011-2022 走看看