docstr: Args:
      x: current node feature matrix with shape (batch, N, 9)
      adj: current adjacency feature matrix with shape (batch, 4, N, N)
  Returns:
      graph embedding for updating node features with shape (batch, d)
docstr_tok: ["Args",":","x",":","current","node","feature","matrix","with","shape","(","batch",",","N",",","9",")","adj",":","current","adjacency","feature","matrix","with","shape","(","batch",",","4",",","N",",","N",")","Returns",":","graph","embedding","for","updating","node","features","with","shape","(","batch",",","d",")"]
code: def _get_embs_node(self, x, adj):
      """
      Args:
          x: current node feature matrix with shape (batch, N, 9)
          adj: current adjacency feature matrix with shape (batch, 4, N, N)
      Returns:
          graph embedding for updating node features with shape (batch, d)
      """
      adj = adj[:, :3]  # (batch, 3, N, N)
  
      node_emb = self.rgcn(x, adj)  # (batch, N, d)
      if hasattr(self, "batchNorm"):
          node_emb = self.batchNorm(node_emb.transpose(1, 2)).transpose(
              1, 2
          )  # (batch, N, d)
  
      graph_emb = torch.sum(
          node_emb, dim=1, keepdim=False
      ).contiguous()  # (batch, d)
      return graph_emb
  
file_path: DIG/dig/ggraph/method/GraphDF/model/disgraphaf.py
imports: import torch
  from torch import nn
  from .st_net import ST_Dis
  from .df_utils import one_hot_add, one_hot_minus
  from .rgcn import RGCN
label_desc: Use image node_id 6 for calling the DisGraphAF obj's underlying member method code with example usage: obj._get_embs_node(x, adj) and returns: graph_emb