code: def test_image_preproc_module_list_of_tensors(
      resize_method, num_channels, num_channels_expected
  ):
      metadata = {
          "preprocessing": {
              "missing_value_strategy": BFILL,
              "in_memory": True,
              "resize_method": resize_method,
              "scaling": "pixel_normalization",
              "num_processes": 1,
              "infer_image_num_channels": True,
              "infer_image_dimensions": True,
              "infer_image_max_height": 256,
              "infer_image_max_width": 256,
              "infer_image_sample_size": 100,
              "height": 12,
              "width": 12,
              "num_channels": num_channels_expected,
          },
          "reshape": (num_channels_expected, 12, 12),
      }
      module = _ImagePreprocessing(metadata)
  
      res = module(
          [
              torch.rand(num_channels, 25, 25),
              torch.rand(num_channels, 10, 10),
          ]
      )
  
      assert res.shape == torch.Size((2, num_channels_expected, 12, 12))
  
file_path: ludwig/tests/ludwig/features/test_image_feature.py
imports: from copy import deepcopy
  from typing import Dict
  import pytest
  import torch
  from ludwig.constants import BFILL, CROP_OR_PAD, ENCODER, ENCODER_OUTPUT, INTERPOLATE, TYPE
  from ludwig.features.image_feature import _ImagePreprocessing, ImageInputFeature
  from ludwig.schema.features.image_feature import ImageInputFeatureConfig
  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 4 for calling a global function with example usage: test_image_preproc_module_list_of_tensors(resize_method, num_channels, num_channels_expected) without return types