code: def test_set_input_feature(set_config: Dict) -> None:
      # setup image input feature definition
      set_def = deepcopy(set_config)
  
      # pickup any other missing parameters
      defaults = SetInputFeatureConfig(name="foo").to_dict()
      set_def = merge_dict(defaults, set_def)
  
      # ensure no exceptions raised during build
      set_config, _ = load_config_with_kwargs(
          SetInputFeatureConfig, set_def
      )
      input_feature_obj = SetInputFeature(set_config).to(DEVICE)
  
      # check one forward pass through input feature
      input_tensor = torch.randint(
          0,
          2,
          size=(BATCH_SIZE, len(set_def[ENCODER]["vocab"])),
          dtype=torch.int64,
      ).to(DEVICE)
  
      encoder_output = input_feature_obj(input_tensor)
      assert encoder_output[ENCODER_OUTPUT].shape == (
          BATCH_SIZE,
          *input_feature_obj.output_shape,
      )
  
file_path: ludwig/tests/ludwig/features/test_set_feature.py
imports: from copy import deepcopy
  from typing import Dict
  import pytest
  import torch
  from ludwig.constants import ENCODER, ENCODER_OUTPUT
  from ludwig.features.set_feature import SetInputFeature
  from ludwig.schema.features.set_feature import SetInputFeatureConfig
  from ludwig.schema.utils import load_config_with_kwargs
  from ludwig.utils.misc_utils import merge_dict
  from ludwig.utils.torch_utils import get_torch_device
label_desc: Use image node_id 2 for calling a global function with example usage: test_set_input_feature(set_config) without return types