pub struct OuterGradientFdRhoBlock {Show 16 fields
pub analytic_gradient: Array1<f64>,
pub finite_difference_gradient: Array1<f64>,
pub steps: Array1<f64>,
pub fd_uncertainty: Array1<f64>,
pub fd_orders: Vec<usize>,
pub analytic_audit_total: Array1<f64>,
pub analytic_fixed_beta: Array1<f64>,
pub analytic_logdet_h: Array1<f64>,
pub analytic_frozen_logdet_h: Array1<f64>,
pub analytic_mode_response_logdet_h: Array1<f64>,
pub analytic_logdet_s: Array1<f64>,
pub analytic_kkt: Array1<f64>,
pub finite_difference_fixed_beta: Array1<f64>,
pub finite_difference_logdet_h: Array1<f64>,
pub finite_difference_logdet_s: Array1<f64>,
pub finite_difference_kkt: Array1<f64>,
}Expand description
Analytic-vs-finite-difference evidence for the ρ (log-smoothing) block at the same seed, in ρ-local order (#2765).
The ψ block above and this one are graded by the SAME Ridders ladder against
the SAME criterion, which is the point: the two blocks share the criterion’s
moving-Hessian machinery (the trace kernel K and the mode-response drift
D_β H[v]) but have structurally different frozen drifts — λ_k S_k, a
known exact matrix, for ρ, and the family’s own ∂_ψ H|_β for ψ. So a
defect that shows in BOTH blocks lives in the shared machinery and a defect
that shows in only one lives in that block’s own drift. Without this the
bisection could not be made, and a ψ-only audit could only report that
something in the chain was wrong.
The analytic parts come from the ρ-block audit channel
(RhoGradientParts), which the capture arms for itself; the
finite-difference parts come from the same criterion-component stencils the
ψ block uses.
Fields§
§analytic_gradient: Array1<f64>§finite_difference_gradient: Array1<f64>§steps: Array1<f64>§fd_uncertainty: Array1<f64>§fd_orders: Vec<usize>§analytic_audit_total: Array1<f64>The analytic entry as the ρ-block audit reports it, before the prior
gradient and the canonical-face KKT projection the assembly applies
afterwards. Equal to analytic_gradient on every model that carries
neither; recorded separately so a gap between them is visible rather
than charged to the derivative.
analytic_fixed_beta: Array1<f64>§analytic_logdet_h: Array1<f64>§analytic_frozen_logdet_h: Array1<f64>analytic_logdet_h split at the drift: the half that does not read the
coefficient mode response, ½ tr(K · λ_k S_k), and the half that does,
½ tr(K · D_β H[v_k]). The first is PSD-by-construction, so a negative
entry is a defect that needs no oracle at all.
analytic_mode_response_logdet_h: Array1<f64>§analytic_logdet_s: Array1<f64>§analytic_kkt: Array1<f64>audit_total − (fixed_beta + logdet_h + logdet_s): the IFT/KKT fold.
finite_difference_fixed_beta: Array1<f64>§finite_difference_logdet_h: Array1<f64>§finite_difference_logdet_s: Array1<f64>§finite_difference_kkt: Array1<f64>Trait Implementations§
Source§impl Clone for OuterGradientFdRhoBlock
impl Clone for OuterGradientFdRhoBlock
Source§fn clone(&self) -> OuterGradientFdRhoBlock
fn clone(&self) -> OuterGradientFdRhoBlock
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for OuterGradientFdRhoBlock
impl RefUnwindSafe for OuterGradientFdRhoBlock
impl Send for OuterGradientFdRhoBlock
impl Sync for OuterGradientFdRhoBlock
impl Unpin for OuterGradientFdRhoBlock
impl UnsafeUnpin for OuterGradientFdRhoBlock
impl UnwindSafe for OuterGradientFdRhoBlock
Blanket Implementations§
impl<T> Allocation for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T, U> Imply<T> for U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.