class_docstr: Graph Convolutional Block applied to nodes in the Two-Stream Adaptive Graph Convolutional
  Network as originally implemented in the `Github Repo <https://github.com/lshiwjx/2s-AGCN>`.
  For implementational details see https://arxiv.org/abs/1805.07694.
  Temporal attention, spatial attention and channel-wise attention will be applied.
  Args:
      in_channels (int): Number of input features.
      out_channels (int): Number of output features.
      A (Tensor array): Adaptive Graph.
      coff_embedding (int, optional): Coefficient Embeddings. (default: :int:`4`)
      num_subset (int, optional): Subsets for adaptive graphs, see
      :math:`\mathbf{A}, \mathbf{B}, \mathbf{C}` in https://arxiv.org/abs/1805.07694
      for details. (default: :int:`3`)
      adaptive (bool, optional): Apply Adaptive Graph Convolutions. (default: :obj:`True`)
      attention (bool, optional): Apply Attention. (default: :obj:`True`)
class_docstr_tok: ["Graph","Convolutional","Block","applied","to","nodes","in","the","Two-Stream","Adaptive","Graph","Convolutional","Network","as","originally","implemented","in","the","`","Github","Repo","<","https",":","\/\/github.com\/lshiwjx\/2s-AGCN",">","`",".","For","implementational","details","see","https",":","\/\/arxiv.org\/abs\/1805.07694",".","Temporal","attention",",","spatial","attention","and","channel-wise","attention","will","be","applied",".","Args",":","in_channels","(","int",")",":","Number","of","input","features",".","out_channels","(","int",")",":","Number","of","output","features",".","A","(","Tensor","array",")",":","Adaptive","Graph",".","coff_embedding","(","int",",","optional",")",":","Coefficient","Embeddings",".","(","default",":",":","int",":","`","4","`",")","num_subset","(","int",",","optional",")",":","Subsets","for","adaptive","graphs",",","see",":","math",":","`","\\mathbf","{","A","}",",","\\mathbf","{","B","}",",","\\mathbf","{","C","}","`","in","https",":","\/\/arxiv.org\/abs\/1805.07694","for","details",".","(","default",":",":","int",":","`","3","`",")","adaptive","(","bool",",","optional",")",":","Apply","Adaptive","Graph","Convolutions",".","(","default",":",":","obj",":","`","True","`",")","attention","(","bool",",","optional",")",":","Apply","Attention",".","(","default",":",":","obj",":","`","True","`",")"]
code: def _adaptive_forward(self, x, y):
      N, C, T, V = x.size()
  
      A = self.PA
      for i in range(self.num_subset):
          A1 = (
              self.conv_a[i](x)
              .permute(0, 3, 1, 2)
              .contiguous()
              .view(N, V, self.inter_c * T)
          )
          A2 = self.conv_b[i](x).view(N, self.inter_c * T, V)
          A1 = self.tan(torch.matmul(A1, A2) / A1.size(-1))  # N V V
          A1 = A[i] + A1 * self.alpha
          A2 = x.view(N, C * T, V)
          z = self.conv_d[i](torch.matmul(A2, A1).view(N, C, T, V))
          y = z + y if y is not None else z
  
      return y
  
imports: import math
  import torch
  import numpy
  import torch.nn
  from torch.autograd import Variable
  from torch_geometric.utils.to_dense_adj import to_dense_adj
  import torch.nn.functional
label_desc: Use image node_id 9 for calling the UnitGCN obj's underlying member method code with example usage: obj._adaptive_forward(x, y) and returns: y