code: def forward(self, g):
      if g.num_nodes() == 0:
          return torch.zeros(1, self.graph_hidden_size)
      else:
          # Node features are stored as hv in ndata.
          hvs = g.ndata["hv"]
          return (self.node_gating(hvs) * self.node_to_graph(hvs)).sum(
              0, keepdim=True
          )
  
imports: from functools import partial
  import dgl
  import torch
  import torch.nn
  import torch.nn.functional
  from torch.distributions import Bernoulli, Categorical
label_desc: Use image node_id 2 for calling the GraphEmbed obj's underlying member method code with example usage: obj.forward(g) and returns: torch, unknown