示例#1
0
 def test_relu_deepliftshap_with_custom_attr_func(self) -> None:
     model = ReLULinearModel()
     (
         inputs,
         baselines,
     ) = _create_inps_and_base_for_deepliftshap_neuron_layer_testing()
     neuron_dl = NeuronDeepLiftShap(model, model.l3)
     expected = (torch.zeros(3, 3), torch.zeros(3, 3))
     self._relu_custom_attr_func_assert(neuron_dl, inputs, baselines,
                                        expected)
示例#2
0
    def test_relu_neuron_deeplift_shap(self):
        model = ReLULinearDeepLiftModel()
        (
            inputs,
            baselines,
        ) = _create_inps_and_base_for_deepliftshap_neuron_layer_testing()

        neuron_dl = NeuronDeepLiftShap(model, model.relu)
        attributions = neuron_dl.attribute(
            inputs, 0, baselines, attribute_to_neuron_input=True
        )
        assertTensorAlmostEqual(self, attributions[0], [[-30.0, 1.0, -0.0]])
        assertTensorAlmostEqual(self, attributions[1], [[0.0, 0.0, 0.0]])

        attributions = neuron_dl.attribute(
            inputs, 0, baselines, attribute_to_neuron_input=False
        )
        assertTensorAlmostEqual(self, attributions[0], [[0.0, 0.0, 0.0]])
        assertTensorAlmostEqual(self, attributions[1], [[0.0, 0.0, 0.0]])
示例#3
0
    def test_linear_neuron_deeplift_shap(self) -> None:
        model = ReLULinearModel()
        (
            inputs,
            baselines,
        ) = _create_inps_and_base_for_deepliftshap_neuron_layer_testing()

        neuron_dl = NeuronDeepLiftShap(model, model.l3)
        attributions = neuron_dl.attribute(inputs,
                                           0,
                                           baselines,
                                           attribute_to_neuron_input=True)
        assertTensorAlmostEqual(self, attributions[0], [[-0.0, 0.0, -0.0]])
        assertTensorAlmostEqual(self, attributions[1], [[0.0, 0.0, 0.0]])

        attributions = neuron_dl.attribute(inputs,
                                           0,
                                           baselines,
                                           attribute_to_neuron_input=False)

        self.assertTrue(neuron_dl.multiplies_by_inputs)
        assertTensorAlmostEqual(self, attributions[0], [[-0.0, 0.0, -0.0]])
        assertTensorAlmostEqual(self, attributions[1], [[6.0, 9.0, 0.0]])