class_docstr: _BatchedFusedEmbeddingLookups is a thin wrapper we have around SplitTableBatchedEmbeddingBagsCodegen.
  This is not meant to be directly used. Instead use FusedEmbeddingBagCollection/FusedEmbeddingCollection (which in turn utilizes this).
  
  Example
  -------
  >>> See usage in FusedEmbeddingBagCollection and FusedEmbeddingCollection
docstr: Args:
      values (torch.Tensor): Tensor containing bags of indicies into the embedding matrix.
      offsets (torch.Tensor): Starting index position of each sequence
      weights (Optional[torch.Tensor]): weights to use to calculate weighted pooling
  Returns:
      Tensor output of `(B , table_1_embedding_dim + table_2_embedding_dim + ...)`
docstr_tok: ["Args",":","values","(","torch.Tensor",")",":","Tensor","containing","bags","of","indicies","into","the","embedding","matrix",".","offsets","(","torch.Tensor",")",":","Starting","index","position","of","each","sequence","weights","(","Optional","[","torch.Tensor","]",")",":","weights","to","use","to","calculate","weighted","pooling","Returns",":","Tensor","output","of","`","(","B",",","table_1_embedding_dim","+","table_2_embedding_dim","+","...",")","`"]
code: def forward(
      self,
      values: torch.Tensor,
      offsets: torch.Tensor,
      weights: Optional[torch.Tensor],
  ) -> torch.Tensor:
      """
      Args:
          values (torch.Tensor): Tensor containing bags of indicies into the embedding matrix.
          offsets (torch.Tensor): Starting index position of each sequence
          weights (Optional[torch.Tensor]): weights to use to calculate weighted pooling
      Returns:
          Tensor output of `(B , table_1_embedding_dim + table_2_embedding_dim + ...)`
      """
  
      return self._emb_module(
          indices=values,
          offsets=offsets,
          per_sample_weights=weights,
      )
  
imports: import copy
  import itertools
  from collections import defaultdict
  from typing import Any, cast, Dict, Iterator, List, Optional, Set, Tuple, Type
  import torch
  import torch.nn
  import torchrec.optim
  from fbgemm_gpu.split_embedding_configs import EmbOptimType
  from fbgemm_gpu.split_table_batched_embeddings_ops_training import ComputeDevice, EmbeddingLocation, SplitTableBatchedEmbeddingBagsCodegen
  from torchrec.modules.embedding_configs import BaseEmbeddingConfig, DataType, EmbeddingBagConfig, EmbeddingConfig, pooling_type_to_pooling_mode, PoolingType
  from torchrec.modules.embedding_modules import EmbeddingBagCollection, EmbeddingBagCollectionInterface, EmbeddingCollection, EmbeddingCollectionInterface, get_embedding_names_by_table
  from torchrec.optim.fused import FusedOptimizer, FusedOptimizerModule
  from torchrec.optim.keyed import CombinedOptimizer, KeyedOptimizer
  from torchrec.sparse.jagged_tensor import JaggedTensor, KeyedJaggedTensor, KeyedTensor
label_desc: Use image node_id 2 for calling the _BatchedFusedEmbeddingLookups obj's underlying member method code with example usage: obj.forward(values, offsets, weights) and returns: self