code: def test_basic(self) -> None:
      D = 3
      B = 10
      keys = ["f1", "f2"]
      F = len(keys)
      DCN = LowRankCrossNet(
          in_features=F * D + D, num_layers=1, low_rank=D
      )
      inter_arch = InteractionDCNArch(
          num_sparse_features=F,
          crossnet=DCN,
      )
  
      dense_features = torch.rand((B, D))
  
      sparse_features = torch.rand((B, F, D))
      concat_dense = inter_arch(dense_features, sparse_features)
      #  B X (F*D + D)
      self.assertEqual(concat_dense.size(), (B, F * D + D))
  
imports: import unittest
  import torch
  from torch import nn
  from torch.testing import FileCheck
  from torchrec.datasets.utils import Batch
  from torchrec.fx import symbolic_trace
  from torchrec.models.dlrm import choose, DenseArch, DLRM, DLRM_DCN, DLRM_Projection, DLRMTrain, InteractionArch, InteractionDCNArch, InteractionProjectionArch, SparseArch
  from torchrec.modules.crossnet import LowRankCrossNet
  from torchrec.modules.embedding_configs import EmbeddingBagConfig
  from torchrec.modules.embedding_modules import EmbeddingBagCollection
  from torchrec.sparse.jagged_tensor import KeyedJaggedTensor
label_desc: Use image node_id 1 for calling the InteractionDCNArchTest obj's underlying member method code with example usage: obj.test_basic() without return types