docstr: :param images: tensor, input to the DownRes block
  :param is_training: is_training: boolean, True if network is in training mode
  :return: tensor, output of the DownRes block
docstr_tok: [":","param","images",":","tensor",",","input","to","the","DownRes","block",":","param","is_training",":","is_training",":","boolean",",","True","if","network","is","in","training","mode",":","return",":","tensor",",","output","of","the","DownRes","block"]
code: def layer_op(self, images, is_training):
      """
  
      :param images: tensor, input to the DownRes block
      :param is_training: is_training: boolean, True if network is in training mode
      :return: tensor, output of the DownRes block
      """
      layers = self.create()
      out = images
      for l in layers.blocks:
          out = l(out, is_training)
      return out
  
imports: from __future__ import absolute_import, print_function
  import functools
  from collections import namedtuple
  import tensorflow
  from niftynet.layer import layer_util
  from niftynet.layer.base_layer import TrainableLayer
  from niftynet.layer.bn import BNLayer
  from niftynet.layer.convolution import ConvolutionalLayer
  from niftynet.layer.fully_connected import FCLayer
  from niftynet.layer.squeeze_excitation import ChannelSELayer
  from niftynet.network.base_net import BaseNet
label_desc: Use image node_id 3 for calling the DownResBlock obj's underlying member method code with example usage: obj.layer_op(images, is_training) and returns: out