or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

components.mdindex.mdremote-monitoring.mdstatistics.mdstorage.mdui-server.md
tile.json

statistics.mddocs/

Statistics Monitoring

The statistics monitoring system collects comprehensive training metrics from DeepLearning4J models and provides them to the UI for visualization. It's the modern replacement for deprecated iteration listeners.

Core Statistics API

StatsListener

The primary iteration listener for collecting model statistics during training.

public class StatsListener extends BaseStatsListener {
    // Basic constructor with default frequency (every iteration)
    public StatsListener(StatsStorageRouter router);
    
    // Constructor with custom reporting frequency
    public StatsListener(StatsStorageRouter router, int listenerFrequency);
    
    // Full configuration constructor
    public StatsListener(StatsStorageRouter router, 
                        StatsInitializationConfiguration initConfig,
                        StatsUpdateConfiguration updateConfig, 
                        String sessionID, String workerID);
    
    // Create a copy of the listener
    public StatsListener clone();
    
    // Factory methods for reports
    public StatsInitializationReport getNewInitializationReport();
    public StatsReport getNewStatsReport();
    public StorageMetaData getNewStorageMetaData(long initTime, String sessionID, String workerID);
}

BaseStatsListener

Abstract base class providing common functionality for statistics listeners.

public abstract class BaseStatsListener implements IterationListener {
    protected StatsStorageRouter storageRouter;
    protected StatsInitializationConfiguration initConfig;
    protected StatsUpdateConfiguration updateConfig;
    protected String sessionID;
    protected String workerID;
    
    public BaseStatsListener(StatsStorageRouter router, 
                           StatsInitializationConfiguration initConfig,
                           StatsUpdateConfiguration updateConfig, 
                           String sessionID, String workerID);
}

J7StatsListener

Java 7 compatible version of the statistics listener.

public class J7StatsListener extends BaseStatsListener {
    public J7StatsListener(StatsStorageRouter router);
    public J7StatsListener(StatsStorageRouter router, int listenerFrequency);
}

Configuration API

StatsUpdateConfiguration

Configuration interface for controlling statistics collection frequency and types.

public interface StatsUpdateConfiguration extends Serializable {
    // Reporting frequency in terms of listener calls
    int reportingFrequency();
    
    // Performance and System Stats
    boolean collectPerformanceStats();
    boolean collectMemoryStats();
    boolean collectGarbageCollectionStats();
    
    // General Stats
    boolean collectLearningRates();
    
    // Histogram Configuration
    boolean collectHistograms(StatsType type);
    int numHistogramBins(StatsType type);
    
    // Summary Statistics
    boolean collectMean(StatsType type);
    boolean collectStdev(StatsType type);
    boolean collectMeanMagnitudes(StatsType type);
}

DefaultStatsUpdateConfiguration

Default implementation with builder pattern for easy configuration.

public class DefaultStatsUpdateConfiguration implements StatsUpdateConfiguration {
    public static final int DEFAULT_REPORTING_FREQUENCY = 10;
    
    public static class Builder {
        public Builder reportingFrequency(int frequency);
        public Builder collectPerformanceStats(boolean collect);
        public Builder collectMemoryStats(boolean collect);
        public Builder collectGarbageCollectionStats(boolean collect);
        public Builder collectLearningRates(boolean collect);
        
        // Histogram collection by type
        public Builder collectHistogramsParameters(boolean collect);
        public Builder collectHistogramsGradients(boolean collect);
        public Builder collectHistogramsUpdates(boolean collect);
        public Builder collectHistogramsActivations(boolean collect);
        public Builder numHistogramBins(int bins);
        
        // Mean collection by type
        public Builder collectMeanParameters(boolean collect);
        public Builder collectMeanGradients(boolean collect);
        public Builder collectMeanUpdates(boolean collect);
        public Builder collectMeanActivations(boolean collect);
        
        // Standard deviation collection by type
        public Builder collectStdevParameters(boolean collect);
        public Builder collectStdevGradients(boolean collect);
        public Builder collectStdevUpdates(boolean collect);
        public Builder collectStdevActivations(boolean collect);
        
        // Mean magnitude collection by type
        public Builder collectMeanMagnitudesParameters(boolean collect);
        public Builder collectMeanMagnitudesGradients(boolean collect);
        public Builder collectMeanMagnitudesUpdates(boolean collect);
        public Builder collectMeanMagnitudesActivations(boolean collect);
        
        public DefaultStatsUpdateConfiguration build();
    }
}

StatsInitializationConfiguration

Configuration interface for statistics initialization.

public interface StatsInitializationConfiguration {
    boolean collectSoftwareInfo();
    boolean collectHardwareInfo();
    boolean collectModelInfo();
}

DefaultStatsInitializationConfiguration

Default implementation for initialization configuration.

public class DefaultStatsInitializationConfiguration implements StatsInitializationConfiguration {
    public DefaultStatsInitializationConfiguration();
    public DefaultStatsInitializationConfiguration(boolean collectSoftwareInfo, 
                                                  boolean collectHardwareInfo,
                                                  boolean collectModelInfo);
}

Statistics Reports

StatsReport Interface

Interface for statistics reports generated during training.

