class_docstr: An implementation of the Diffusion Convolution Layer.
  For details see: `"Diffusion Convolutional Recurrent Neural Network:
  Data-Driven Traffic Forecasting" <https://arxiv.org/abs/1707.01926>`_
  
  Args:
      in_channels (int): Number of input features.
      out_channels (int): Number of output features.
      K (int): Filter size :math:`K`.
      bias (bool, optional): If set to :obj:`False`, the layer
          will not learn an additive bias (default :obj:`True`).
code: def __init__(self, in_channels, out_channels, K, bias=True):
      super(DConv, self).__init__(aggr="add", flow="source_to_target")
      assert K > 0
      self.in_channels = in_channels
      self.out_channels = out_channels
      self.weight = torch.nn.Parameter(
          torch.Tensor(2, K, in_channels, out_channels)
      )
  
      if bias:
          self.bias = torch.nn.Parameter(torch.Tensor(out_channels))
      else:
          self.register_parameter("bias", None)
  
      self.__reset_parameters()
  
imports: import math
  import torch
  from torch_geometric.utils import to_dense_adj, dense_to_sparse
  from torch_geometric.nn.conv import MessagePassing
label_desc: Use image node_id 1 to create a new DConv object from inherited base classes: MessagePassing with example: obj = DConv(in_channels, out_channels, K, bias)