code: def __init__(
      self,
      in_dim,
      hidden_dim,
      out_dim,
      dropout=0.0,
      name="gat",
      residual=True,
      use_mlp=False,
      join_with_mlp=False,
  ):
      super(GNNModelDGL, self).__init__()
      self.name = name
      self.use_mlp = use_mlp
      self.join_with_mlp = join_with_mlp
      self.normalize_input_columns = True
      if name == "gat":
          self.l1 = GATConvDGL(
              in_dim,
              hidden_dim // 8,
              8,
              feat_drop=dropout,
              attn_drop=dropout,
              residual=False,
              activation=F.elu,
          )
          self.l2 = GATConvDGL(
              hidden_dim,
              out_dim,
              1,
              feat_drop=dropout,
              attn_drop=dropout,
              residual=residual,
              activation=None,
          )
      elif name == "gcn":
          self.l1 = GraphConv(in_dim, hidden_dim, activation=F.elu)
          self.l2 = GraphConv(hidden_dim, out_dim, activation=F.elu)
          self.drop = Dropout(p=dropout)
      elif name == "cheb":
          self.l1 = ChebConvDGL(in_dim, hidden_dim, k=3)
          self.l2 = ChebConvDGL(hidden_dim, out_dim, k=3)
          self.drop = Dropout(p=dropout)
      elif name == "agnn":
          self.lin1 = Sequential(
              Dropout(p=dropout), Linear(in_dim, hidden_dim), ELU()
          )
          self.l1 = AGNNConvDGL(learn_beta=False)
          self.l2 = AGNNConvDGL(learn_beta=True)
          self.lin2 = Sequential(
              Dropout(p=dropout), Linear(hidden_dim, out_dim), ELU()
          )
      elif name == "appnp":
          self.lin1 = Sequential(
              Dropout(p=dropout),
              Linear(in_dim, hidden_dim),
              ReLU(),
              Dropout(p=dropout),
              Linear(hidden_dim, out_dim),
          )
          self.l1 = APPNPConv(k=10, alpha=0.1, edge_drop=0.0)
  
file_path: dgl/examples/pytorch/bgnn/run.py
imports: import json
  import os
  import numpy
  import pandas
  import torch
  import torch.nn.functional
  from BGNN import BGNNPredictor
  from category_encoders import CatBoostEncoder
  from dgl.data.utils import load_graphs
  from dgl.nn.pytorch import AGNNConv, APPNPConv, ChebConv, GATConv, GraphConv
  from sklearn import preprocessing
  from torch.nn import Dropout, ELU, Linear, ReLU, Sequential
label_desc: Use image node_id 1 to create a new GNNModelDGL object from inherited base classes: torch.nn with example: obj = GNNModelDGL(in_dim, hidden_dim, out_dim, dropout, name, residual, use_mlp, join_with_mlp)