class_docstr: Collection of EmbeddingTowers.
  
  Args:
      towers (List[EmbeddingTower]): list of embedding towers that make up the
          collection.
      device (Optional[torch.device]): default compute device.
  
  Example::
  
      ebc, ebc_interaction = EmbeddingBagCollection(), MyEBCInteractionModule()
      eb, eb_interaction = EmbeddingCollection(), MyECInteractionModule()
      tower_0 = EmbeddingTower(ebc, ebc_interaction, device)
      tower_1 = EmbeddingTower(eb, eb_interaction, device)
      tower_collection = EmbeddingTowerCollection([tower_0, tower_1])
      kjt = KeyedJaggedTensor()
      output = tower_collection(kjt)
code: def __init__(
      self,
      towers: List[EmbeddingTower],
      device: Optional[torch.device] = None,
  ) -> None:
      super().__init__()
      self.towers = nn.ModuleList(towers)
      self._input_params: List[Tuple[bool, bool]] = []
      for tower in towers:
          self._input_params.append(tower_input_params(tower.embedding))
  
file_path: torchrec/torchrec/modules/embedding_tower.py
imports: from typing import List, Optional, Tuple
  import torch
  import torch.nn
  from torchrec.modules.embedding_modules import EmbeddingBagCollection, EmbeddingCollection
  from torchrec.sparse.jagged_tensor import KeyedJaggedTensor
label_desc: Use image node_id 1 to create a new EmbeddingTowerCollection object from inherited base classes: nn with example: obj = EmbeddingTowerCollection(towers, device)