code: def run_dncnn(
      x: tf.Tensor,
      image_chnls: int = 3,
      depth: int = 17,
      n_channels: int = 64,
  ) -> tf.Tensor:
      """Runs a DNCNN block.
  
      :param x: inputs [batch_size, h, w, nb_channels]
      :param image_chnls: number of channels in the output images (int)
      :param depth: depth of the network (int)
      :param n_channels: number of channels in the convolutional layers (int)
      :return: batch of images
      """
      x = conv_block(x, channels=n_channels)
      for _ in range(depth - 2):
          x = conv_block(x, channels=n_channels, bn=True)
  
      outputs = layers.Conv2D(
          image_chnls,
          kernel_size=3,
          padding="same",
          use_bias=False,
          kernel_initializer="orthogonal",
      )(x)
      return outputs
  
imports: from tensorflow.keras import layers
  import tensorflow
label_desc: Use image node_id 2 for calling a global function with example usage: run_dncnn(x, image_chnls, depth, n_channels) and returns: outputs