class_docstr: Re-implementation of concurrent spatial and channel
  squeeze & excitation::
  
      Roy et al., Concurrent Spatial and Channel Squeeze & Excitation
      in Fully Convolutional Networks, arXiv:1803.02579
class_docstr_tok: ["Re-implementation","of","concurrent","spatial","and","channel","squeeze","&","excitation",":",":","Roy","et","al.",",","Concurrent","Spatial","and","Channel","Squeeze","&","Excitation","in","Fully","Convolutional","Networks",",","arXiv:1803.02579"]
code: def layer_op(self, input_tensor):
      cSE = ChannelSELayer(
          func=self.func,
          reduction_ratio=self.reduction_ratio,
          name="cSE",
      )
      sSE = SpatialSELayer(name="sSE")
  
      output_tensor = tf.add(cSE(input_tensor), sSE(input_tensor))
  
      return output_tensor
  
file_path: NiftyNet/niftynet/layer/squeeze_excitation.py
imports: from __future__ import absolute_import, print_function
  import tensorflow
  from niftynet.layer.base_layer import Layer
  from niftynet.layer.fully_connected import FullyConnectedLayer
  from niftynet.layer.convolution import ConvolutionalLayer
  from niftynet.utilities.util_common import look_up_operations
label_desc: Use image node_id 2 for calling the ChannelSpatialSELayer obj's underlying member method code with example usage: obj.layer_op(input_tensor) and returns: output_tensor