code: def forward(self, features):
      image_embeds = []
      text_embeds = []
  
      if "pixel_values" in features:
          vision_outputs = self.model.vision_model(
              pixel_values=features["pixel_values"]
          )
          image_embeds = self.model.visual_projection(vision_outputs[1])
  
      if "input_ids" in features:
          text_outputs = self.model.text_model(
              input_ids=features.get("input_ids"),
              attention_mask=features.get("attention_mask", None),
              position_ids=features.get("position_ids", None),
              output_attentions=features.get("output_attentions", None),
              output_hidden_states=features.get(
                  "output_hidden_states", None
              ),
          )
          text_embeds = self.model.text_projection(text_outputs[1])
  
      sentence_embedding = []
      image_features = iter(image_embeds)
      text_features = iter(text_embeds)
  
      for idx, input_type in enumerate(features["image_text_info"]):
          if input_type == 0:
              sentence_embedding.append(next(image_features))
          else:
              sentence_embedding.append(next(text_features))
  
      features["sentence_embedding"] = torch.stack(
          sentence_embedding
      ).float()
  
      return features
  
file_path: sentence-transformers/sentence_transformers/models/CLIPModel.py
imports: from torch import nn
  import transformers
  import torch
  from PIL import Image
label_desc: Use image node_id 3 for calling the CLIPModel obj's underlying member method code with example usage: obj.forward(features) and returns: features