Frequently Asked Questions#

Answers to common questions about NeurEco.

General Questions#

What is NeurEco?#

NeurEco is a machine learning platform developed by Adagos that automatically builds compact, interpretable neural networks. Unlike traditional deep learning approaches, NeurEco creates minimal networks optimized for deployment on embedded systems.

What makes NeurEco different from other ML tools?#

NeurEco’s key differentiators:

  • Automatic architecture: No manual network design required

  • Compact models: Creates the smallest network that achieves target accuracy

  • Interpretable: Sensitivity analysis reveals input-output relationships

  • Embeddable: Export to C, FMU, ONNX, VBA for deployment anywhere

  • No hyperparameter tuning: The algorithm determines optimal configuration

What problems can NeurEco solve?#

NeurEco offers three main solutions:

  • Tabular: Regression, classification, and compression for structured data

  • Dynamic: Time-series prediction with ODE or convolutional approaches

  • PFS: Frequency-domain response prediction for parametric systems

Which Solution Should I Use?#

How do I choose between Tabular solutions?#

  • Regressor: Predict continuous values (temperature, price, stress)

  • Classifier: Predict categories (pass/fail, type A/B/C)

  • Compressor: Reduce dimensionality while preserving information

When should I use Dynamic instead of Tabular?#

Use Dynamic when:

  • Your data has a time component

  • Past values influence future predictions

  • You’re modeling a physical system with memory/inertia

Use Tabular when:

  • Each sample is independent

  • No temporal relationship between samples

ODE vs Convolutional Dynamic: which one?#

Use ODE when

Use Convolutional Dynamic when

System has internal states

System is purely input-driven

Non-uniform time steps

Uniform time steps required

Physical interpretability needed

Fast inference is priority

Fewer training trajectories

Many training trajectories available

When should I use PFS?#

Use PFS when:

  • You have frequency-domain data

  • Outputs are complex-valued (magnitude and phase)

  • You’re modeling frequency response functions

  • Design parameters affect frequency behavior

Data Questions#

How much data do I need?#

General guidelines:

  • Minimum: 100+ samples per output

  • Recommended: 1000+ samples for complex problems

  • More is better: NeurEco handles large datasets efficiently

For Dynamic models, include multiple trajectories covering different operating conditions.

What data format should I use?#

NeurEco accepts:

  • NumPy arrays (recommended for Python API)

  • CSV files (for GUI and CLI)

  • NPY files (for CLI with large datasets)

  • MAT files (MATLAB format)

Do I need to normalize my data?#

NeurEco handles normalization automatically. You can customize the normalization strategy:

config = tab.RegressorBuildConfig(
    input_data=X,
    output_data=Y,
    inputs_shifting="auto",    # or "none", "min_centered", "mean"
    inputs_scaling="auto",     # or "none", "max_centered", "max", "std"
)

How do I handle missing values?#

NeurEco does not accept NaN values. Preprocess your data:

import numpy as np

# Option 1: Remove rows with missing values
mask = ~np.isnan(X).any(axis=1)
X_clean = X[mask]

# Option 2: Impute missing values
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(strategy='mean')
X_clean = imputer.fit_transform(X)

Training Questions#

How long does training take?#

Training time depends on:

  • Dataset size

  • Problem complexity

  • Hardware (CPU vs GPU)

  • Stopping criteria

Typical times:

  • Simple problems: Minutes

  • Complex problems: Hours

  • Use checkpointing for long runs

Can I stop and resume training?#

Yes, use checkpointing:

config = tab.RegressorBuildConfig(
    input_data=X,
    output_data=Y,
    checkpoint_address="./checkpoints/model",
)

To resume:

config = tab.RegressorBuildConfig(
    input_data=X,
    output_data=Y,
    checkpoint_to_start_build_from="./checkpoints/model",
    start_build_from_model_number=-1,  # -1 = last model in the checkpoint
)

This example is for Tabular models. A Convolutional Dynamic or ODE build resumes from the GUI (RESUME), from Python (resume=True) or from the CLI ("resume": true). A resumed ODE build gives the same models as a build without pause. See Resuming from Checkpoint.

How do I limit model size?#

Set maximum neurons (Tabular) or hidden states (Dynamic):

# Tabular
config = tab.RegressorBuildConfig(
    input_data=X,
    output_data=Y,
    links_maximum_number=50,
)

