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
|
Vérification rapide de soundness |
|
Vérifier la soundness sur un sous-réseau |
Classes
|
Évaluateur utilisant ONNX Runtime pour les activations intermédiaires |
|
É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
- 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