abstractnn.relaxer

Relaxation des fonctions d’activation non-linéaires Nota : les relaxations proposées dans ce projets sont grossières (nouvelle approximation affines des bornes inf et sup du domaine. Avantage, la propagation dans le réseau se fait à iso périmètre de symboles Inconvénient : bornes du domaine plus larges qu’une méthode par intérpolation (par exemple Chebydchev)

Classes

NonLinearRelaxer()

Gère les relaxations convexes des activations non-linéaires Cette relaxation est grossière car elle fait perdre la relation afine avec l'entrée mais reste très simple

class abstractnn.relaxer.NonLinearRelaxer[source]

Gère les relaxations convexes des activations non-linéaires Cette relaxation est grossière car elle fait perdre la relation afine avec l’entrée mais reste très simple

static relu_relaxation(expr: AffineExpression, relaxation_type: str = 'linear') AffineExpression[source]

Relaxation de ReLU: z = max(0, y)

Si y ∈ [l, u]: - Si u ≤ 0 → z = 0 - Si l ≥ 0 → z = y - Sinon → relaxation linéaire: z ≤ (u/(u-l)) * (y - l)

static sigmoid_relaxation(expr: AffineExpression) AffineExpression[source]

Relaxation de Sigmoid (approximation linéaire)

static tanh_relaxation(expr: AffineExpression) AffineExpression[source]

Relaxation de Tanh (approximation linéaire)