code: def forward(self, inputs: Dict[str, torch.Tensor]):
      encoder_outputs = {}
      for input_feature_name, input_values in inputs.items():
          encoder = self.input_features.get(input_feature_name)
          encoder_output = encoder(input_values)
          encoder_outputs[input_feature_name] = encoder_output[
              ENCODER_OUTPUT
          ]
      return encoder_outputs
  
imports: from typing import Callable, Dict, List
  import numpy
  import pandas
  import torch
  from ludwig.api_annotations import DeveloperAPI
  from ludwig.constants import ENCODER_OUTPUT, MODEL_ECD, NAME, PROC_COLUMN, TYPE
  from ludwig.features.feature_registries import get_input_type_registry
  from ludwig.features.feature_utils import LudwigFeatureDict
  from ludwig.models.base import BaseModel
  from ludwig.schema.features.base import BaseInputFeatureConfig, FeatureCollection
  from ludwig.schema.features.utils import get_input_feature_cls
  from ludwig.types import FeatureConfigDict, TrainingSetMetadataDict
  from ludwig.utils.batch_size_tuner import BatchSizeEvaluator
  from ludwig.utils.dataframe_utils import from_numpy_dataset
  from ludwig.utils.misc_utils import get_from_registry
  from ludwig.utils.torch_utils import get_torch_device, LudwigModule
label_desc: Use image node_id 2 for calling the Embedder obj's underlying member method code with example usage: obj.forward(inputs) and returns: encoder_outputs