← Open Source
uber-research

PyTorch-NEAT

uber-research/PyTorch-NEAT on GitHub: Python, Model Development, Architecture, Training toolkits, AutoML, Model architecture, Optimization, Research.

Model DevelopmentArchitectureTraining toolkitsPython
Open on GitHub
Momentum
+0stars in 24 hours0.0%
568
Stars
99
Forks
+0
This week
1
Contributors
Created 2018-08-28 · Updated 2026-09-02 · #16877 today
Top developers
jal278

uber-research/PyTorch-NEAT is ranked 16,877 with 568 stars.

Same-category comparison

uber-research/PyTorch-NEAT is ranked 16,877 among these 8 peers; thedimlebowski/Trading-Gym is ranked 16,876.

Same-category comparison
NameRankMetrics
mmasana/FACIL16,858
Language:
Python
Stars:
569
Forks:
102
Description:
Framework for Analysis of Class-Incremental Learning with 12 state-of-the-art methods and 3 baselines.
ilovepose/DarkPose16,865
Language:
Cuda
Stars:
568
Forks:
82
Description:
Distribution-Aware Coordinate Representation for Human Pose Estimation.
microsoft/foldingdiff16,871
Language:
Jupyter Notebook
Stars:
568
Forks:
75
Description:
Diffusion models of protein structure; trigonometry and attention are all you need.
thedimlebowski/Trading-Gym16,876
Language:
Python
Stars:
568
Forks:
150
Description:
Trading Gym is an open source project for the development of reinforcement learning algorithms in the context of trading.
HKUDS/SSLRec16,881
Language:
Python
Stars:
567
Forks:
82
Description:
[WSDM'2024 Oral] "SSLRec: A Self-Supervised Learning Framework for Recommendation".
MarvinTeichmann/ConvCRF16,883
Language:
Python
Stars:
567
Forks:
131
Description:
This repository contains the reference implementation for our proposed Convolutional CRFs.
assafshocher/ResizeRight16,886
Language:
Python
Stars:
567
Forks:
52
Description:
The correct way to resize images or tensors. For Numpy or Pytorch (differentiable).
google-research-datasets/conceptual-captions16,890
Language:
Shell
Stars:
567
Forks:
25
Description:
Conceptual Captions is a dataset containing (image-URL, caption) pairs designed for the training and evaluation of machine learned image captioning systems.
Key parameters and specifications
Key parameters and specifications
ParameterValue
LanguagePython
CategoryModel Development
SubcategoryArchitecture, Training toolkits
KeywordsAutoML, Model architecture, Optimization, Research
Stars568
Forks99
Contributors1
Created date2018-08-28
Updated date2026-09-02
Stars in 1 day0
Stars in 7 days0
Rank16,877
Previous rank16,670
Rank change-207
7-day stars rank15,777
Previous 7-day stars rank15,786
7-day stars rank change9
Total stars rank17,547
Previous total stars rank17,516
Total stars rank change-31
CountryUSA
README summary

PyTorch NEAT Background NEAT (NeuroEvolution of Augmenting Topologies) is a popular neuroevolution algorithm, one of the few such algorithms that evolves the architectures of its networks in addition to the weights. For more information, see this research paper: HyperNEAT is an extension to NEAT that indirectly encodes the weights of the network (called the substrate) with a separate network (called a CPPN, for compositional pattern-producing network). For more information on HyperNEAT, see this website: Adaptive HyperNEAT is an extension

to HyperNEAT which indirectly encodes both the initial weights and an update rule for the weights such that some learning can occur during a network's "lifetime. " For more information, see this research paper: About PyTorch NEAT builds upon NEAT-Python by providing some functions which can turn a NEAT-Python genome into either a recurrent PyTorch network or a PyTorch CPPN for use in HyperNEAT or Adaptive HyperNEAT. We also provide some environments in which to test NEAT and Adaptive

HyperNEAT, and a more involved example using the CPPN infrastructure with Adaptive HyperNEAT on a T-maze. Examples The following snippet turns a NEAT-Python genome into a recurrent PyTorch network: You can also turn a NEAT-Python genome into a CPPN: A CPPN is represented as a graph structure. For easy evaluation, a CPPN's input and output nodes may be named: We also provide some infrastructure for running networks in Gym environments: This allows multiple environments to run in

parallel for efficiency. A simple example using NEAT to solve the Cartpole can be run like this: And a simple example using Adaptive HyperNEAT to partially solve a T-maze can be run like this: Author / Support PyTorch NEAT is extended from Python NEAT by Alex Gajewsky.

Frequently asked questions

How many stars and forks are recorded?

uber-research/PyTorch-NEAT has 568 stars and 99 forks.

What is the repository rank?

uber-research/PyTorch-NEAT is ranked 16,877.

What language and category are recorded?

uber-research/PyTorch-NEAT has 568 stars, uses Python and belongs to Model Development.

Which repository is closest in rank?

uber-research/PyTorch-NEAT is compared with thedimlebowski/Trading-Gym, ranked 16,876 with 568 stars.

README

PyTorch NEAT

Background

NEAT (NeuroEvolution of Augmenting Topologies) is a popular neuroevolution algorithm, one of the few such algorithms that evolves the architectures of its networks in addition to the weights. For more information, see this research paper: http://nn.cs.utexas.edu/downloads/papers/stanley.ec02.pdf.

HyperNEAT is an extension to NEAT that indirectly encodes the weights of the network (called the substrate) with a separate network (called a CPPN, for compositional pattern-producing network). For more information on HyperNEAT, see this website: http://eplex.cs.ucf.edu/hyperNEATpage/.

Adaptive HyperNEAT is an extension to HyperNEAT which indirectly encodes both the initial weights and an update rule for the weights such that some learning can occur during a network's "lifetime." For more information, see this research paper: http://eplex.cs.ucf.edu/papers/risi_sab10.pdf.

About

PyTorch NEAT builds upon NEAT-Python by providing some functions which can turn a NEAT-Python genome into either a recurrent PyTorch network or a PyTorch CPPN for use in HyperNEAT or Adaptive HyperNEAT. We also provide some environments in which to test NEAT and Adaptive HyperNEAT, and a more involved example using the CPPN infrastructure with Adaptive HyperNEAT on a T-maze.

Examples

The following snippet turns a NEAT-Python genome into a recurrent PyTorch network:

from pytorch_neat.recurrent_net import RecurrentNet

net = RecurrentNet.create(genome, config, bs)
outputs = net.activate(some_array)

You can also turn a NEAT-Python genome into a CPPN:

from pytorch_neat.cppn import create_cppn

cppn_nodes = create_cppn(genome, config)

A CPPN is represented as a graph structure. For easy evaluation, a CPPN's input and output nodes may be named:

from pytorch_neat.cppn import create_cppn

[delta_w_node] = create_cppn(
    genome,
    config,
    ["x_in", "y_in", "x_out", "y_out", "pre", "post", "w"],
    ["delta_w"],
)

delta_w = delta_w_node(x_in=some_array, y_in=other_array, ...)

We also provide some infrastructure for running networks in Gym environments:

from pytorch_neat.multi_env_eval import MultiEnvEvaluator
from pytorch_neat.recurrent_net import RecurrentNet

def make_net(genome, config, batch_size):
    return RecurrentNet.create(genome, config, batch_size)


def activate_net(net, states):
    outputs = net.activate(states).numpy()
    return outputs[:, 0] > 0.5

def make_env():
    return gym.make("CartPole-v0")

evaluator = MultiEnvEvaluator(
    make_net, activate_net, make_env=make_env, max_env_steps=max_env_steps, batch_size=batch_size,
)

fitness = evaluator.eval_genome(genome)

This allows multiple environments to run in parallel for efficiency.

A simple example using NEAT to solve the Cartpole can be run like this:

python3 -m examples.simple.main

And a simple example using Adaptive HyperNEAT to partially solve a T-maze can be run like this:

python3 -m examples.adaptive.main

Author / Support

PyTorch NEAT is extended from Python NEAT by Alex Gajewsky.

Questions can be directed to joel.lehman@uber.com.

Nearby in the ranking
Similar items