class_docstr: Multimodal Clip-level vector pool.
class_docstr_tok: ["Multimodal","Clip-level","vector","pool","."]
code: def __call__(self, sample, **kwargs):
      pooled_video = sample["pooled_video"].cpu().unsqueeze(1).numpy()
      pooled_text = sample["pooled_text"].cpu().unsqueeze(1).numpy()
  
      self.hidden_states.append(
          np.concatenate([pooled_video, pooled_text], axis=1)
      )
  
      video_starts = sample["video_start"].cpu()
      video_ends = sample["video_end"].cpu()
      assert torch.all(torch.le(video_starts, video_ends))
  
      text_starts = sample["text_start"].cpu()
      text_ends = sample["text_end"].cpu()
      assert torch.all(torch.le(text_starts, text_ends))
      subsample_size = sample["pooled_video"].size(0) // len(
          sample["video_id"]
      )
      video_ids = [
          video_id
          for video_id in sample["video_id"]
          for _ in range(subsample_size)
      ]
      for video_id, video_start, video_end, text_start, text_end in zip(
          video_ids, video_starts, video_ends, text_starts, text_ends
      ):
          self.video_ids.append(
              (
                  video_id,
                  (int(video_start), int(video_end)),
                  (int(text_start), int(text_end)),
              )
          )
  
imports: import torch
  import os
  import numpy
  import pickle
  from .None import retri
  from ..utils import get_local_rank
label_desc: Use image node_id 2 for calling the MMClipVectorPool obj's underlying member method code with example usage: obj.__call__(sample) without return types