class_docstr: Glue together encoder transform, entropy model and decoder transform
code: def decode_scenes(
      self,
      bottlenecks: Generator[Bottleneck, None, None],
      cache: memoize.Cache,
  ) -> Generator[Tensor, None, None]:
      decode_Iscene = memoize.bind(self.decode_Iscene, cache)
      decode_Pscene = memoize.bind(self.decode_Pscene, cache)
  
      state = None
      for index, bottleneck in enumerate(bottlenecks):
          if index == 0:
              scene_reconstruction, state = decode_Iscene(bottleneck)
          else:
              assert state is not None
              scene_reconstruction, state = decode_Pscene(
                  bottleneck, state=state, cache=cache
              )
          yield scene_reconstruction
  
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 7 for calling the VCTPipeline obj's underlying member method code with example usage: obj.decode_scenes(bottlenecks, cache) without return types