code: def test_non_default_shapes(
      self, input_param, input_shape, expected_shape
  ):
      device = "cuda" if torch.cuda.is_available() else "cpu"
  
      with skip_if_downloading_fails():
          net = EfficientNetBN(**input_param).to(device)
  
      # override input shape with different variations
      num_dims = len(input_shape) - 2
      non_default_sizes = [128, 256, 512]
      for candidate_size in non_default_sizes:
          input_shape = input_shape[0:2] + (candidate_size,) * num_dims
          # run inference with random tensor
          with eval_mode(net):
              result = net(torch.randn(input_shape).to(device))
  
          # check output shape
          self.assertEqual(result.shape, expected_shape)
  
imports: from __future__ import annotations
  import os
  import unittest
  from typing import TYPE_CHECKING
  from unittest import skipUnless
  import torch
  from parameterized import parameterized
  from monai.networks import eval_mode
  from monai.networks.nets import BlockArgs, EfficientNetBN, EfficientNetBNFeatures, drop_connect, get_efficientnet_image_size
  from monai.utils import optional_import
  from tests.utils import skip_if_downloading_fails, skip_if_quick, test_pretrained_networks, test_script_save
label_desc: Use image node_id 2 for calling the TestEFFICIENTNET obj's underlying member method code with example usage: obj.test_non_default_shapes(input_param, input_shape, expected_shape) without return types