class_docstr: Dual encoder model for text and video.
  
  Attributes:
    clip_vision_config: The config to create the video tower from.
    clip_text_config: The config to create the text tower from.
    temporal_agg: How to agregate embeddings of the different frames.
class_docstr_tok: ["Dual","encoder","model","for","text","and","video",".","Attributes",":","clip_vision_config",":","The","config","to","create","the","video","tower","from",".","clip_text_config",":","The","config","to","create","the","text","tower","from",".","temporal_agg",":","How","to","agregate","embeddings","of","the","different","frames","."]
code: def __call__(
      self,
      x_rgb,
      text_tokens,
      *,
      train: bool = True,
      debug: bool = False,
  ):
      # Video encoding.
      video_encoder = VideoEncoder(
          self.clip_vision_config,
          self.temporal_agg,
          name="video_encoder",
      )
      video_emb = None
      if x_rgb is not None:
          video_emb = video_encoder(
              x_rgb=x_rgb, train=train, debug=debug
          )
          video_emb /= (
              jnp.linalg.norm(video_emb, axis=-1, keepdims=True) + 1e-8
          )
  
      # Text encoding.
      text_encoder = TextEncoder(
          self.clip_text_config, name="text_encoder"
      )
      text_emb = None
      if text_tokens is not None:
          text_emb = text_encoder(text_tokens, train=train, debug=debug)
          text_emb /= (
              jnp.linalg.norm(text_emb, axis=-1, keepdims=True) + 1e-8
          )
      return video_emb, text_emb
  
imports: from typing import Any, Optional
  import flax.linen
  import jax
  import jax.numpy
  import ml_collections
  from scenic.model_lib.base_models import base_model
  from scenic.projects.baselines.clip import layers
  from scenic.projects.baselines.clip import model
  from scenic.projects.verbs_in_action import losses
  from scenic.projects.verbs_in_action import utils
label_desc: Use image node_id 1 for calling the VideoAndTextModule obj's underlying member method code with example usage: obj.__call__(x_rgb, text_tokens) and returns: video_emb,  text_emb