docstr: :param input_tensor: tensor, input to the layer
  :param is_training: boolean, True if network is in training mode
  :param layer_id: not is use
  :return: tensor with number of channels to num_classes
docstr_tok: [":","param","input_tensor",":","tensor",",","input","to","the","layer",":","param","is_training",":","boolean",",","True","if","network","is","in","training","mode",":","param","layer_id",":","not","is","use",":","return",":","tensor","with","number","of","channels","to","num_classes"]
code: def layer_op(self, input_tensor, is_training, layer_id=-1):
      """
  
      :param input_tensor: tensor, input to the layer
      :param is_training: boolean, True if network is in training mode
      :param layer_id: not is use
      :return: tensor with number of channels to num_classes
      """
      rank = input_tensor.shape.ndims
      perm = [i for i in range(rank)]
      perm[-2], perm[-1] = perm[-1], perm[-2]
      output_tensor = input_tensor
      n_layers = self.n_layers
      # All layers except the last one consists in:
      # BN + Conv_3x3x3 + Activation
      # layer_instances = []
  
      for layer in range(n_layers - 1):
          layer_to_add = ConvolutionalLayer(
              n_output_chns=self.num_features[layer + 1],
              feature_normalization="batch",
              kernel_size=3,
              w_initializer=self.initializers["w"],
              w_regularizer=self.regularizers["w"],
              acti_func=self.acti_func,
              name="conv_fc_%d" % layer,
          )
          output_tensor = layer_to_add(output_tensor, is_training)
          # layer_instances.append((layer_to_add, output_tensor))
      last_layer = ConvolutionalLayer(
          n_output_chns=self.num_classes, kernel_size=1
      )
      output_tensor = last_layer(output_tensor, is_training)
      # layer_instances.append((last_layer, output_tensor))
      return output_tensor
  
imports: from __future__ import absolute_import, print_function
  import tensorflow
  from niftynet.layer.base_layer import TrainableLayer
  from niftynet.layer.convolution import ConvLayer
  from niftynet.layer.convolution import ConvolutionalLayer
  from niftynet.layer.dilatedcontext import DilatedTensor
  from niftynet.layer.downsample import DownSampleLayer
  from niftynet.layer.upsample import UpSampleLayer
  from niftynet.network.base_net import BaseNet
  from niftynet.network.highres3dnet import HighResBlock
label_desc: Use image node_id 2 for calling the ScoreLayer obj's underlying member method code with example usage: obj.layer_op(input_tensor, is_training, layer_id) and returns: output_tensor