Neural Network Factory API
The Neural Network Factory provides a comprehensive framework for creating and managing various neural network architectures for Hurst parameter estimation. This module implements train-once, apply-many workflows with proper GPU memory management and model persistence.
Neural Network Factory for Hurst Parameter Estimation
This module provides a factory for creating various neural network architectures suitable for benchmarking Hurst parameter estimation in time series data.
- class lrdbenchmark.analysis.machine_learning.neural_network_factory.NNArchitecture(value)[source]
Available neural network architectures.
- FFN = 'feedforward'
- CNN = 'convolutional'
- LSTM = 'lstm'
- BILSTM = 'bidirectional_lstm'
- GRU = 'gru'
- TRANSFORMER = 'transformer'
- HYBRID_CNN_LSTM = 'hybrid_cnn_lstm'
- RESNET = 'resnet'
- class lrdbenchmark.analysis.machine_learning.neural_network_factory.NNConfig(architecture: NNArchitecture, input_length: int, hidden_dims: List[int] = None, dropout_rate: float = 0.2, learning_rate: float = 0.001, batch_size: int = 32, epochs: int = 50, activation: str = 'relu', optimizer: str = 'adam', weight_decay: float = 0.0001, conv_filters: int = 64, conv_kernel_size: int = 3, lstm_units: int = 64, transformer_heads: int = 8, transformer_layers: int = 2, resnet_blocks: int = 2)[source]
Configuration for neural network architecture.
- architecture: NNArchitecture
- __init__(architecture: NNArchitecture, input_length: int, hidden_dims: List[int] = None, dropout_rate: float = 0.2, learning_rate: float = 0.001, batch_size: int = 32, epochs: int = 50, activation: str = 'relu', optimizer: str = 'adam', weight_decay: float = 0.0001, conv_filters: int = 64, conv_kernel_size: int = 3, lstm_units: int = 64, transformer_heads: int = 8, transformer_layers: int = 2, resnet_blocks: int = 2) None
- class lrdbenchmark.analysis.machine_learning.neural_network_factory.BaseNeuralNetwork(*args: Any, **kwargs: Any)[source]
Base class for all neural network architectures with train-once, apply-many workflow.
- predict(x: ndarray, batch_size: int = 32) ndarray[source]
Make predictions on new data with automatic device handling.
- class lrdbenchmark.analysis.machine_learning.neural_network_factory.FeedforwardNetwork(*args: Any, **kwargs: Any)[source]
Basic feedforward neural network.
- class lrdbenchmark.analysis.machine_learning.neural_network_factory.ConvolutionalNetwork(*args: Any, **kwargs: Any)[source]
Convolutional neural network for time series.
- class lrdbenchmark.analysis.machine_learning.neural_network_factory.LSTMNetwork(*args: Any, **kwargs: Any)[source]
LSTM neural network for time series.
- class lrdbenchmark.analysis.machine_learning.neural_network_factory.BidirectionalLSTMNetwork(*args: Any, **kwargs: Any)[source]
Bidirectional LSTM neural network.
- class lrdbenchmark.analysis.machine_learning.neural_network_factory.GRUNetwork(*args: Any, **kwargs: Any)[source]
GRU neural network for time series.
- class lrdbenchmark.analysis.machine_learning.neural_network_factory.TransformerNetwork(*args: Any, **kwargs: Any)[source]
Transformer encoder network for time series.
- class lrdbenchmark.analysis.machine_learning.neural_network_factory.HybridCNNLSTMNetwork(*args: Any, **kwargs: Any)[source]
Hybrid CNN-LSTM network.
- class lrdbenchmark.analysis.machine_learning.neural_network_factory.ResNetBlock(*args: Any, **kwargs: Any)[source]
Residual block for ResNet architecture.
- class lrdbenchmark.analysis.machine_learning.neural_network_factory.ResNetNetwork(*args: Any, **kwargs: Any)[source]
ResNet architecture for time series.
- class lrdbenchmark.analysis.machine_learning.neural_network_factory.NeuralNetworkFactory[source]
Factory for creating neural network architectures.
- classmethod create_network(config: NNConfig) BaseNeuralNetwork[source]
Create a neural network with the specified architecture.
- classmethod get_available_architectures() List[NNArchitecture][source]
Get list of available architectures.
- classmethod create_benchmark_networks(input_length: int, architectures: List[NNArchitecture] | None = None) Dict[str, BaseNeuralNetwork][source]
Create a set of networks for benchmarking.
- lrdbenchmark.analysis.machine_learning.neural_network_factory.create_feedforward_network(input_length: int, hidden_dims: List[int] = [64, 32]) BaseNeuralNetwork[source]
Create a feedforward neural network.
- lrdbenchmark.analysis.machine_learning.neural_network_factory.create_cnn_network(input_length: int, conv_filters: int = 64) BaseNeuralNetwork[source]
Create a convolutional neural network.
- lrdbenchmark.analysis.machine_learning.neural_network_factory.create_lstm_network(input_length: int, lstm_units: int = 64) BaseNeuralNetwork[source]
Create an LSTM neural network.
- lrdbenchmark.analysis.machine_learning.neural_network_factory.create_all_benchmark_networks(input_length: int) Dict[str, BaseNeuralNetwork][source]
Create all available neural network architectures for benchmarking.
Neural Network Architectures
The factory supports 8 different neural network architectures:
Feedforward Network
Convolutional Network
LSTM Network
Bidirectional LSTM Network
GRU Network
Transformer Network
ResNet Network
Hybrid CNN-LSTM Network
Factory Class
- class lrdbenchmark.analysis.machine_learning.neural_network_factory.NeuralNetworkFactory[source]
Factory for creating neural network architectures.
- classmethod create_network(config: NNConfig) BaseNeuralNetwork[source]
Create a neural network with the specified architecture.
- classmethod get_available_architectures() List[NNArchitecture][source]
Get list of available architectures.
- classmethod create_benchmark_networks(input_length: int, architectures: List[NNArchitecture] | None = None) Dict[str, BaseNeuralNetwork][source]
Create a set of networks for benchmarking.
Configuration
- class lrdbenchmark.analysis.machine_learning.neural_network_factory.NNConfig(architecture: NNArchitecture, input_length: int, hidden_dims: List[int] = None, dropout_rate: float = 0.2, learning_rate: float = 0.001, batch_size: int = 32, epochs: int = 50, activation: str = 'relu', optimizer: str = 'adam', weight_decay: float = 0.0001, conv_filters: int = 64, conv_kernel_size: int = 3, lstm_units: int = 64, transformer_heads: int = 8, transformer_layers: int = 2, resnet_blocks: int = 2)[source]
Configuration for neural network architecture.
- architecture: NNArchitecture
- __init__(architecture: NNArchitecture, input_length: int, hidden_dims: List[int] = None, dropout_rate: float = 0.2, learning_rate: float = 0.001, batch_size: int = 32, epochs: int = 50, activation: str = 'relu', optimizer: str = 'adam', weight_decay: float = 0.0001, conv_filters: int = 64, conv_kernel_size: int = 3, lstm_units: int = 64, transformer_heads: int = 8, transformer_layers: int = 2, resnet_blocks: int = 2) None
Architecture Enumeration
- class lrdbenchmark.analysis.machine_learning.neural_network_factory.NNArchitecture(value)[source]
Available neural network architectures.
- FFN = 'feedforward'
- CNN = 'convolutional'
- LSTM = 'lstm'
- BILSTM = 'bidirectional_lstm'
- GRU = 'gru'
- TRANSFORMER = 'transformer'
- HYBRID_CNN_LSTM = 'hybrid_cnn_lstm'
- RESNET = 'resnet'
Convenience Functions
- lrdbenchmark.analysis.machine_learning.neural_network_factory.create_feedforward_network(input_length: int, hidden_dims: List[int] = [64, 32]) BaseNeuralNetwork[source]
Create a feedforward neural network.
- lrdbenchmark.analysis.machine_learning.neural_network_factory.create_cnn_network(input_length: int, conv_filters: int = 64) BaseNeuralNetwork[source]
Create a convolutional neural network.
- lrdbenchmark.analysis.machine_learning.neural_network_factory.create_lstm_network(input_length: int, lstm_units: int = 64) BaseNeuralNetwork[source]
Create an LSTM neural network.
Usage Examples
Creating a Single Network
from lrdbenchmark.analysis.machine_learning.neural_network_factory import (
NeuralNetworkFactory, NNArchitecture, NNConfig
)
# Create configuration
config = NNConfig(
architecture=NNArchitecture.TRANSFORMER,
input_length=500,
hidden_dims=[64, 32],
learning_rate=0.001,
epochs=50
)
# Create network
factory = NeuralNetworkFactory()
network = factory.create_network(config)
Creating All Benchmark Networks
from lrdbenchmark.analysis.machine_learning.neural_network_factory import create_all_benchmark_networks
# Create all available networks
networks = create_all_benchmark_networks(input_length=500)
for name, network in networks.items():
print(f"Created {name} network")
Training and Prediction
import numpy as np
# Generate training data
X_train = np.random.randn(100, 500)
y_train = np.random.uniform(0.2, 0.8, 100)
# Train the network
history = network.train_model(X_train, y_train)
# Make predictions
new_data = np.random.randn(1, 500)
prediction = network.predict(new_data)
print(f"Prediction: {prediction[0]:.3f}")
Model Persistence
# Models are automatically saved after training
# To load a saved model:
network.load_model() # Loads from default path
# Or specify a custom path:
network.load_model("path/to/model.pth")
Performance Characteristics
Based on comprehensive benchmarking, the neural network architectures show the following performance:
Architecture |
MAE |
Execution Time |
Success Rate |
|---|---|---|---|
Transformer |
0.1802 |
0.7ms |
100% |
LSTM |
0.1833 |
0.3ms |
100% |
Bidirectional LSTM |
0.1834 |
0.3ms |
100% |
Convolutional |
0.1844 |
0.0ms |
100% |
GRU |
0.1849 |
0.2ms |
100% |
ResNet |
0.1859 |
0.1ms |
100% |
Feedforward |
0.1946 |
0.0ms |
100% |
Key Features
Train-once, Apply-many: Models are trained once and can be used for multiple predictions
GPU Memory Management: Batch processing prevents CUDA out-of-memory issues
Model Persistence: Automatic saving and loading of trained models
Device Management: Automatic GPU/CPU selection and device placement
Consistent Performance: All architectures achieve similar accuracy levels
Fast Inference: Ultra-fast prediction times (0.0-0.7ms per sample)
Production Ready: Robust error handling and memory management