class_docstr: Glue together encoder transform, entropy model and decoder transform
docstr: Setup overall model: encoder, entropy model and decoder
docstr_tok: ["Setup","overall","model",":","encoder",",","entropy","model","and","decoder"]
code: def __init__(
      self,
      analysis_transform: nn.Module,
      synthesis_transform: nn.Module,
      compression_channels: int,
      context_len: int = 2,
  ) -> None:
      """
      Setup overall model: encoder, entropy model and decoder
      """
      super().__init__()
      # Transforms
      self.analysis_transform = analysis_transform
      self.synthesis_transform = synthesis_transform
      self._pad_factor = 16
  
      assert (
          self.analysis_transform.compression_channels
          == compression_channels
      ), "Mismatched compression_channels"
      assert (
          self.synthesis_transform.compression_channels
          == compression_channels
      ), "Mismatched compression_channels"
  
      # Entropy model
      self.entropy_model = VCTEntropyModel(
          num_channels=compression_channels
      )
      self._temporal_pad_token_maker = PerChannelWeight(
          num_channels=compression_channels
      )
      self._dequantizer = Dequantizer(
          compression_channels, self.entropy_model.d_model
      )
      self._context_len = context_len
  
      self._code_to_strings = None
  
imports: import itertools
  import math
  from typing import Generator, List, NamedTuple, Optional, Sequence, Tuple, Union
  import torch
  import torch.nn
  import utils.memoize
  from datamodules.video_data_api import Scenes, VideoData
  from neural.entropy_model import PreviousLatent, VCTEntropyModel
  from torch import Tensor
label_desc: Use image node_id 1 to create a new VCTPipeline object from inherited base classes: nn with example: obj = VCTPipeline(analysis_transform, synthesis_transform, compression_channels, context_len)