code: def test_deepfm_numerical_forward(self) -> None:
      torch.manual_seed(0)
  
      batch_size = 3
      output_dim = 2
      # the input embedding are in torch.Tensor of [batch_size, num_embeddings, embedding_dim]
      input_embeddings = [
          torch.randn(batch_size, 2, 64),
          torch.randn(batch_size, 2, 32),
          torch.randn(batch_size, 3, 100),
          torch.randn(batch_size, 5, 120),
      ]
      in_features = 2 * 64 + 2 * 32 + 3 * 100 + 5 * 120
      dense_module = torch.nn.Sequential(
          torch.nn.Linear(in_features, 128),
          torch.nn.ReLU(),
          torch.nn.Linear(128, 32),
          torch.nn.ReLU(),
          torch.nn.Linear(32, output_dim),
          torch.nn.ReLU(),
      )
      deepfm = DeepFM(dense_module=dense_module)
  
      output = deepfm(input_embeddings)
  
      expected_output = torch.Tensor(
          [
              [0.0896, 0.1182],
              [0.0675, 0.0972],
              [0.0764, 0.0199],
          ],
      )
      self.assertTrue(
          torch.allclose(
              output,
              expected_output,
              rtol=1e-4,
              atol=1e-4,
          )
      )
  
file_path: torchrec/torchrec/modules/tests/test_deepfm.py
imports: import unittest
  import torch
  from torchrec.fx import Tracer
  from torchrec.modules.deepfm import DeepFM, FactorizationMachine
label_desc: Use image node_id 3 for calling the TestDeepFM obj's underlying member method code with example usage: obj.test_deepfm_numerical_forward() without return types