code: def _parameter_net(self, theta, kernel_shape=9):
          
          with argscope(FullyConnected, nl=tf.nn.leaky_relu):
              net = FullyConnected('fc1', theta, 64)
              net = FullyConnected('fc2', net, 128)
  
          pred_filter = FullyConnected('fc3', net, kernel_shape ** 2, nl=tf.identity)
          pred_filter = tf.reshape(pred_filter, [BATCH, kernel_shape, kernel_shape, 1], name="pred_filter")
          logger.info('Parameter net output: {}'.format(pred_filter.get_shape().as_list()))
          return pred_filter
docs: Estimate filters for convolution layers
  
          Args:
              theta: angle of filter
              kernel_shape: size of each filter
  
          Returns:
              learned filter as [B, k, k, 1]