class_docstr:     SiamRPN RPN after network backbone, regard output of x backbone as kernel,
      and regard output of z backbone as search feature, make Depthwise conv.
      get cls and loc though two streams netwrok
  
  Parameters
  ----------
      hidden : int
          hidden feature channel.
      out_channels : int
          output feature channel.
      bz : int
          batch size for train, bz = 1 if test.
      is_train : str
          is_train is True if train, False if test.
      kernel_size : float
          hidden kernel size.
      ctx : mxnet.Context
          Context such as mx.cpu(), mx.gpu(0).
class_docstr_tok: ["SiamRPN","RPN","after","network","backbone",",","regard","output","of","x","backbone","as","kernel",",","and","regard","output","of","z","backbone","as","search","feature",",","make","Depthwise","conv",".","get","cls","and","loc","though","two","streams","netwrok","Parameters","--","--","--","--","--","hidden",":","int","hidden","feature","channel",".","out_channels",":","int","output","feature","channel",".","bz",":","int","batch","size","for","train",",","bz","=","1","if","test",".","is_train",":","str","is_train","is","True","if","train",",","False","if","test",".","kernel_size",":","float","hidden","kernel","size",".","ctx",":","mxnet.Context","Context","such","as","mx.cpu","(",")",",","mx.gpu","(","0",")","."]
code: def __init__(
      self,
      hidden,
      out_channels,
      bz=1,
      is_train=False,
      kernel_size=3,
      ctx=cpu(),
  ):
      super(DepthwiseXCorr, self).__init__()
      self.conv_kernel = nn.HybridSequential(prefix="")
      self.conv_search = nn.HybridSequential(prefix="")
      self.head = nn.HybridSequential(prefix="")
  
      self.conv_kernel.add(
          nn.Conv2D(hidden, kernel_size=kernel_size, use_bias=False),
          nn.BatchNorm(),
          nn.Activation("relu"),
      )
      self.conv_search.add(
          nn.Conv2D(hidden, kernel_size=kernel_size, use_bias=False),
          nn.BatchNorm(),
          nn.Activation("relu"),
      )
      self.head.add(
          nn.Conv2D(hidden, kernel_size=1, use_bias=False),
          nn.BatchNorm(),
          nn.Activation("relu"),
          nn.Conv2D(out_channels, kernel_size=1),
      )
      if is_train:
          self.kernel_size = [bz, 256, 4, 4]
          self.search_size = [bz, 256, 20, 20]
          self.out_size = [bz, 256, 17, 17]
      else:
          self.kernel_size = [1, 256, 4, 4]
          self.search_size = [1, 256, 24, 24]
          self.out_size = [1, 256, 21, 21]
  
      self.conv_kernel.initialize(ctx=ctx)
      self.conv_search.initialize(ctx=ctx)
      self.head.initialize(ctx=ctx)
  
file_path: gluon-cv/gluoncv/model_zoo/siamrpn/siam_rpn.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from __future__ import unicode_literals
  from mxnet.gluon.block import HybridBlock
  from mxnet.gluon import nn
  from mxnet.context import cpu
label_desc: Use image node_id 1 to create a new DepthwiseXCorr object from inherited base classes: HybridBlock with example: obj = DepthwiseXCorr(hidden, out_channels, bz, is_train, kernel_size, ctx)