/tensorflow_unpooling

Unpooling of tensor that has been pooled using max_pool_with_argmax

Primary LanguagePython

Credits :: Tensorflow's Issue No 2169 and all the people invloved there.

Unpooling in Tensorflow

Unpooling of tensor that has been pooled using max_pool_with_argmax

What is unpooling ?

It's a tensor operation which tries to regenerate the tensor which has been maxpooled .

This figure below illustrates it perfectly

alt text

More on max pooling here ::Max Pooling

The original paper on unpooling :: Unpooling

Some more resources one may find useful::

  1. Broadcasting in Numpy
  2. Scatter in tensorflow
  3. Cocatanation in Tensorflow
  4. Max Pool with Arg Max in Tensorflow

Example Usage ::

  1. Declare a tensor
original_tensor = tf.random_uniform([1,4,4,3],maxval=100,dtype='float32',seed=2)
  1. Use the max pool with arg max function to pool the tensor
pooled_tensor,max_indices=tf.nn.max_pool_with_argmax(original_tensor, ksize=[1,2,2,1], strides=[1,2,2,1], padding='SAME')
  1. Now armed with pooled_tensor and max_indices you can call the unpool_with_argamx function !
unpooled_tensor=unpool_with_with_argmax(pooled_tensor,max_indices)
  1. It's done !

Lets have a look at it

  1. Original Tensor

alt text


  1. Pooled Tensor

alt text


  1. Max Indices

alt text


  1. And finally the Unpooled Tensor alt text