n3
Code for evolving large neural networks from small ones paper.
Science Score: 75.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 2 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
✓Institutional organization owner
Organization nonlinearartificialintelligencelab has institutional domain (nail.sciences.ncsu.edu) -
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.1%) to scientific vocabulary
Keywords
Repository
Code for evolving large neural networks from small ones paper.
Basic Info
Statistics
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Topics
Metadata Files
README.md
N3
Code for evolving large neural networks from small ones paper.
This code base is uv compatible and pip installable.
Authors
Anil Radhakrishnan, John F. Lindner, Scott T. Miller, Sudeshna Sinha, William L. Ditto
Link to paper
Key Results
- Growing networks can dynamically evolve their size during gradient descent to help solve problems involving nonlinear regression and classification
- We present two different algorithms:
- an auxiliary weight algorithm implemented in Mathematica serving as a conceptual proof of concept where an additional weight is added to a standard multi-layer perceptron (MLP) to whose value dictates the size of the network
- a more generalized scheme implemented in Python using JAX separating the auxiliary weight from the network and allowing for more flexibility in the network architecture in a controller-mlp paradigm that can be efficiently vectorized and parallelized in standard deep learning frameworks
- We show improved results for growing networks over static(grown) networks for in both pipelines for regression and classification tasks
Installation
We recommend using uv to manage python and install the package.
Then, you can simply git clone the repository and run,
bash
uv pip install .
to install the package with all dependencies.
Usage
The notebooks in the nbs illustrate the pipeline for training and testing the growing and grown networks for regression and classification tasks.
To run the notebooks you can install the additional dependencies as noted in the pyproject.toml file.
The scripts in the scripts directory are the same as the notebooks but with argparsing for easy command line usage for use in batch processing.
To run the scripts, you can use the uv run command to run the scripts in the scripts directory.
The analysis of the statistical run results can be done using the analysis notebook in the nbs directory.
The mathematica notebooks used for this work can be accessed in the mathematica directory.
For running grid searches and sweeps, the config/sweeps.yaml config file can be edited accordingly and run with scripts/run_sweep.py
Code References
- Equinox Pytorch like module for JAX
- JAX Accelerator-oriented array computation and program transformation
- Optax Gradient processing and optimization library for JAX <!-- ### dev notes
the package can be installed editably via pip:
bash
pip install -e . # install in editable mode
if the cuda version of jax is causing issues, you can instead install the cpu version by editing out the [cuda12] from jax in the pyproject.toml file.
Basic scripts with argparsing are in the scripts directory.
The notebooks in the nbs directory illustrate what the scripts do. -->
Owner
- Name: Non Linear Artificial Intelligence Lab
- Login: NonlinearArtificialIntelligenceLab
- Kind: organization
- Location: United States of America
- Website: nail.sciences.ncsu.edu
- Repositories: 1
- Profile: https://github.com/NonlinearArtificialIntelligenceLab
Citation (CITATION.cff)
cff-version: 1.2.0
title: Nimble Neural Networks
message: Please cite this software using these metadata.
type: software
authors:
- given-names: Anil
family-names: Radhakrishnan
email: aradhak5@ncsu.edu
affiliation: North Carolina State University
orcid: 'https://orcid.org/0000-0002-8084-9527'
- given-names: John
family-names: Lindner
name-particle: F
email: jflindne@ncsu.edu
affiliation: North Carolina State University
orcid: 'https://orcid.org/0000-0002-7370-8646'
- given-names: Scott
name-particle: T
family-names: Miller
email: stmille3@ncsu.edu
affiliation: North Carolina State University
- given-names: Sudeshna
family-names: Sinha
email: sudeshna@iisermohali.ac.in
affiliation: >-
Indian Institute of Science Education and Research
Mohali
orcid: 'https://orcid.org/0000-0002-1364-5276'
- given-names: William
name-particle: L
family-names: Ditto
email: wditto@ncsu.edu
affiliation: North Carolina State Universty
orcid: 'https://orcid.org/0000-0002-7416-8012'
repository-code: 'https://github.com/NonlinearArtificialIntelligenceLab/N3'
abstract: >-
JAX implementation of Nimble Neural Networks
controller-mlp architecture
keywords:
- Machine Learning
- Nonlinear
license: MIT
GitHub Events
Total
- Release event: 1
- Watch event: 2
- Public event: 1
- Push event: 5
- Pull request event: 2
- Fork event: 1
- Create event: 1
Last Year
- Release event: 1
- Watch event: 2
- Public event: 1
- Push event: 5
- Pull request event: 2
- Fork event: 1
- Create event: 1