class_docstr: Graph convolution module used in the GCMC model.
  
  Parameters
  ----------
  in_feats : int
      Input feature size.
  out_feats : int
      Output feature size.
  weight : bool, optional
      If True, apply a linear layer. Otherwise, aggregating the messages
      without a weight matrix or with an shared weight provided by caller.
  device: str, optional
      Which device to put data in. Useful in mix_cpu_gpu training and
      multi-gpu training
class_docstr_tok: ["Graph","convolution","module","used","in","the","GCMC","model",".","Parameters","--","--","--","--","--","in_feats",":","int","Input","feature","size",".","out_feats",":","int","Output","feature","size",".","weight",":","bool",",","optional","If","True",",","apply","a","linear","layer",".","Otherwise",",","aggregating","the","messages","without","a","weight","matrix","or","with","an","shared","weight","provided","by","caller",".","device",":","str",",","optional","Which","device","to","put","data","in",".","Useful","in","mix_cpu_gpu","training","and","multi-gpu","training"]
code: def __init__(
      self,
      in_feats,
      out_feats,
      weight=True,
      device=None,
      dropout_rate=0.0,
  ):
      super(GCMCGraphConv, self).__init__()
      self._in_feats = in_feats
      self._out_feats = out_feats
      self.device = device
      self.dropout = nn.Dropout(dropout_rate)
  
      if weight:
          self.weight = nn.Parameter(th.Tensor(in_feats, out_feats))
      else:
          self.register_parameter("weight", None)
      self.reset_parameters()
  
imports: import dgl.function
  import dgl.nn.pytorch
  import torch
  import torch.nn
  from torch.nn import init
  from utils import get_activation, to_etype_name
label_desc: Use image node_id 1 to create a new GCMCGraphConv object from inherited base classes: nn with example: obj = GCMCGraphConv(in_feats, out_feats, weight, device, dropout_rate)