class_docstr: implementation of ScaleNet:
      Fidon et al., "Scalable multimodal convolutional
      networks for brain tumour segmentation", MICCAI '17
  
  ### Diagram
  
  INPUT --> [BACKEND] ----> [MERGING] ----> [FRONTEND] ---> OUTPUT
  
  [BACKEND] and [MERGING] are provided by the ScaleBlock below
  [FRONTEND]: it can be any NiftyNet network (default: HighRes3dnet)
  
  ### Constraints:
  - Input image size should be divisible by 8
  - more than one modality should be used
class_docstr_tok: ["implementation","of","ScaleNet",":","Fidon","et","al.",",","``","Scalable","multimodal","convolutional","networks","for","brain","tumour","segmentation","''",",","MICCAI","'17","#","#","#","Diagram","INPUT","--",">","[","BACKEND","]","--","--",">","[","MERGING","]","--","--",">","[","FRONTEND","]","--","-",">","OUTPUT","[","BACKEND","]","and","[","MERGING","]","are","provided","by","the","ScaleBlock","below","[","FRONTEND","]",":","it","can","be","any","NiftyNet","network","(","default",":","HighRes3dnet",")","#","#","#","Constraints",":","-","Input","image","size","should","be","divisible","by","8","-","more","than","one","modality","should","be","used"]
docstr: :param num_classes: int, number of channels of output
  :param w_initializer: weight initialisation for network
  :param w_regularizer: weight regularisation for network
  :param b_initializer: bias initialisation for network
  :param b_regularizer: bias regularisation for network
  :param acti_func: activation function to use
  :param name: layer name
docstr_tok: [":","param","num_classes",":","int",",","number","of","channels","of","output",":","param","w_initializer",":","weight","initialisation","for","network",":","param","w_regularizer",":","weight","regularisation","for","network",":","param","b_initializer",":","bias","initialisation","for","network",":","param","b_regularizer",":","bias","regularisation","for","network",":","param","acti_func",":","activation","function","to","use",":","param","name",":","layer","name"]
code: def __init__(
      self,
      num_classes,
      w_initializer=None,
      w_regularizer=None,
      b_initializer=None,
      b_regularizer=None,
      acti_func="prelu",
      name="ScaleNet",
  ):
      """
  
      :param num_classes: int, number of channels of output
      :param w_initializer: weight initialisation for network
      :param w_regularizer: weight regularisation for network
      :param b_initializer: bias initialisation for network
      :param b_regularizer: bias regularisation for network
      :param acti_func: activation function to use
      :param name: layer name
      """
  
      super(ScaleNet, self).__init__(
          num_classes=num_classes,
          w_initializer=w_initializer,
          w_regularizer=w_regularizer,
          b_initializer=b_initializer,
          b_regularizer=b_regularizer,
          acti_func=acti_func,
          name=name,
      )
  
      self.n_features = 16
  
file_path: NiftyNet/niftynet/network/scalenet.py
imports: from __future__ import absolute_import, print_function, division
  import tensorflow
  from niftynet.layer.base_layer import TrainableLayer
  from niftynet.layer.convolution import ConvolutionalLayer
  from niftynet.network.base_net import BaseNet
  from niftynet.network.highres3dnet import HighRes3DNet, HighResBlock
  from niftynet.utilities.util_common import look_up_operations
label_desc: Use image node_id 1 to create a new ScaleNet object from inherited base classes: BaseNet with example: obj = ScaleNet(num_classes, w_initializer, w_regularizer, b_initializer, b_regularizer, acti_func, name)