class_docstr: Dense Feature Stack with Skip Layer and Downsampling
  
  - Downsampling is done through strided convolution.
  
  ---[ DenseFeatureStackBlock ]----------[ Conv ]------- Skip layer
                                    |
                                    -------------------- Downsampled Output
  
  See DenseFeatureStackBlock for more info.
docstr: :param n_dense_channels: int, number of dense channels
  :param kernel_size: kernel size for convolutional layers
  :param dilation_rates: dilation rate of each layer in each vblock
  :param n_seg_channels: int, number of segmentation channels
  :param n_down_channels: int, number of output channels when downsampling
  :param use_bdo: boolean, set to True to use batch-wise drop-out
  :param name: layer name
  :param kwargs:
docstr_tok: [":","param","n_dense_channels",":","int",",","number","of","dense","channels",":","param","kernel_size",":","kernel","size","for","convolutional","layers",":","param","dilation_rates",":","dilation","rate","of","each","layer","in","each","vblock",":","param","n_seg_channels",":","int",",","number","of","segmentation","channels",":","param","n_down_channels",":","int",",","number","of","output","channels","when","downsampling",":","param","use_bdo",":","boolean",",","set","to","True","to","use","batch-wise","drop-out",":","param","name",":","layer","name",":","param","kwargs",":"]
code: def __init__(
      self,
      n_dense_channels,
      kernel_size,
      dilation_rates,
      n_seg_channels,
      n_down_channels,
      use_bdo,
      name="dense_feature_stack_block",
      **kwargs,
  ):
      """
  
      :param n_dense_channels: int, number of dense channels
      :param kernel_size: kernel size for convolutional layers
      :param dilation_rates: dilation rate of each layer in each vblock
      :param n_seg_channels: int, number of segmentation channels
      :param n_down_channels: int, number of output channels when downsampling
      :param use_bdo: boolean, set to True to use batch-wise drop-out
      :param name: layer name
      :param kwargs:
      """
  
      super(DenseFeatureStackBlockWithSkipAndDownsample, self).__init__(
          name=name
      )
  
      self.n_dense_channels = n_dense_channels
      self.kernel_size = kernel_size
      self.dilation_rates = dilation_rates
      self.n_seg_channels = n_seg_channels
      self.n_down_channels = n_down_channels
      self.use_bdo = use_bdo
      self.kwargs = kwargs
  
imports: from __future__ import absolute_import, print_function
  import tensorflow
  from niftynet.io.misc_io import image3_axial
  from niftynet.layer import layer_util
  from niftynet.layer.affine_augmentation import AffineAugmentationLayer
  from niftynet.layer.base_layer import TrainableLayer
  from niftynet.layer.bn import BNLayer
  from niftynet.layer.channel_sparse_convolution import ChannelSparseConvolutionalLayer
  from niftynet.layer.convolution import ConvolutionalLayer
  from niftynet.layer.linear_resize import LinearResizeLayer
  from niftynet.layer.downsample import DownSampleLayer
  from niftynet.network.base_net import BaseNet
  from collections import namedtuple
label_desc: Use image node_id 1 to create a new DenseFeatureStackBlockWithSkipAndDownsample object from inherited base classes: TrainableLayer with example: obj = DenseFeatureStackBlockWithSkipAndDownsample(n_dense_channels, kernel_size, dilation_rates, n_seg_channels, n_down_channels, use_bdo, name)