class_docstr: Lightweight multi-scale linear attention.
class_docstr_tok: ["Lightweight","multi-scale","linear","attention","."]
code: def forward(self, x: torch.Tensor) -> torch.Tensor:
      # generate multi-scale q, k, v
      qkv = self.qkv(x)
      multi_scale_qkv = [qkv]
      for op in self.aggreg:
          multi_scale_qkv.append(op(qkv))
      multi_scale_qkv = torch.cat(multi_scale_qkv, dim=1)
  
      out = self.relu_linear_att(multi_scale_qkv)
      out = self.proj(out)
  
      return out
  
imports: from __future__ import annotations
  import torch
  import torch.nn.functional
  from torch import nn
  from torch.cuda.amp import autocast
  from kornia.contrib.models.efficient_vit.nn.act import build_act
  from kornia.contrib.models.efficient_vit.nn.norm import build_norm
  from kornia.contrib.models.efficient_vit.utils import get_same_padding, val2tuple
label_desc: Use image node_id 3 for calling the LiteMLA obj's underlying member method code with example usage: obj.forward(x) and returns: out