class_docstr: Abstract base class for convolutional RNNs
class_docstr_tok: ["Abstract","base","class","for","convolutional","RNNs"]
code: def _conv_forward(self, inputs, states):
      device = inputs.device
      i2h = npx.convolution(
          data=inputs,
          num_filter=self._hidden_channels * self._num_gates,
          kernel=self._i2h_kernel,
          stride=self._stride,
          pad=self._i2h_pad,
          dilate=self._i2h_dilate,
          weight=self.i2h_weight.data(device),
          bias=self.i2h_bias.data(device),
          layout=self._conv_layout,
      )
      h2h = npx.convolution(
          data=states[0].to_device(device),
          num_filter=self._hidden_channels * self._num_gates,
          kernel=self._h2h_kernel,
          dilate=self._h2h_dilate,
          pad=self._h2h_pad,
          stride=self._stride,
          weight=self.h2h_weight.data(device),
          bias=self.h2h_bias.data(device),
          layout=self._conv_layout,
      )
      return i2h, h2h
  
imports: from math import floor
  from ...base import numeric_types
  from .rnn_cell import HybridRecurrentCell
  from ..parameter import Parameter
  from ...None import np, npx
  from ...util import use_np
label_desc: Use image node_id 5 for calling the _BaseConvRNNCell obj's underlying member method code with example usage: obj._conv_forward(inputs, states) and returns: i2h,  h2h