.. _faq: ========================== Frequently Asked Questions ========================== Answers to common questions about NeurEco. .. contents:: On this page :local: :depth: 2 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? ---------------------------------------- .. list-table:: :header-rows: 1 :widths: 50 50 * - 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: .. code-block:: python 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: .. code-block:: python 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: .. code-block:: python config = tab.RegressorBuildConfig( input_data=X, output_data=Y, checkpoint_address="./checkpoints/model", ) To resume: .. code-block:: python 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 :ref:`dynamic-resume`. How do I limit model size? -------------------------- Set maximum neurons (Tabular) or hidden states (Dynamic): .. code-block:: python # 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: .. code-block:: python 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: .. code-block:: python weights = model.get_weights() # Later... model.set_weights(weights) How do I understand which inputs matter? ---------------------------------------- Use sensitivity analysis: .. code-block:: python # 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? ---------------------------------- .. list-table:: :header-rows: 1 * - 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: .. code-block:: 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 :ref:`tabular-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 :ref:`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 :ref:`cpu-performance`) 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 :ref:`tabular-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.