public interface StatsReport extends Persistable {
    void reportIterationCount(int iterationCount);
    void reportIDs(String sessionID, String typeID, String workerID, long timeStamp);
    void reportScore(double score);
    void reportLearningRates(Map<String, Double> learningRatesByParam);
    void reportHistograms(Map<StatsType, Map<String, Histogram>> histograms);
    void reportMean(StatsType statsType, String paramName, double mean);
    void reportStdev(StatsType statsType, String paramName, double stdev);
    void reportMeanMagnitudes(StatsType statsType, String paramName, double meanMag);
}

StatsInitializationReport Interface

Interface for initialization reports containing model setup information.

public interface StatsInitializationReport extends Persistable {
    void reportIDs(String sessionID, String typeID, String workerID, long timeStamp);
    void reportSoftwareInfo(Map<String, String> softwareInfo);
    void reportHardwareInfo(Map<String, String> hardwareInfo);
    void reportModelInfo(String modelClassName, String modelConfigJson, String[] paramNames);
}

Report Implementations

// SBE (Simple Binary Encoding) implementations for efficiency
public class SbeStatsReport implements StatsReport {
    public SbeStatsReport();
}

public class SbeStatsInitializationReport implements StatsInitializationReport {
    public SbeStatsInitializationReport();
}

// Java-based implementations for compatibility
public class JavaStatsReport implements StatsReport {
    public JavaStatsReport();
}

public class JavaStatsInitializationReport implements StatsInitializationReport {
    public JavaStatsInitializationReport();
}

Statistics Types and Enums

StatsType Enumeration

public enum StatsType {
    Parameters,    // Model parameters (weights, biases)
    Gradients,     // Parameter gradients (pre-update)
    Updates,       // Parameter updates (post-update/processed gradients)
    Activations    // Layer activations
}

SummaryType Enumeration

public enum SummaryType {
    Mean,           // Mean values
    Stdev,          // Standard deviation
    MeanMagnitudes  // Mean magnitudes
}

Histogram Interface

public interface Histogram {
    double[] getBinRanges();
    long[] getCounts();  
    String getLabel();
}

Usage Examples

Basic Statistics Collection

import org.deeplearning4j.ui.stats.StatsListener;
import org.deeplearning4j.ui.storage.InMemoryStatsStorage;
import org.deeplearning4j.ui.api.UIServer;

// Create storage and UI server
InMemoryStatsStorage statsStorage = new InMemoryStatsStorage();
UIServer uiServer = UIServer.getInstance();
uiServer.attach(statsStorage);

// Create listener with default settings
StatsListener statsListener = new StatsListener(statsStorage);

// Attach to your model
MultiLayerNetwork model = new MultiLayerNetwork(config);
model.init();
model.setListeners(statsListener);

// Train - statistics will be collected automatically
model.fit(trainingData);

Custom Statistics Configuration

import org.deeplearning4j.ui.stats.StatsListener;
import org.deeplearning4j.ui.stats.impl.DefaultStatsUpdateConfiguration;

// Create custom configuration
DefaultStatsUpdateConfiguration config = new DefaultStatsUpdateConfiguration.Builder()
    .reportingFrequency(10)           // Collect every 10 iterations
    .collectParameterStats(true)       // Collect parameter statistics
    .collectActivationStats(false)     // Skip activation statistics
    .collectGradientStats(true)        // Collect gradient statistics
    .collectHistograms(true)           // Collect histogram data
    .build();

// Create listener with custom configuration
StatsListener statsListener = new StatsListener(statsStorage, null, config, null, null);

model.setListeners(statsListener);

Multiple Listeners for Different Purposes

// Listener for detailed statistics (every iteration)
StatsListener detailedListener = new StatsListener(detailedStorage, 1);

// Listener for summary statistics (every 100 iterations)  
StatsListener summaryListener = new StatsListener(summaryStorage, 100);

// Attach both listeners
model.setListeners(detailedListener, summaryListener);

Cloning Listeners for Multiple Models

// Create base listener configuration
StatsListener baseListener = new StatsListener(statsStorage, customConfig, null, null);

// Clone for multiple models
StatsListener model1Listener = baseListener.clone();
StatsListener model2Listener = baseListener.clone();

model1.setListeners(model1Listener);
model2.setListeners(model2Listener);

Legacy Listeners (Deprecated)

The following listeners are deprecated but still part of the API for compatibility:

HistogramIterationListener (Deprecated)

@Deprecated
public class HistogramIterationListener extends StatsListener {
    public HistogramIterationListener(int iterations);
    public HistogramIterationListener(int iterations, boolean openBrowser);
    public HistogramIterationListener(StatsStorage ssr, int iterations, boolean openBrowser);
}

FlowIterationListener (Deprecated)

@Deprecated  
public class FlowIterationListener implements IterationListener {
    public FlowIterationListener();
    public FlowIterationListener(int iterations);
    public FlowIterationListener(StatsStorage statsStorage, int iterations);
}

ConvolutionalIterationListener (Deprecated)

@Deprecated
public class ConvolutionalIterationListener extends StatsListener {
    public ConvolutionalIterationListener(int iterations);
    public ConvolutionalIterationListener(int iterations, boolean openBrowser);
}

Migration Note: Use StatsListener instead of these deprecated classes. The new StatsListener provides all functionality with better performance and more configuration options.