class_docstr: Self attention for Perceiver https://arxiv.org/pdf/2103.03206.pdf.
  Args:
      num_channels (`int`):
          Number of channels.
      num_heads (`int`):
          Number of parallel attention heads.
      dropout (`nn.Module`):
          Dropout probability.
class_docstr_tok: ["Self","attention","for","Perceiver","https",":","\/\/arxiv.org\/pdf\/2103.03206.pdf",".","Args",":","num_channels","(","`","int","`",")",":","Number","of","channels",".","num_heads","(","`","int","`",")",":","Number","of","parallel","attention","heads",".","dropout","(","`","nn.Module","`",")",":","Dropout","probability","."]
code: def __init__(self, num_channels: int, num_heads: int, dropout: float):
      super().__init__()
      self.norm = nn.LayerNorm(num_channels)
      self.attention = MultiHeadAttention(
          num_q_channels=num_channels,
          num_kv_channels=num_channels,
          num_heads=num_heads,
          dropout=dropout,
      )
  
imports: from torch import nn
  from towhee.models.perceiver.multi_head_attention import MultiHeadAttention
label_desc: Use image node_id 1 to create a new SelfAttention object from inherited base classes: nn with example: obj = SelfAttention(num_channels, num_heads, dropout)