boundlab.expr.LpEpsilon#
- class boundlab.expr.LpEpsilon[source]#
Bases:
ExprA noise symbol bounded by the \(\ell_p\)-norm constraint.
Represents a perturbation variable \(\boldsymbol{\epsilon}\) satisfying:
\[\|\boldsymbol{\epsilon}\|_p \leq 1\]During backward propagation with direction
"<="or">=", the contribution is \(\pm\|\mathbf{w}\|_q\) where \(\mathbf{w}\) is the materialized weight tensor and \(q\) is the dual norm of \(p\) defined by \(\frac{1}{p} + \frac{1}{q} = 1\).Only
EinsumOpweights are supported.Methods
Return a list of all sub-expressions in the DAG rooted at this expression, in topological order.
Compute the dual-norm bound contribution.
Compute the width of the bounds for this expression.
Compute the breakdown of the bound width by reason.
Compute the center of the bounds for this expression.
Return the concrete tensor if self is a pure constant expression, else None.
Return True if this expression is symmetric about zero, else False.
Compute a lower bound for this expression.
Compute the maximum width across all output dimensions.
Return a new expression with the same structure but sub-expressions replaced by replace_fn.
Recursively compute simplified ops for affine expressions.
Decompose this LpEpsilon into a constant part and a zero-constant expression.
Return string representation with child strings substituted.
Compute an upper bound for this expression.
Compute both an upper bound and a lower bound for this expression.
Compute the breakdown of the bound width by reason, aggregated to total contributions.
Return a new expression with the same type and flags but new children.
- property shape: torch.Size#
The shape of the output(s) produced by this expression.
- backward(weights, direction)[source]#
Compute the dual-norm bound contribution.
- Parameters:
- Returns:
(±norm, [])orNonefor"==".- Return type:
tuple[torch.Tensor, list] | None
- __add__(other)#
- __mul__(other)#
Element-wise multiplication (no broadcast).
- all_subnodes()#
Return a list of all sub-expressions in the DAG rooted at this expression, in topological order.
- bound_width()#
Compute the width of the bounds for this expression.
- bound_width_reasons_breakdown()#
Compute the breakdown of the bound width by reason.
- center()#
Compute the center of the bounds for this expression.
- diag(diagonal=0)#
- expand(*sizes)#
- expand_on(dim, size)#
- flatten(start_dim=0, end_dim=-1)#
- flip(dims)#
- gather(indices, dim=0)#
- get_const()#
Return the concrete tensor if self is a pure constant expression, else None.
Works for
ConstValand anyAffineSumthat has no symbolic children.
- is_symmetric_to_0()#
Return True if this expression is symmetric about zero, else False.
- lb()#
Compute a lower bound for this expression.
- max_bound_width()#
Compute the maximum width across all output dimensions.
- mean(dim=None, keepdim=False)#
- narrow(dim, start, length)#
- permute(*dims)#
- repeat(*sizes)#
- replace_subnode_once(replace_fn)#
Return a new expression with the same structure but sub-expressions replaced by replace_fn.
- reshape(*shape)#
- roll(shifts, dims)#
- scatter(indices, output_shape)#
- simplify_ops_()#
Recursively compute simplified ops for affine expressions.
- split_const()[source]#
Decompose this LpEpsilon into a constant part and a zero-constant expression.
- squeeze(dim=None)#
- sum(dim=None, keepdim=False)#
- tile(*sizes)#
- transpose(dim0, dim1)#
- ub()#
Compute an upper bound for this expression.
- ublb()#
Compute both an upper bound and a lower bound for this expression.
- uncertainty_reasons()#
Compute the breakdown of the bound width by reason, aggregated to total contributions.
- unflatten(dim, sizes)#
- unsqueeze(dim)#
- zeros_set(output_shape)#