abstractnn.partial_evaluator

Évaluateur partiel pour sous-réseaux

Module pour évaluer formellement un sous-ensemble de couches d’un réseau. Utile pour tester la soundness sur de grands modèles comme VGG16.

Functions

quick_soundness_check(model_path, test_image)

Vérification rapide de soundness

verify_partial_soundness(model_path, image, ...)

Vérifier la soundness sur un sous-réseau

Classes

ONNXPartialEvaluator(model_path)

Évaluateur utilisant ONNX Runtime pour les activations intermédiaires

PartialNetworkEvaluator([engine])

Évaluateur pour sous-réseaux - utilise BoundPropagator en interne

class abstractnn.partial_evaluator.PartialNetworkEvaluator(engine: AffineExpressionEngine = None)[source]

Évaluateur pour sous-réseaux - utilise BoundPropagator en interne

__init__(engine: AffineExpressionEngine = None)[source]

Initialiser l’évaluateur partiel

Parameters:

engine – Moteur d’expressions affines (optionnel, créé si absent)

create_input_expressions(image: ndarray, noise_level: float) List[AffineExpression][source]

Créer les expressions d’entrée avec bruit

Parameters:
  • image – Image d’entrée (C, H, W) ou (B, C, H, W)

  • noise_level – Niveau de bruit epsilon

Returns:

Liste d’expressions affines

propagate_through_layers(expressions: List[AffineExpression], layers: List[Dict[str, Any]], input_shape: Tuple[int, ...]) Tuple[List[AffineExpression], List[Tuple[float, float]]][source]

Propager les expressions à travers un sous-ensemble de couches

Utilise BoundPropagator.propagate() en interne.

Parameters:
  • expressions – Expressions d’entrée

  • layers – Liste des couches à propager

  • input_shape – Forme de l’entrée (B, C, H, W) ou (C, H, W)

Returns:

Tuple (expressions_sortie, bornes_intermédiaires)

class abstractnn.partial_evaluator.ONNXPartialEvaluator(model_path: str)[source]

Évaluateur utilisant ONNX Runtime pour les activations intermédiaires

__init__(model_path: str)[source]

Initialiser l’évaluateur ONNX

Parameters:

model_path – Chemin vers le modèle ONNX

monte_carlo_sampling_at_layer(image: ndarray, noise_level: float, num_layers: int, num_samples: int = 100) Tuple[ndarray, ndarray][source]

Échantillonnage Monte Carlo à une couche spécifique

Utilise ONNX Runtime pour l’inférence complète, puis compare avec les résultats formels.

Parameters:
  • image – Image d’entrée (C, H, W) ou (B, C, H, W)

  • noise_level – Niveau de bruit

  • num_layers – Nombre de couches à traverser (ignoré pour full network)

  • num_samples – Nombre d’échantillons

Returns:

Tuple (bornes_min, bornes_max) des sorties du réseau

monte_carlo_sampling(image, noise_level, num_samples=100)[source]

Version originale - garde pour compatibilité

abstractnn.partial_evaluator.verify_partial_soundness(model_path: str, image: ndarray, noise_level: float, num_layers: int = 5, num_mc_samples: int = 100) Dict[str, Any][source]

Vérifier la soundness sur un sous-réseau

Parameters:
  • model_path – Chemin vers le modèle ONNX

  • image – Image d’entrée (C, H, W) ou (B, C, H, W)

  • noise_level – Niveau de bruit

  • num_layers – Nombre de couches à tester

  • num_mc_samples – Nombre d’échantillons Monte Carlo

Returns:

Dictionnaire avec les résultats de vérification

abstractnn.partial_evaluator.quick_soundness_check(model_path: str, test_image: ndarray, epsilon: float = 0.01, num_layers: int = 5, verbose: bool = True) bool[source]

Vérification rapide de soundness

Parameters:
  • model_path – Chemin vers le modèle ONNX

  • test_image – Image de test (C, H, W)

  • epsilon – Niveau de bruit

  • num_layers – Nombre de couches à tester

  • verbose – Afficher les détails

Returns:

True si sound, False sinon