class_docstr: An implementation of the dynatic mix-hop propagation layer.
  For details see this paper: `"Connecting the Dots: Multivariate Time Series Forecasting with Graph Neural Networks."
  <https://arxiv.org/pdf/2005.11650.pdf>`_
  
  Args:
      c_in (int): Number of input channels.
      c_out (int): Number of output channels.
      gdep (int): Depth of graph convolution.
      dropout (float): Dropout rate.
      alpha (float): Ratio of retaining the root nodes's original states, a value between 0 and 1.
class_docstr_tok: ["An","implementation","of","the","dynatic","mix-hop","propagation","layer",".","For","details","see","this","paper",":","`","``","Connecting","the","Dots",":","Multivariate","Time","Series","Forecasting","with","Graph","Neural","Networks",".","''","<","https",":","\/\/arxiv.org\/pdf\/2005.11650.pdf",">","`","_","Args",":","c_in","(","int",")",":","Number","of","input","channels",".","c_out","(","int",")",":","Number","of","output","channels",".","gdep","(","int",")",":","Depth","of","graph","convolution",".","dropout","(","float",")",":","Dropout","rate",".","alpha","(","float",")",":","Ratio","of","retaining","the","root","nodes","'s","original","states",",","a","value","between","0","and","1","."]
docstr: Making a forward pass of mix-hop propagation.
  
  Arg types:
      * **X** (Pytorch Float Tensor) - Input feature Tensor, with shape (batch_size, c_in, num_nodes, seq_len).
      * **A** (PyTorch Float Tensor) - Adjacency matrix, with shape (num_nodes, num_nodes).
  
  Return types:
      * **H_0** (PyTorch Float Tensor) - Hidden representation for all nodes, with shape (batch_size, c_out, num_nodes, seq_len).
code: def forward(
      self, X: torch.FloatTensor, A: torch.FloatTensor
  ) -> torch.FloatTensor:
      """
      Making a forward pass of mix-hop propagation.
  
      Arg types:
          * **X** (Pytorch Float Tensor) - Input feature Tensor, with shape (batch_size, c_in, num_nodes, seq_len).
          * **A** (PyTorch Float Tensor) - Adjacency matrix, with shape (num_nodes, num_nodes).
  
      Return types:
          * **H_0** (PyTorch Float Tensor) - Hidden representation for all nodes, with shape (batch_size, c_out, num_nodes, seq_len).
      """
      A = A + torch.eye(A.size(0)).to(X.device)
      d = A.sum(1)
      H = X
      H_0 = X
      A = A / d.view(-1, 1)
      for _ in range(self._gdep):
          H = self._alpha * X + (1 - self._alpha) * torch.einsum(
              "ncwl,vw->ncvl", (H, A)
          )
          H_0 = torch.cat((H_0, H), dim=1)
      H_0 = self._mlp(H_0)
      return H_0
  
imports: from __future__ import division
  import numbers
  from typing import Optional
  import torch
  import torch.nn
  from torch.nn import init
  import torch.nn.functional
label_desc: Use image node_id 3 for calling the MixProp obj's underlying member method code with example usage: obj.forward(X, A) and returns: H_0