devol logo

devol

joeddav/devol

Genetic neural architecture search for deep learning models

GraphCanon updated 3w · GitHub synced 3w

951 stars114 forksLast push 3y Python MIT

Decision brief

Devolution of neural network architectures through genetic algorithms in Keras for automating design.

Good fit when

  • Use DEvol when you need an early proof-of-concept tool to automate the design of neural network architectures with limited parameters, focusing specifically on classification problems.
  • Consider it if your project involves shallow networks where computational resources are more manageable and parallel training setups can be established for evaluating multiple models.

Avoid when

  • Avoid using DEvol in situations requiring deep or highly complex architectures due to the significant computational expense associated with evolutionary search over such a large parameter space.
  • Do not use if you lack the infrastructure for parallel processing or do not want to optimize for shorter training epochs, as this can affect model accuracy and fitness evaluations.
Pricing:
freemium - Available under MIT license meaning it is free for personal and commercial use but the author cannot be held responsible or liable from damages caused by using DEvol.

Observed Jul 17, 2026 · Source: enrich:decision_facts

Verify the decision

Maintenance and security

Full trust report
Maintenance
Dormant (1166d since push)
As of 3w
Provenance
Not a fork · Personal account
As of 3w
Security (OSV)
No lockfile
As of 1mo

Public GitHub metadata and optional OSV scans. Signals, not a guarantee. Trust methodology.

Install

pip install devol
PyPI

Similar tools

Same-category neighbours. No typed graph edges are catalogued for this tool yet.

Evidence and technical details

Sourced facts, taxonomy, compatibility claims, README excerpt, and machine-readable endpoints.

Overview

DEvol is an early proof-of-concept tool for automating the design of neural network architectures using genetic algorithms within Keras.

Capability facts

Languages
python

Source: github.language · Aug 4, 2026

Categories

Tags

README

DEvol - Deep Neural Network Evolution

DEvol (DeepEvolution) is a basic proof of concept for genetic architecture search in Keras. The current setup is designed for classification problems, though this could be extended to include any other output type as well.

See example/demo.ipynb for a simple example.

Evolution

Each model is represented as fixed-width genome encoding information about the network's structure. In the current setup, a model contains a number of convolutional layers, a number of dense layers, and an optimizer. The convolutional layers can be evolved to include varying numbers of feature maps, different activation functions, varying proportions of dropout, and whether to perform batch normalization and/or max pooling. The same options are available for the dense layers with the exception of max pooling. The complexity of these models could easily be extended beyond these capabilities to include any parameters included in Keras, allowing the creation of more complex architectures.

Below is a highly simplified visualization of how genetic crossover might take place between two models.

Badge image Genetic crossover and mutation of neural networks

Results

For demonstration, we ran our program on the MNIST dataset (see demo.ipynb for an example setup) with 20 generations and a population size of 50. We allowed the model up to 6 convolutional layers and 4 dense layers (including the softmax layer). The best accuracy we attained with 10 epochs of training under these constraints was 99.4%, which is higher than we were able to achieve when manually constructing our own models under the same constraints. The graphic below displays the running maximum accuracy for all 1000 nets as they evolve over 20 generations.

Keep in mind that these results are obtained with simple, relatively shallow neural networks with no data augmentation, transfer learning, ensembling, fine-tuning, or other optimization techniques. However, virtually any of these methods could be incorporated into the genetic program.

Badge image Running max of MNIST accuracies across 20 generations

Application

The most significant barrier in using DEvol on a real problem is the complexity of the algorithm. Because training neural networks is often such a computationally expensive process, training hundreds or thousands of different models to evaluate the fitness of each is not always feasible. Below are some approaches to combat this issue:

  • Parallel Training - The nature of evaluating the fitness of multiple members of a population simultaneously is embarassingly parallel. A task like this would be trivial to distribute among many GPUs and even machines.
  • Early Stopping - There's no need to train a model for 10 epochs if it stops improving after 3; cut it off early.
  • Train on Fewer Epochs - Training in a genetic program serves one purpose: to evaluate a model's fitness in relation to other models. It may not be necessary to train to convergence to make this comparison; you may only need 2 or 3 epochs. However, it is important you exercise caution in decreasing training time because doing so could create evolutionary pressure toward simpler models that converge quickly. This creates a trade-off between training time and accuracy which, depending on the application, may or may not be desirable.
  • Parameter Selection - The more robust you allow your models to be, the longer it will take to converge; i.e., don't allow horizontal flipping on a character recognition problem even though the genetic program will eventually learn not to include it. The less space the program has to explore, the faster it will arrive at an optimal solution.

For some problems, it may be ideal to simply plug the data into DEvol and let the program build a complete model for you, but

For agents

This page has a .md twin and JSON over the API.

Was this helpful?

Anonymous feedback helps us improve pages and translations.