def get_receptive_field(layers, img_size):
 receptive_field = np.zeros((len(layers), 2))
 conv_mode = True
 first_conv_layer = True
 expon = np.ones((1, 2))
 for (i, layer) in enumerate(layers[1:]):
  j = (i + 1)
  if (not conv_mode):
   receptive_field[j] = img_size
   continue
  if is_conv2d(layer):
   if (not first_conv_layer):
    last_field = receptive_field[i]
    new_field = (last_field + (expon * (np.array(layer.filter_size) - 1)))
    receptive_field[j] = new_field
   else:
    receptive_field[j] = layer.filter_size
    first_conv_layer = False
  elif is_maxpool2d(layer):
   receptive_field[j] = receptive_field[i]
   expon *= np.array(layer.pool_size)
  else:
   conv_mode = False
   receptive_field[j] = img_size
 receptive_field[0] = img_size
 return receptive_field

def get_receptive_field ( layers , img_size ) : receptive_field = np . zeros ( ( len ( layers ) , 2 ) ) conv_mode = True first_conv_layer = True expon = np . ones ( ( 1 , 2 ) ) for ( i , layer ) in enumerate ( layers [ 1 : ] ) : j = ( i + 1 ) if ( not conv_mode ) : receptive_field [ j ] = img_size continue if is_conv2d ( layer ) : if ( not first_conv_layer ) : last_field = receptive_field [ i ] new_field = ( last_field + ( expon * ( np . array ( layer . filter_size ) - 1 ) ) ) receptive_field [ j ] = new_field else : receptive_field [ j ] = layer . filter_size first_conv_layer = False elif is_maxpool2d ( layer ) : receptive_field [ j ] = receptive_field [ i ] expon *= np . array ( layer . pool_size ) else : conv_mode = False receptive_field [ j ] = img_size receptive_field [ 0 ] = img_size return receptive_field
get the real filter sizes of each layer involved in convoluation .