pub struct GradientFlowAnalyzer<A> { /* private fields */ }Expand description
Gradient flow analyzer for monitoring and diagnosing gradient behavior
Implementations§
Source§impl<A> GradientFlowAnalyzer<A>
impl<A> GradientFlowAnalyzer<A>
Sourcepub fn new(config: GradientFlowConfig) -> Self
pub fn new(config: GradientFlowConfig) -> Self
Create a new gradient flow analyzer with the given configuration
Sourcepub fn record_gradients(
&mut self,
layer_name: &str,
gradients: &Array1<A>,
) -> Result<LayerGradientStats<A>>
pub fn record_gradients( &mut self, layer_name: &str, gradients: &Array1<A>, ) -> Result<LayerGradientStats<A>>
Record gradients for a layer and compute statistics
Computes mean norm, max norm, min norm, variance, sparsity, and a histogram of gradient magnitudes. The results are stored in the internal history for later analysis.
Sourcepub fn detect_vanishing_gradients(&self) -> Vec<String>
pub fn detect_vanishing_gradients(&self) -> Vec<String>
Detect layers with vanishing gradients
Returns names of layers whose most recent mean gradient norm is below the configured vanishing threshold.
Sourcepub fn detect_exploding_gradients(&self) -> Vec<String>
pub fn detect_exploding_gradients(&self) -> Vec<String>
Detect layers with exploding gradients
Returns names of layers whose most recent max gradient norm is above the configured exploding threshold.
Sourcepub fn get_health_report(&self) -> GradientHealthReport
pub fn get_health_report(&self) -> GradientHealthReport
Generate a comprehensive gradient health report
Analyzes all tracked layers and produces a report with:
- Lists of vanishing, exploding, and healthy layers
- An overall health assessment
- Actionable recommendations for fixing gradient issues
Sourcepub fn render_flow_chart(&self) -> Result<String>
pub fn render_flow_chart(&self) -> Result<String>
Render an SVG flow chart showing gradient magnitudes across layers
Produces an SVG string with bars representing mean gradient norms for each layer, color-coded by health status.
Sourcepub fn get_layer_history(
&self,
layer_name: &str,
) -> Option<&Vec<LayerGradientStats<A>>>
pub fn get_layer_history( &self, layer_name: &str, ) -> Option<&Vec<LayerGradientStats<A>>>
Get the history of gradient statistics for a specific layer
Sourcepub fn clear_history(&mut self)
pub fn clear_history(&mut self)
Clear all recorded gradient history
Auto Trait Implementations§
impl<A> Freeze for GradientFlowAnalyzer<A>
impl<A> RefUnwindSafe for GradientFlowAnalyzer<A>where
A: RefUnwindSafe,
impl<A> Send for GradientFlowAnalyzer<A>where
A: Send,
impl<A> Sync for GradientFlowAnalyzer<A>where
A: Sync,
impl<A> Unpin for GradientFlowAnalyzer<A>where
A: Unpin,
impl<A> UnsafeUnpin for GradientFlowAnalyzer<A>
impl<A> UnwindSafe for GradientFlowAnalyzer<A>where
A: UnwindSafe,
Blanket Implementations§
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
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
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.