pub struct GradientDebugger { /* private fields */ }Expand description
Main gradient debugger
Implementations§
Source§impl GradientDebugger
impl GradientDebugger
Sourcepub fn new(config: DebugConfig) -> Self
pub fn new(config: DebugConfig) -> Self
Create a new gradient debugger
Sourcepub fn with_gradient_config(
config: DebugConfig,
gradient_config: GradientDebugConfig,
) -> Self
pub fn with_gradient_config( config: DebugConfig, gradient_config: GradientDebugConfig, ) -> Self
Create with custom gradient configuration
Sourcepub fn set_layer_parameter_count(&mut self, layer_name: &str, count: usize)
pub fn set_layer_parameter_count(&mut self, layer_name: &str, count: usize)
Report the real number of elements in layer_name’s gradient
tensor, for callers that have access to the actual tensor (and not
just the reduced norm/mean/std Self::record_gradient_flow
takes). Once set, vanishing/exploding-region reports for this layer
(see super::visualization::RegionExtent::affected_parameters)
carry this real count instead of an honest None. Creates the
layer’s history entry if record_gradient_flow has not been called
for it yet.
Sourcepub fn record_gradient_flow(
&mut self,
layer_name: &str,
gradient_norm: f64,
gradient_mean: f64,
gradient_std: f64,
) -> Result<()>
pub fn record_gradient_flow( &mut self, layer_name: &str, gradient_norm: f64, gradient_mean: f64, gradient_std: f64, ) -> Result<()>
Record gradient flow for a layer from REDUCED statistics.
The per-element quantities on GradientFlow (gradient_max,
gradient_min, dead_neurons_ratio, active_neurons_ratio) are
honestly None here: norm, mean and std do not determine them. Call
Self::record_gradient_values instead when the real gradient tensor
is at hand and those fields are wanted.
Sourcepub fn record_gradient_values(
&mut self,
layer_name: &str,
gradients: &[f64],
) -> Result<()>
pub fn record_gradient_values( &mut self, layer_name: &str, gradients: &[f64], ) -> Result<()>
Record gradient flow for a layer from the REAL per-element gradients.
Computes every GradientFlow field from the supplied values: the L2
norm, the mean, the population standard deviation, the true max/min, and
the real dead fraction (elements whose magnitude is at or below
GradientDebugConfig::dead_gradient_magnitude). Also records the real
element count so region reports can name a real
affected_parameters.
Returns an error for an empty slice rather than reporting a zero-gradient layer that was never measured.
Sourcepub fn get_status(&self) -> GradientDebugStatus
pub fn get_status(&self) -> GradientDebugStatus
Get current gradient debugging status
Sourcepub fn generate_comprehensive_report(
&self,
) -> Result<ComprehensiveGradientReport>
pub fn generate_comprehensive_report( &self, ) -> Result<ComprehensiveGradientReport>
Generate comprehensive debugging report
Sourcepub fn analyze_gradient_conflicts(&self) -> GradientConflictAnalysis
pub fn analyze_gradient_conflicts(&self) -> GradientConflictAnalysis
Analyze gradient conflicts between layers
Sourcepub fn generate_gradient_flow_visualization(&self) -> GradientFlowVisualization
pub fn generate_gradient_flow_visualization(&self) -> GradientFlowVisualization
Generate gradient flow visualization
Sourcepub fn generate_enhanced_layer_analysis(&self) -> EnhancedLayerGradientAnalysis
pub fn generate_enhanced_layer_analysis(&self) -> EnhancedLayerGradientAnalysis
Generate enhanced layer analysis
Sourcepub fn get_performance_insights(&self) -> PerformanceInsights
pub fn get_performance_insights(&self) -> PerformanceInsights
Get performance insights
Sourcepub fn get_layer_alerts(&self, layer_name: &str) -> Vec<&GradientAlert>
pub fn get_layer_alerts(&self, layer_name: &str) -> Vec<&GradientAlert>
Get alerts for a specific layer
Sourcepub fn get_layer_history(&self, layer_name: &str) -> Option<&GradientHistory>
pub fn get_layer_history(&self, layer_name: &str) -> Option<&GradientHistory>
Get gradient history for a layer
Sourcepub fn get_monitored_layers(&self) -> Vec<&String>
pub fn get_monitored_layers(&self) -> Vec<&String>
Get all monitored layers
Sourcepub fn generate_recommendations(&self) -> Result<Vec<GradientRecommendation>>
pub fn generate_recommendations(&self) -> Result<Vec<GradientRecommendation>>
Generate recommendations based on current analysis
Sourcepub async fn generate_report(&self) -> Result<ComprehensiveGradientReport>
pub async fn generate_report(&self) -> Result<ComprehensiveGradientReport>
Generate comprehensive gradient report
Sourcepub async fn quick_analysis(&self) -> Result<GradientQuickAnalysis>
pub async fn quick_analysis(&self) -> Result<GradientQuickAnalysis>
Quick analysis for immediate insights
Trait Implementations§
Auto Trait Implementations§
impl Freeze for GradientDebugger
impl RefUnwindSafe for GradientDebugger
impl Send for GradientDebugger
impl Sync for GradientDebugger
impl Unpin for GradientDebugger
impl UnsafeUnpin for GradientDebugger
impl UnwindSafe for GradientDebugger
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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.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.