code: def _process_prompt_tuning_input(self, inputs, batch):
      input_ids = inputs["input_ids"]
      batch_size = input_ids.size(0)
      inputs_embeds = self.model.get_input_embeddings()(
          input_ids
      )  # b, l, e
  
      task_key = self.task_key.weight.repeat(
          batch_size, 1, 1
      )  # b, tn+1, e
      task_query = self.q_proj(task_key[:, -1:])  # b, 1, e
      key = self.k_proj(task_key[:, :-1])  # b, tn, e
      value = (
          self.v_proj(self.task_embedding)
          .reshape(self.task_num, -1)
          .repeat(batch_size, 1, 1)
      )  # b, tn, pl*e
      input_query = self.sentence_embedding(
          batch["source_text"]
      ).unsqueeze(
          1
      )  # b, 1, e
      prompt_embeds = self.lam * self.MHA(task_query, key, value) + (
          1 - self.lam
      ) * self.MHA(input_query, key, value)
  
      inputs_embeds = torch.cat([prompt_embeds, inputs_embeds], dim=1)
      inputs["inputs_embeds"] = inputs_embeds
      del inputs["input_ids"]
      mask = torch.ones(
          batch_size, self.prompt_length, dtype=torch.long
      ).to(self.device)
      inputs["attention_mask"] = torch.cat(
          [mask, inputs["attention_mask"]], dim=1
      )
      return inputs
  
file_path: TextBox/textbox/model/ptg.py
imports: import torch
  import torch.nn
  import torch.nn.functional
  from .pretrained_models import Pretrained_Models
  from transformers import AutoTokenizer, AutoModel
label_desc: Use image node_id 4 for calling the PTG obj's underlying member method code with example usage: obj._process_prompt_tuning_input(inputs, batch) and returns: inputs