class_docstr: This layer applies a single-head attention as described in `DeLighT <https://arxiv.org/abs/2008.00623>`_ paper
  
  Args:
      embed_dim (int): :math:`C_{in}` from an expected input of size :math:`(N, P, C_{in})`
      attn_dropout (Optional[float]): Attention dropout. Default: 0.0
      bias (Optional[bool]): Use bias or not. Default: ``True``
  
  Shape:
      - Input: :math:`(N, P, C_{in})` where :math:`N` is batch size, :math:`P` is number of patches,
      and :math:`C_{in}` is input embedding dim
      - Output: same shape as the input
code: def __repr__(self) -> str:
      return "{}(embed_dim={}, attn_dropout={})".format(
          self.__class__.__name__, self.embed_dim, self.attn_dropout.p
      )
  
file_path: ml-cvnets/cvnets/layers/single_head_attention.py
imports: from typing import Optional
  import torch
  from torch import Tensor, nn
  from torch.nn import functional
  from cvnets.layers.base_layer import BaseLayer
  from cvnets.layers.dropout import Dropout
  from cvnets.layers.linear_layer import LinearLayer
label_desc: Use image node_id 2 for calling the SingleHeadAttention obj's underlying member method code with example usage: obj.__repr__() and returns: str