# Dynamic ODE — each array carries the time in its first column.
config = dyn.ODEBuildConfig(
    train_exc_list=np.column_stack([time, exc]),   # [time | excitations]
    train_out_list=np.column_stack([time, out]),   # [time | outputs]
    max_hidden_states=5,
)

Model Questions#

How do I evaluate model accuracy?#

Use the built-in error computation:

predictions = model.evaluate(X_test)
error = model.compute_error(predictions, Y_test)
print(f"L2 relative error: {100*error:.2f}%")

Can I access model weights?#

Yes:

weights = model.get_weights()
# Later...
model.set_weights(weights)

How do I understand which inputs matter?#

Use sensitivity analysis:

# For Tabular
model.perform_sensitivity_analysis(X_test, show=True)

# For specific output
sensitivity = model.sensitivity(X_test, output_id=0)

Export and Deployment#

What export formats are available?#

Format

Description

License Required

.ednn/.ernn/.efnn

Native NeurEco format

Standard

ONNX

Universal ML format

Embed (Tabular only)

FMU

Simulation interchange

Embed

C Header

Embedded C code

Embed (Tabular only)

VBA

Excel integration

Embed (Tabular only)

Can I use NeurEco models in PyTorch/TensorFlow?#

Yes, for Tabular models (Regressor, Classifier, Compressor), in Python:

from NeurEco.NeurEcoTabular.neureco_to_torch import neureco2torch
from NeurEco.NeurEcoTabular.neureco_to_keras import neureco2keras

# To PyTorch
torch_model = neureco2torch(model)

# To Keras/TensorFlow
keras_model = neureco2keras(model)

Like the exports, these conversions require an embed license. See Model Conversion.

What’s the difference between ONNX and native format?#

  • Native format: Fastest evaluation, NeurEco required

  • ONNX: Portable, works with any ONNX runtime, slightly slower

Use native format during development, ONNX for deployment.

Performance Questions#

Is GPU required?#

No, GPU is optional but recommended for:

  • Large datasets (100k+ samples)

  • Complex models

  • Faster training

CPU-only works fine for most use cases.

How can I speed up training?#

  1. Use GPU: Install the NVIDIA driver; no CUDA toolkit is needed. For the Python library, use a GPU edition (see GPU Setup)

  2. Reduce validation percentage: Lower valid_percentage (but maintain good validation)

  3. Set model limits: Use links_maximum_number (Tabular) or max_hidden_states (Dynamic ODE)

  4. Use checkpointing: Stop when accuracy is sufficient

  5. Keep the default CPU mode: MKL_CBWR=COMPATIBLE makes results independent of the processor, but builds slower (see CPU Performance and Reproducibility)

Why is my model slow at inference?#

Possible causes:

  • Model too large (reduce links_maximum_number)

  • Using Python API overhead (export to C for fastest inference)

  • Loading model repeatedly (load once, evaluate many times)

Licensing Questions#

Do I need a license for development?#

Yes, NeurEco requires a license for all operations including development.

What’s the difference between standard and embed licenses?#

  • Standard: Build, train, evaluate, save in native format

  • Embed (add-on): Export to ONNX, FMU, C, VBA

Can I deploy models without a license?#

Yes! Once exported (ONNX, FMU, C), the deployed model runs independently without needing NeurEco or a license.

How do I upgrade my license?#

Contact support@adagos.com with your current license details and desired features.

GUI Questions#

The interface is too large or too small on my screen#

Use Views > UI size to scale the whole interface (fonts, paddings, icons) between 80% and 150%. The setting is remembered between sessions. On small screens, 80–90% is recommended.

How do I open the documentation from the GUI?#

The Help > Documentation menu offers two entries:

  • Local — opens the folder that holds the user manual installed with NeurEco, NeurEcoUserManual.pdf (shortcut: F1). On Windows this is the Doc folder of the installation; on Linux, /opt/neureco/share/doc/adagos

  • Online… — opens the online documentation site

Getting Help#

Where can I find more examples?#

  • Test cases: 13 example projects come as zip files with the Windows installer and portable ZIP and with the Linux neureco package, not with the pip package (see Examples)

  • Documentation: Solution-specific examples in each chapter

  • Support: Contact support@adagos.com for custom guidance

How do I report a bug?#

Email support@adagos.com with:

  1. NeurEco version

  2. Operating system

  3. Complete error message

  4. Minimal code to reproduce

  5. Sample data (if possible)

How do I request a feature?#

Contact support@adagos.com with your use case and desired functionality. User feedback drives NeurEco development.