class_docstr: Channel sparse convolutions perform convolutions over
  a subset of image channels and generate a subset of output
  channels. This enables spatial dropout without wasted computations
class_docstr_tok: ["Channel","sparse","convolutions","perform","convolutions","over","a","subset","of","image","channels","and","generate","a","subset","of","output","channels",".","This","enables","spatial","dropout","without","wasted","computations"]
code: def __init__(self, n_dense_channels, *args, **kwargs):
      self.n_dense_channels = n_dense_channels
      super(ChannelSparseBNLayer, self).__init__(*args, **kwargs)
  
imports: from __future__ import absolute_import, print_function
  import math
  import numpy
  import tensorflow
  from tensorflow.python.training import moving_averages
  import niftynet.layer.bn
  import niftynet.layer.convolution
  import niftynet.layer.deconvolution
  from niftynet.layer import layer_util
  from niftynet.layer.activation import ActiLayer
  from niftynet.layer.base_layer import TrainableLayer
  from niftynet.layer.deconvolution import infer_output_dims
label_desc: Use image node_id 1 to create a new ChannelSparseBNLayer object from inherited base classes: niftynet.layer.bn with example: obj = ChannelSparseBNLayer(n_dense_channels)