boundlab.Bias#
- final class boundlab.Bias[source]#
Bases:
ExprA deterministic additive component:
lb == ub == arr.Every linear primitive is exact on it (a linear map of a point is a point), which is why constants never widen anything.
Methods
Bound on the magnitude: \(\max(|lb|, ub) \ge \sup |x|\).
Same-class addition;
__add__dispatches here when classes match and otherwise groups the addends in anExprGroup.Center/halfwidth form:
c = (ub + lb) / 2,w = (ub - lb) / 2.The set of component classes present in this value.
Hook: build an instance of
clsrepresenting exactlyexpr, orNonewhen this class cannot.Hook: convert
selfintoexpr_type, orNonewhen this class does not know how.Apply the linear map described by an integer-label einsum.
Lift a tensor/scalar into a broadcast
Bias; passExprthrough.Sound elementwise lower bound on every concrete value represented.
(lb, ub)in one call; components override it when computing both at once is cheaper than two passes.Split into
(matching, rest)so thatmatching + rest == self.Convert to another component class, exactly.
Collapse to the box hull
Bias(c) + Noise(w).Diagnostics as a
TensorFormat.Sound elementwise upper bound on every concrete value represented.
- classmethod convert_from(expr)[source]#
Hook: build an instance of
clsrepresenting exactlyexpr, orNonewhen this class cannot. One half ofto().
- property shape_dtype: ShapeDtype#
Allocation-free
(shape, dtype)metadata of the value.
- lbub()[source]#
(lb, ub)in one call; components override it when computing both at once is cheaper than two passes.
- einsum(subscripts, *operands)[source]#
Apply the linear map described by an integer-label einsum.
subscriptsholds one label tuple per input followed by the output labels (seeboundlab.utils.einsum_parser()). This is the single linear primitive:__mul__,__matmul__,sumandmeanall lower to it, so implementing it soundly makes every derived linear operation sound.
- add(other)[source]#
Same-class addition;
__add__dispatches here when classes match and otherwise groups the addends in anExprGroup.
- torch_print(group='reason')[source]#
Diagnostics as a
TensorFormat.The result is safe to hand to
Torch diagnostic outputunder tracing: only plain arrays cross the callback boundary, never expression metadata (which may hold tracers, e.g. reason weights).
- __add__(other)#
- __init__(arr)#
- __mul__(other)#
- absub()#
Bound on the magnitude: \(\max(|lb|, ub) \ge \sup |x|\).
- classset()#
The set of component classes present in this value.
A single component reports
{type(self)}, anExprGroupits member classes, andZerosthe empty set. Handlers use this to decide which part of a value they know how to transform.
- convert_to(expr_type)#
Hook: convert
selfintoexpr_type, orNonewhen this class does not know how. The other half ofto().
- static from_exprlike(expr, shape)#
Lift a tensor/scalar into a broadcast
Bias; passExprthrough.
- matmul(other)#
- mean(axis, keepdims=False)#
- numel()#
- rmatmul(other)#
- split(ty)#
Split into
(matching, rest)so thatmatching + rest == self.The main way handlers peel off the component class they transform while passing the remainder through untouched.
- squeeze(axes=None)#
- sum(axis, keepdims=False)#
- to(expr_type)#
Convert to another component class, exactly.
Identity short-circuits; otherwise the target’s
convert_fromis tried, then this class’sconvert_to. RaisesTypeErrorwhen neither side knows the conversion — conversions never approximate.
- to_intervals(name='')#
Collapse to the box hull
Bias(c) + Noise(w).Sound but lossy: every correlation between error symbols is dropped, so downstream cancellation (
x - x = 0) no longer happens.
- unsqueeze(axes)#