code: def test_basic_multilayer_compare_w_inp_features(self) -> None:
      model = BasicModel_MultiLayer()
      model.eval()
  
      inputs = torch.tensor([[10.0, 20.0, 10.0]])
      baselines = torch.randn(30, 3)
  
      gs = GradientShap(model)
      expected, delta = gs.attribute(
          inputs, baselines, target=0, return_convergence_delta=True
      )
      self.setUp()
      self._assert_attributions(
          model,
          model.linear0,
          inputs,
          baselines,
          0,
          expected,
          expected_delta=delta,
          attribute_to_layer_input=True,
      )
  
imports: from typing import Any, Callable, List, Tuple, Union
  import torch
  from captum._utils.typing import TargetType, TensorOrTupleOfTensorsGeneric
  from captum.attr._core.gradient_shap import GradientShap
  from captum.attr._core.layer.layer_gradient_shap import LayerGradientShap
  from tests.attr.test_gradient_shap import _assert_attribution_delta
  from tests.helpers.basic import assertTensorAlmostEqual, assertTensorTuplesAlmostEqual, BaseTest
  from tests.helpers.basic_models import BasicModel_MultiLayer, BasicModel_MultiLayer_MultiInput
  from tests.helpers.classification_models import SoftmaxModel
  from torch import Tensor
  from torch.nn import Module
label_desc: Use image node_id 5 for calling the Test obj's underlying member method code with example usage: obj.test_basic_multilayer_compare_w_inp_features() without return types