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 _init_attention_layers(self):
      # temporal attention
      self.conv_ta = nn.Conv1d(self.out_c, 1, 9, padding=4)
      nn.init.constant_(self.conv_ta.weight, 0)
      nn.init.constant_(self.conv_ta.bias, 0)
  
      # s attention
      ker_jpt = (
          self.num_jpts - 1 if not self.num_jpts % 2 else self.num_jpts
      )
      pad = (ker_jpt - 1) // 2
      self.conv_sa = nn.Conv1d(self.out_c, 1, ker_jpt, padding=pad)
      nn.init.xavier_normal_(self.conv_sa.weight)
      nn.init.constant_(self.conv_sa.bias, 0)
  
      # channel attention
      rr = 2
      self.fc1c = nn.Linear(self.out_c, self.out_c // rr)
      self.fc2c = nn.Linear(self.out_c // rr, self.out_c)
      nn.init.kaiming_normal_(self.fc1c.weight)
      nn.init.constant_(self.fc1c.bias, 0)
      nn.init.constant_(self.fc2c.weight, 0)
      nn.init.constant_(self.fc2c.bias, 0)
  
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 6 for calling the UnitGCN obj's underlying member method code with example usage: obj._init_attention_layers() without return types