code: def forward(self, image, text):
      image_features = self.encode_image(image)
      text_features = self.encode_text(text)
  
      # normalized features
      image_features = image_features / image_features.norm(
          dim=1, keepdim=True
      )
      text_features = text_features / text_features.norm(
          dim=1, keepdim=True
      )
  
      # cosine similarity as logits
      logit_scale = self.logit_scale.exp()
      logits_per_image = (
          logit_scale * image_features @ text_features.t()
      )
      logits_per_text = logits_per_image.t()
  
      # shape = [global_batch_size, global_batch_size]
      return logits_per_image, logits_per_text
  
imports: from collections import OrderedDict
  from typing import Tuple, Union
  import numpy
  import torch
  import torch.nn.functional
  from torch import nn
label_desc: Use image node_id 7 for calling the CLIP obj's underlying member method code with example usage: obj.forward(image, text) and returns: logits_per_image,  logits_per_text