class_docstr: An expanded convolution 2d layer
  
  in --> expand conv (pointwise conv) --> depthwise conv -->
      project conv (pointwise conv) --> out
  
  Args:
      in_channels (int): The number of channels of the input array.
      out_channels (int): The number of channels of the output array.
      expand_pad (int, tuple of ints, 'SAME' or 'VALID'):
          Pad of expand conv filter application.
      depthwise_stride (int or tuple of ints):
          Stride of depthwise conv filter application.
      depthwise_ksize (int or tuple of ints):
          Kernel size of depthwise conv filter application.
      depthwise_pad (int, tuple of ints, 'SAME' or 'VALID'):
          Pad of depthwise conv filter application.
      project_pad (int, tuple of ints, 'SAME' or 'VALID'):
          Pad of project conv filter application.
      initialW (callable): Initial weight value used in
          the convolutional layers.
      bn_kwargs (dict): Keyword arguments passed to initialize
          :class:`chainer.links.BatchNormalization`.
code: def __call__(self, x):
      h = x
      if hasattr(self, "expand"):
          h = self.expand(x)
      h = self.depthwise(h)
      h = self.project(h)
      if h.shape == x.shape:
          h += x
      return h
  
file_path: chainercv/chainercv/links/model/mobilenet/expanded_conv_2d.py
imports: import chainer
  from chainer.functions import clipped_relu
  from chainercv.links.model.mobilenet.tf_conv_2d_bn_activ import TFConv2DBNActiv
  from chainercv.links.model.mobilenet.util import expand_input_by_factor
label_desc: Use image node_id 2 for calling the ExpandedConv2D obj's underlying member method code with example usage: obj.__call__(x) and returns: h