code: def DepthConv(
      x,
      out_channel,
      kernel_shape,
      padding="SAME",
      stride=1,
      W_init=None,
      activation=tf.identity,
  ):
      in_shape = x.get_shape().as_list()
      in_channel = in_shape[1]
      assert out_channel % in_channel == 0, (out_channel, in_channel)
      channel_mult = out_channel // in_channel
  
      if W_init is None:
          W_init = tf.variance_scaling_initializer(2.0)
      kernel_shape = [kernel_shape, kernel_shape]
      filter_shape = kernel_shape + [in_channel, channel_mult]
  
      W = tf.get_variable("W", filter_shape, initializer=W_init)
      conv = tf.nn.depthwise_conv2d(
          x,
          W,
          [1, 1, stride, stride],
          padding=padding,
          data_format="NCHW",
      )
      return activation(conv, name="output")
  
imports: import argparse
  import math
  import numpy
  import os
  import cv2
  from tensorpack import tfv1
  from tensorpack import *
  from tensorpack.dataflow import imgaug
  from tensorpack.tfutils import argscope, SmartInit, model_utils
  from tensorpack.tfutils.scope_utils import under_name_scope
  from tensorpack.utils import logger
  from tensorpack.utils.gpu import get_num_gpu
  from imagenet_utils import ImageNetModel, eval_classification, get_imagenet_dataflow
label_desc: Use image node_id 1 for calling a global function with example usage: DepthConv(x, out_channel, kernel_shape, padding, stride, W_init, activation) and returns: activation