code: def test_smoke_with_val(self, device, dtype):
      sample = torch.zeros(1, 1, 3, 3, device=device, dtype=dtype)
      m = kornia.geometry.subpix.ConvSoftArgmax2d(
          (3, 3), output_value=True
      )
      coords, val = m(sample)
      assert coords.shape == (1, 1, 2, 3, 3)
      assert val.shape == (1, 1, 3, 3)
  
imports: import torch
  from torch.autograd import gradcheck
  from torch.nn.functional import mse_loss
  import kornia
  import kornia.testing
  from kornia.geometry.subpix.spatial_soft_argmax import _get_center_kernel2d, _get_center_kernel3d
  from kornia.testing import assert_close
label_desc: Use image node_id 3 for calling the TestConvSoftArgmax2d obj's underlying member method code with example usage: obj.test_smoke_with_val(device, dtype) without return types