code: def test_matching2(self, device):
      desc1 = torch.tensor(
          [[0, 0.0], [1, 1], [2, 2], [3, 3.0], [5, 5.0]], device=device
      )
      desc2 = torch.tensor(
          [[5, 5.0], [3, 3.0], [2.3, 2.4], [1, 1], [0, 0.0]],
          device=device,
      )
  
      dists, idxs = match_smnn(desc1, desc2, 0.1)
      expected_dists = torch.tensor([0.0, 0, 0, 0], device=device).view(
          -1, 1
      )
      expected_idx = torch.tensor(
          [[0, 4], [1, 3], [3, 1], [4, 0]], device=device
      )
      assert_close(dists, expected_dists)
      assert_close(idxs, expected_idx)
      matcher = DescriptorMatcher("smnn", 0.1).to(device)
      dists1, idxs1 = matcher(desc1, desc2)
      assert_close(dists1, expected_dists)
      assert_close(idxs1, expected_idx)
  
imports: import pytest
  import torch
  from torch.autograd import gradcheck
  import kornia.testing
  from kornia.feature.integrated import LightGlueMatcher
  from kornia.feature.laf import laf_from_center_scale_ori
  from kornia.feature.matching import DescriptorMatcher, GeometryAwareDescriptorMatcher, match_adalam, match_fginn, match_mnn, match_nn, match_smnn, match_snn
  from kornia.testing import assert_close
label_desc: Use image node_id 4 for calling the TestMatchSMNN obj's underlying member method code with example usage: obj.test_matching2(device) without return types