class_docstr: Self-attention module with q,k from the same input tensor.
  The input tensor is the concatenation of `n_groups` of slightly different feature maps.
  Thus the projections are 1x1 group convolutions.
  *NOTE*: d_qk, d_hidden, n_head must be divisible by n_groups
class_docstr_tok: ["Self-attention","module","with","q",",","k","from","the","same","input","tensor",".","The","input","tensor","is","the","concatenation","of","`","n_groups","`","of","slightly","different","feature","maps",".","Thus","the","projections","are","1x1","group","convolutions",".","*","NOTE","*",":","d_qk",",","d_hidden",",","n_head","must","be","divisible","by","n_groups"]
code: def _reset_parameters(self):
      del self._qk_proj_weight
      self._qk_proj_weight = nn.Parameter(
          Tensor(2 * self.d_hidden, self.d_qk // self.n_groups, 1)
      )
      super(GroupSelfAttention, self)._reset_parameters()
  
imports: from typing import Tuple, Optional
  import math
  import torch
  from torch import Tensor, BoolTensor
  from torch import nn
  from torch.nn import init
  from torch.nn.functional import linear, conv1d
  from .base import Attention
  from .posemb import SinusoidalPositionalEmbedding
label_desc: Use image node_id 2 for calling the GroupSelfAttention obj's underlying member method code with example usage: obj._reset_parameters() without return types