Skip to main content

GradientFlowAnalyzer

Struct GradientFlowAnalyzer 

Source
pub struct GradientFlowAnalyzer<A> { /* private fields */ }
Expand description

Gradient flow analyzer for monitoring and diagnosing gradient behavior

Implementations§

Source§

impl<A> GradientFlowAnalyzer<A>
where A: Float + ScalarOperand + Debug + Sum,

Source

pub fn new(config: GradientFlowConfig) -> Self

Create a new gradient flow analyzer with the given configuration

Source

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.

Source

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.

Source

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.

Source

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
Source

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.

Source

pub fn get_layer_history( &self, layer_name: &str, ) -> Option<&Vec<LayerGradientStats<A>>>

Get the history of gradient statistics for a specific layer

Source

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V