code: def test_norm_xform(
      self, input_shape, align_corners, expected, zero_centered=False
  ):
      norm = normalize_transform(
          input_shape,
          device=torch.device("cpu:0"),
          dtype=torch.float32,
          align_corners=align_corners,
          zero_centered=zero_centered,
      )
      norm = norm.detach().cpu().numpy()
      np.testing.assert_allclose(norm, expected, atol=1e-6)
      if torch.cuda.is_available():
          norm = normalize_transform(
              input_shape,
              device=torch.device("cuda:0"),
              dtype=torch.float32,
              align_corners=align_corners,
              zero_centered=zero_centered,
          )
          norm = norm.detach().cpu().numpy()
          np.testing.assert_allclose(norm, expected, atol=1e-4)
  
imports: from __future__ import annotations
  import unittest
  import numpy
  import torch
  from parameterized import parameterized
  from monai.networks import normalize_transform, to_norm_affine
  from monai.networks.layers import AffineTransform
  from tests.utils import is_tf32_env
label_desc: Use image node_id 1 for calling the TestNormTransform obj's underlying member method code with example usage: obj.test_norm_xform(input_shape, align_corners, expected, zero_centered) without return types