class_docstr: Lunar Causal attention.
  See "Linformer: Self-Attention with Linear Complexity" for more details.
code: def _compute_pattention(self, pq, context, key_padding_mask):
      # N x B x D
      len, bsz, dim = context.size()
      # N x B x D
      k = self.pc_proj(context)
      # N x B*H x K -> B*H x N x K
      k = k.view(len, bsz * self.num_heads, self.head_dim).transpose(
          0, 1
      )
  
      # B x H x L x K -> B*H x L x K -> B*H x K x L
      pq = pq.view(bsz * self.num_heads, -1, self.head_dim).transpose(
          1, 2
      )
      # B*H x N x L
      pattn = k.bmm(pq)
      pattn = F.elu(pattn) + 1.0
      return pattn
  
imports: import math
  from typing import Dict, Optional, Tuple, Union
  import torch
  import torch.nn.functional
  from fairseq import utils
  from fairseq.incremental_decoding_utils import with_incremental_state
  from fairseq.modules.fairseq_dropout import FairseqDropout
  from torch import nn, Tensor
label_desc: Use image node_id 5 for calling the LunarCausalAttention obj's underlying member method code with example usage: obj._compute_pattention(pq, context, key_padding_mask) and returns: pattn