code: def get_compressed_projection(
      self,
      k_input: torch.Tensor,
      v_input: torch.Tensor,
      target_length: int,
  ) -> Tuple[torch.Tensor, torch.Tensor]:
      assert self.compress_k.in_features >= target_length
      pad = (0, self.compress_k.in_features - target_length)
      k_input = F.pad(k_input, pad)
      v_input = F.pad(v_input, pad)
      k_input = self.compress_k(k_input).permute(2, 0, 1).contiguous()
      v_input = self.compress_k(v_input).permute(2, 0, 1).contiguous()
      return k_input, v_input
  
file_path: pytext/pytext/models/representations/transformer/multihead_linear_attention.py
imports: from typing import List, Tuple
  import numpy
  import torch
  from pytext.utils.usage import log_class_usage
  from torch import nn
  from torch.nn import functional
label_desc: Use image node_id 2 for calling the QuantizedMultiheadLinearAttention obj's underlying member method code with example usage: obj.get_compressed_projection(k_input, v_input, target_length) and returns: k_input,  v_input