Exemple #1
0
 def test_simple_relu_internal_inf(self) -> None:
     net = BasicModel_MultiLayer()
     inp = torch.tensor([[3.0, 4.0, 0.0]], requires_grad=True)
     self._internal_influence_test_assert(net, net.relu, inp, [[1.0, 1.0, 1.0, 1.0]])
Exemple #2
0
 def test_single_lime_scalar_tensor_1d(self) -> None:
     net = BasicModel_MultiLayer()
     self._single_input_scalar_lime_assert(
         lambda inp: torch.sum(net(inp)).reshape(1))
 def test_simple_input_gradient_activation(self) -> None:
     net = BasicModel_MultiLayer()
     inp = torch.tensor([[0.0, 100.0, 0.0]], requires_grad=True)
     self._layer_activation_test_assert(net, net.linear0, inp,
                                        [0.0, 400.0, 0.0])
 def test_simple_output_activation(self) -> None:
     net = BasicModel_MultiLayer()
     inp = torch.tensor([[0.0, 100.0, 0.0]])
     self._layer_activation_test_assert(net, net.linear2, inp,
                                        [392.0, 394.0])
Exemple #5
0
 def test_sensitivity_n_ig(self) -> None:
     model = BasicModel_MultiLayer()
     ig = IntegratedGradients(model)
     self.basic_multilayer_sensitivity_n(ig, model)
Exemple #6
0
 def test_simple_ig_input_relu_selector_fn(self) -> None:
     net = BasicModel_MultiLayer()
     inp = torch.tensor([[0.0, 5.0, 4.0]])
     self._ig_input_test_assert(net, net.relu, inp,
                                lambda x: torch.sum(x[:, 2:]),
                                [[0.0, 10.0, 8.0]])
 def test_simple_linear_activation_inplace(self) -> None:
     net = BasicModel_MultiLayer(inplace=True)
     inp = torch.tensor([[2.0, -5.0, 4.0]])
     self._layer_activation_test_assert(net, net.linear1, inp,
                                        [-9.0, 2.0, 2.0, 2.0])
 def test_simple_output_conductance(self) -> None:
     net = BasicModel_MultiLayer()
     inp = torch.tensor([[0.0, 100.0, 0.0]], requires_grad=True)
     self._conductance_test_assert(net, net.linear2, inp, [[390.0, 0.0]])
Exemple #9
0
 def test_simple_input_non_conv(self) -> None:
     net = BasicModel_MultiLayer()
     inp = torch.tensor([[0.0, 100.0, 0.0]], requires_grad=True)
     self._grad_cam_test_assert(net, net.linear0, inp, [[400.0]])
Exemple #10
0
 def test_multi_sample_shapley_batch_scalar_tensor_int(self) -> None:
     net = BasicModel_MultiLayer()
     self._single_input_multi_sample_batch_scalar_shapley_assert(
         lambda inp: int(torch.sum(net(inp)).item()))
 def test_simple_relu_conductance(self) -> None:
     net = BasicModel_MultiLayer()
     inp = torch.tensor([[0.0, 100.0, 0.0]])
     self._conductance_test_assert(net, net.relu, inp,
                                   [[90.0, 100.0, 100.0, 100.0]])
Exemple #12
0
 def test_single_shapley_int_batch_scalar_tensor_1d(self) -> None:
     net = BasicModel_MultiLayer()
     self._single_int_input_multi_sample_batch_scalar_shapley_assert(
         lambda inp: torch.sum(net(inp.float())).reshape(1))
Exemple #13
0
 def test_simple_target_missing_error(self) -> None:
     net = BasicModel_MultiLayer()
     inp = torch.zeros((1, 3))
     with self.assertRaises(AssertionError):
         attr = IntegratedGradients(net)
         attr.attribute(inp)
Exemple #14
0
 def test_simple_output_internal_inf(self) -> None:
     net = BasicModel_MultiLayer()
     inp = torch.tensor([[0.0, 100.0, 0.0]])
     self._internal_influence_test_assert(net, net.linear2, inp, [[1.0, 0.0]])
Exemple #15
0
 def test_simple_ig_input_relu(self) -> None:
     net = BasicModel_MultiLayer()
     inp = torch.tensor([[0.0, 6.0, 14.0]], requires_grad=True)
     self._ig_input_test_assert(net, net.relu, inp, (0, ),
                                [[0.0, 3.0, 7.0]])
Exemple #16
0
 def test_simple_multi_input_non_conv(self) -> None:
     net = BasicModel_MultiLayer(multi_input_module=True)
     inp = torch.tensor([[0.0, 6.0, 0.0]], requires_grad=True)
     self._grad_cam_test_assert(net, net.multi_relu, inp,
                                ([[21.0]], [[21.0]]))
