class_docstr: (IA)^3 incorporated in a Linear Layer. Weights of Linear layer are set to be frozen per default.
  
  Parameters
  ----------
  in_features
      input dimension, set to the original linear layer input dimension LoRA is replacing.
  out_features
      output dimension, set to the original linear layer output dimension LoRA is replacing.
  scaling_rank
      Merging weights during inference to reduce latency.
  
  References
  ----------
  1. Liu, Haokun and Tam, Derek and Muqeeth, Mohammed and Mohta, Jay and Huang, Tenghao and Bansal, Mohit and Raffel, Colin,
  "Few-Shot Parameter-Efficient Fine-Tuning is Better and Cheaper than In-Context Learning", 2022
  https://arxiv.org/pdf/2205.05638.pdf
  2. Code: https://github.com/r-three/t-few
code: def __init__(
      self,
      in_features: int,
      out_features: int,
      merge_weights: False,
      **kwargs,
  ):
      nn.Linear.__init__(self, in_features, out_features, **kwargs)
      LoRALayer.__init__(
          self,
          r=4,
          lora_alpha=4,
          lora_dropout=0.0,
          merge_weights=merge_weights,
      )  # Default arguments, only
      # In essence the $b$ parameter of LoRA.
      self.lora_b = nn.Parameter(torch.ones(out_features, 1))
      self.weight.requires_grad = False
  
imports: import math
  from typing import List
  import torch
  import torch.nn
  import torch.nn.functional
label_desc: Use image node_id 1 to create a new IA3Linear object from inherited base classes: nn, LoRALayer with example: obj = IA3Linear(in_features, out_features, merge_weights)