def squeeze_nxn(input_, n_factor=2):
 if isinstance(input_, (float, int)):
  return input_
 shape = input_.get_shape().as_list()
 batch_size = shape[0]
 height = shape[1]
 width = shape[2]
 channels = shape[3]
 if ((height % n_factor) != 0):
  raise ValueError(('Height not divisible by %d.' % n_factor))
 if ((width % n_factor) != 0):
  raise ValueError(('Width not divisible by %d.' % n_factor))
 res = tf.reshape(input_, [batch_size, (height // n_factor), n_factor, (width // n_factor), n_factor, channels])
 res = tf.transpose(res, [0, 1, 3, 5, 2, 4])
 res = tf.reshape(res, [batch_size, (height // n_factor), (width // n_factor), ((channels * n_factor) * n_factor)])
 return res

def squeeze_nxn ( input_ , n_factor = 2 ) : if isinstance ( input_ , ( float , int ) ) : return input_ shape = input_ . get_shape ( ) . as_list ( ) batch_size = shape [ 0 ] height = shape [ 1 ] width = shape [ 2 ] channels = shape [ 3 ] if ( ( height % n_factor ) != 0 ) : raise ValueError ( ( 'Height not divisible by %d.' % n_factor ) ) if ( ( width % n_factor ) != 0 ) : raise ValueError ( ( 'Width not divisible by %d.' % n_factor ) ) res = tf . reshape ( input_ , [ batch_size , ( height // n_factor ) , n_factor , ( width // n_factor ) , n_factor , channels ] ) res = tf . transpose ( res , [ 0 , 1 , 3 , 5 , 2 , 4 ] ) res = tf . reshape ( res , [ batch_size , ( height // n_factor ) , ( width // n_factor ) , ( ( channels * n_factor ) * n_factor ) ] ) return res
squeezing operation: reshape to convert space to channels .