class_docstr: 2D Convolutional LSTM network cell.
  
  `"Convolutional LSTM Network: A Machine Learning Approach for Precipitation Nowcasting"
  <https://arxiv.org/abs/1506.04214>`_ paper. Xingjian et al. NIPS2015
  
  .. math::
      \begin{array}{ll}
      i_t = \sigma(W_i \ast x_t + R_i \ast h_{t-1} + b_i) \\
      f_t = \sigma(W_f \ast x_t + R_f \ast h_{t-1} + b_f) \\
      o_t = \sigma(W_o \ast x_t + R_o \ast h_{t-1} + b_o) \\
      c^\prime_t = tanh(W_c \ast x_t + R_c \ast h_{t-1} + b_c) \\
      c_t = f_t \circ c_{t-1} + i_t \circ c^\prime_t \\
      h_t = o_t \circ tanh(c_t) \\
      \end{array}
  
  Parameters
  ----------
  input_shape : tuple of int
      Input tensor shape at each time step for each sample, excluding dimension of the batch size
      and sequence length. Must be consistent with `conv_layout`.
      For example, for layout 'NCHW' the shape should be (C, H, W).
  hidden_channels : int
      Number of output channels.
  i2h_kernel : int or tuple of int
      Input convolution kernel sizes.
  h2h_kernel : int or tuple of int
      Recurrent convolution kernel sizes. Only odd-numbered sizes are supported.
  i2h_pad : int or tuple of int, default (0, 0)
      Pad for input convolution.
  i2h_dilate : int or tuple of int, default (1, 1)
      Input convolution dilate.
  h2h_dilate : int or tuple of int, default (1, 1)
      Recurrent convolution dilate.
  i2h_weight_initializer : str or Initializer
      Initializer for the input weights matrix, used for the input convolutions.
  h2h_weight_initializer : str or Initializer
      Initializer for the recurrent weights matrix, used for the input convolutions.
  i2h_bias_initializer : str or Initializer, default zeros
      Initializer for the input convolution bias vectors.
  h2h_bias_initializer : str or Initializer, default zeros
      Initializer for the recurrent convolution bias vectors.
  conv_layout : str, default 'NCHW'
      Layout for all convolution inputs, outputs and weights. Options are 'NCHW' and 'NHWC'.
  activation : str or gluon.Block, default 'tanh'
      Type of activation function used in c^\prime_t.
      If argument type is string, it's equivalent to nn.Activation(act_type=str). See
      :func:`~mxnet.ndarray.Activation` for available choices.
      Alternatively, other activation blocks such as nn.LeakyReLU can be used.
class_docstr_tok: ["2D","Convolutional","LSTM","network","cell",".","`","``","Convolutional","LSTM","Network",":","A","Machine","Learning","Approach","for","Precipitation","Nowcasting","''","<","https",":","\/\/arxiv.org\/abs\/1506.04214",">","`","_","paper",".","Xingjian","et","al",".","NIPS2015","..","math",":",":","\\begin","{","array","}","{","ll","}","i_t","=","\\sigma","(","W_i","\\ast","x_t","+","R_i","\\ast","h_","{","t-1","}","+","b_i",")","\\\\","f_t","=","\\sigma","(","W_f","\\ast","x_t","+","R_f","\\ast","h_","{","t-1","}","+","b_f",")","\\\\","o_t","=","\\sigma","(","W_o","\\ast","x_t","+","R_o","\\ast","h_","{","t-1","}","+","b_o",")","\\\\","c^\\prime_t","=","tanh","(","W_c","\\ast","x_t","+","R_c","\\ast","h_","{","t-1","}","+","b_c",")","\\\\","c_t","=","f_t","\\circ","c_","{","t-1","}","+","i_t","\\circ","c^\\prime_t","\\\\","h_t","=","o_t","\\circ","tanh","(","c_t",")","\\\\","\\end","{","array","}","Parameters","--","--","--","--","--","input_shape",":","tuple","of","int","Input","tensor","shape","at","each","time","step","for","each","sample",",","excluding","dimension","of","the","batch","size","and","sequence","length",".","Must","be","consistent","with","`","conv_layout","`",".","For","example",",","for","layout","'NCHW","'","the","shape","should","be","(","C",",","H",",","W",")",".","hidden_channels",":","int","Number","of","output","channels",".","i2h_kernel",":","int","or","tuple","of","int","Input","convolution","kernel","sizes",".","h2h_kernel",":","int","or","tuple","of","int","Recurrent","convolution","kernel","sizes",".","Only","odd-numbered","sizes","are","supported",".","i2h_pad",":","int","or","tuple","of","int",",","default","(","0",",","0",")","Pad","for","input","convolution",".","i2h_dilate",":","int","or","tuple","of","int",",","default","(","1",",","1",")","Input","convolution","dilate",".","h2h_dilate",":","int","or","tuple","of","int",",","default","(","1",",","1",")","Recurrent","convolution","dilate",".","i2h_weight_initializer",":","str","or","Initializer","Initializer","for","the","input","weights","matrix",",","used","for","the","input","convolutions",".","h2h_weight_initializer",":","str","or","Initializer","Initializer","for","the","recurrent","weights","matrix",",","used","for","the","input","convolutions",".","i2h_bias_initializer",":","str","or","Initializer",",","default","zeros","Initializer","for","the","input","convolution","bias","vectors",".","h2h_bias_initializer",":","str","or","Initializer",",","default","zeros","Initializer","for","the","recurrent","convolution","bias","vectors",".","conv_layout",":","str",",","default","'NCHW'","Layout","for","all","convolution","inputs",",","outputs","and","weights",".","Options","are","'NCHW","'","and","'NHWC","'",".","activation",":","str","or","gluon.Block",",","default","'tanh'","Type","of","activation","function","used","in","c^\\prime_t",".","If","argument","type","is","string",",","it","'s","equivalent","to","nn.Activation","(","act_type=str",")",".","See",":","func",":","`","~mxnet.ndarray.Activation","`","for","available","choices",".","Alternatively",",","other","activation","blocks","such","as","nn.LeakyReLU","can","be","used","."]
code: def __init__(
      self,
      input_shape,
      hidden_channels,
      i2h_kernel,
      h2h_kernel,
      i2h_pad=(0, 0),
      i2h_dilate=(1, 1),
      h2h_dilate=(1, 1),
      i2h_weight_initializer=None,
      h2h_weight_initializer=None,
      i2h_bias_initializer="zeros",
      h2h_bias_initializer="zeros",
      conv_layout="NCHW",
      activation="tanh",
  ):
      super(Conv2DLSTMCell, self).__init__(
          input_shape=input_shape,
          hidden_channels=hidden_channels,
          i2h_kernel=i2h_kernel,
          h2h_kernel=h2h_kernel,
          i2h_pad=i2h_pad,
          i2h_dilate=i2h_dilate,
          h2h_dilate=h2h_dilate,
          i2h_weight_initializer=i2h_weight_initializer,
          h2h_weight_initializer=h2h_weight_initializer,
          i2h_bias_initializer=i2h_bias_initializer,
          h2h_bias_initializer=h2h_bias_initializer,
          dims=2,
          conv_layout=conv_layout,
          activation=activation,
      )
  
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 1 to create a new Conv2DLSTMCell object from inherited base classes: _ConvLSTMCell with example: obj = Conv2DLSTMCell(input_shape, hidden_channels, i2h_kernel, h2h_kernel, i2h_pad, i2h_dilate, h2h_dilate, i2h_weight_initializer, h2h_weight_initializer, i2h_bias_initializer, h2h_bias_initializer, conv_layout, activation)