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",")","."]
docstr: hybrid_forward
docstr_tok: ["hybrid_forward"]
code: def hybrid_forward(self, F, kernel, search):
      """hybrid_forward"""
      kernel = self.conv_kernel(kernel)
      search = self.conv_search(search)
      batch = self.kernel_size[0]
      channel = self.kernel_size[1]
      search = search.reshape(
          (1, batch * channel, self.search_size[2], self.search_size[3])
      )
      kernel = kernel.reshape(
          (batch * channel, 1, self.kernel_size[2], self.kernel_size[3])
      )
      out = F.Convolution(
          data=search,
          weight=kernel,
          kernel=[self.kernel_size[2], self.kernel_size[3]],
          no_bias=True,
          num_filter=batch * channel,
          num_group=batch * channel,
      )
      out = out.reshape(
          (batch, channel, self.out_size[2], self.out_size[3])
      )
      out = self.head(out)
      return out
  
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 2 for calling the DepthwiseXCorr obj's underlying member method code with example usage: obj.hybrid_forward(F, kernel, search) and returns: out