Exemple #17
0
 def test_simple_ig_input_relu2(self) -> None:
     net = BasicModel_MultiLayer()
     inp = torch.tensor([[0.0, 5.0, 4.0]])
     self._ig_input_test_assert(net, net.relu, inp, 1, [[0.0, 5.0, 4.0]])
Exemple #18
0
 def test_multi_sample_ablation_batch_scalar_tensor_1d(self) -> None:
     net = BasicModel_MultiLayer()
     ablation_algo = FeatureAblation(
         lambda inp: torch.sum(net(inp)).reshape(1))
     self._single_input_multi_sample_batch_scalar_ablation_assert(
         ablation_algo)
Exemple #19
0
 def test_simple_ig_input_relu2_agg_neurons(self) -> None:
     net = BasicModel_MultiLayer()
     inp = torch.tensor([[0.0, 5.0, 4.0]])
     self._ig_input_test_assert(net, net.relu, inp, (slice(0, 2, 1), ),
                                [[0.0, 5.0, 4.0]])
Exemple #20
0
 def test_multi_sample_ablation_batch_scalar_tensor_int(self) -> None:
     net = BasicModel_MultiLayer()
     ablation_algo = FeatureAblation(
         lambda inp: int(torch.sum(net(inp)).item()))
     self._single_input_multi_sample_batch_scalar_ablation_assert(
         ablation_algo, dtype=torch.int64)
 def test_simple_relu_activation(self) -> None:
     net = BasicModel_MultiLayer()
     inp = torch.tensor([[3.0, 4.0, 0.0]], requires_grad=True)
     self._layer_activation_test_assert(net, net.relu, inp,
                                        [0.0, 8.0, 8.0, 8.0])
Exemple #22
0
 def test_simple_ablation(self) -> None:
     ablation_algo = FeatureAblation(BasicModel_MultiLayer())
     inp = torch.tensor([[20.0, 50.0, 30.0]], requires_grad=True)
     self._ablation_test_assert(ablation_algo,
                                inp, [[80.0, 200.0, 120.0]],
                                perturbations_per_eval=(1, 2, 3))
 def test_simple_multi_output_activation(self) -> None:
     net = BasicModel_MultiLayer(multi_input_module=True)
     inp = torch.tensor([[0.0, 6.0, 0.0]])
     self._layer_activation_test_assert(
         net, net.multi_relu, inp,
         ([0.0, 7.0, 7.0, 7.0], [0.0, 7.0, 7.0, 7.0]))
Exemple #24
0
 def test_single_kernel_shap_scalar_tensor_0d(self) -> None:
     net = BasicModel_MultiLayer()
     self._single_input_scalar_kernel_shap_assert(
         lambda inp: torch.sum(net(inp)))
Exemple #25
0
 def test_sensitivity_n_fa(self) -> None:
     model = BasicModel_MultiLayer()
     fa = FeatureAblation(model)
     self.basic_multilayer_sensitivity_n(fa, model)
Exemple #26
0
 def test_simple_ig_input_linear2(self) -> None:
     net = BasicModel_MultiLayer()
     inp = torch.tensor([[0.0, 100.0, 0.0]])
     self._ig_input_test_assert(net, net.linear2, inp, 0,
                                [[0.0, 390.0, 0.0]])
Exemple #27
0
 def test_single_lime_scalar_int(self) -> None:
     net = BasicModel_MultiLayer()
     self._single_input_scalar_lime_assert(
         lambda inp: int(torch.sum(net(inp)).item()))
Exemple #28
0
 def test_simple_ig_input_linear1(self) -> None:
     net = BasicModel_MultiLayer()
     inp = torch.tensor([[0.0, 100.0, 0.0]], requires_grad=True)
     self._ig_input_test_assert(net, net.linear1, inp, (0, ),
                                [[0.0, 100.0, 0.0]])
 def test_simple_linear_gradient_activation(self) -> None:
     net = BasicModel_MultiLayer()
     inp = torch.tensor([[0.0, 100.0, 0.0]])
     self._layer_activation_test_assert(net, net.linear1, inp,
                                        [90.0, 101.0, 101.0, 101.0])
Exemple #30
0
 def test_simple_linear_internal_inf_inplace(self) -> None:
     net = BasicModel_MultiLayer(inplace=True)
     inp = torch.tensor([[0.0, 100.0, 0.0]])
     self._internal_influence_test_assert(
         net, net.linear1, inp, [[0.9, 1.0, 1.0, 1.0]]
     )