• This repository has been archived on 11/Dec/2018
  • Stars
    star
    69
  • Rank 436,897 (Top 9 %)
  • Language
    Go
  • License
    GNU General Publi...
  • Created over 7 years ago
  • Updated almost 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

NEAT (NeuroEvolution of Augmenting Topologies) implemented in Go

alt text GoDoc Go Report Card cover.run go

CURRENTLY NOT WORKING! There will be a further notice when it's updated.

NEAT (NeuroEvolution of Augmenting Topologies) is a neuroevolution algorithm by Dr. Kenneth O. Stanley which evolves not only neural networks' weights but also their topologies. This method starts the evolution process with genomes with minimal structure, then complexifies the structure of each genome as it progresses. You can read the original paper from here.

Installation

To install neat run the following:

$ go get -u github.com/jinyeom/neat

Usage

This NEAT package is as simple as plug and play. All you have to do is to create a new instance of NEAT, given the configuration from a JSON file, for which the template is provided below, and an evaluation method of a neural network, and run.

{
	"experimentName": "XOR Test",
	"verbose": true,
	"numInputs": 3,
	"numOutputs": 1,
	"fullyConnected": false,
	"numGenerations": 50,
	"populationSize": 100,
	"initFitness": 9999.0,
	"minimizeFitness": true,
	"survivalRate": 0.5,
	"stagnationLimit": 5,
	"ratePerturb": 0.2,
	"rateAddNode": 0.2,
	"rateAddConn": 0.2,
	"rateMutateChild": 0.5,
	"distanceThreshold": 20.0,
	"coeffUnmatching": 1.0,
	"coeffMatching": 1.0,
	"cppnActivations": [],
}

Now that you have the configuration JSON file is ready as config.json, we can start experiment with NEAT. Below is an example XOR experiment.

package main

import (
	"log"
	"math"

	// Import NEAT package after installing the package through
	// the instruction provided above.
	"github.com/jinyeom/neat"
)

func main() {

	// First, create a new instance of Config from the JSON file created above.
	// If there's a file import error, the program will crash.
	config, err := neat.NewConfigJSON("config.json")
	if err != nil{
		log.Fatal(err)
	}

	// Then, we can define the evaluation function, which is a type of function
	// which takes a neural network, evaluates its performance, and returns some
	// score that indicates its performance. This score is essentially a genome's
	// fitness score. With the configuration and the evaluation function we
	// defined, we can create a new instance of NEAT and start the evolution 
	// process.
	neat.New(config, neat.XORTest()).Run()
}

License

This package is under GNU General Public License.

More Repositories

1

d2rt

Enabling TensorRT for Detectron2
Python
9
star
2

torchrt

Simple tool for PyTorch >> ONNX >> TensorRT conversion
Python
7
star
3

imsegment

MATLAB implementation of k-means image segmentation
MATLAB
5
star
4

PageRank

C++ implementation of the PageRank algorithm
C++
5
star
5

backpropamine

PyTorch Implementation of Backpropamine (Miconi et al., 2018)
Jupyter Notebook
4
star
6

path-tracer

Go implementation of the Monte Carlo path tracer
Go
3
star
7

dreamer

PyTorch Lightning implementation of the world model in DreamerV2
Python
3
star
8

evosoro3

Soft Robot Simulator Using Voxelyze in Python 3
C++
3
star
9

jinyeom

3
star
10

imagen

Image Generation via Differentiable Pattern Producing Network (DPPN)
Go
3
star
11

lsh-knn

[Experiment] Approximate k-nearest neighbors (k-NN) with locality-sensitive hashing (LSH)
Jupyter Notebook
3
star
12

general-bipedal-walker

Generalized BipedalWalker-v2 with domain randomization
Python
2
star
13

esp

ESP (Enforced Sub-Population) implementation in Go
Go
2
star
14

metameric-ga

python implementation of Metameric GA
Python
2
star
15

chutoro

Chutoro programming language
Go
2
star
16

ppo

PyTorch implementation of Proximal Policy Optimization (PPO) (Schulman et al., 2017)
Python
1
star
17

metis

Tools for managing experiments and notes in a dedicated environment
Python
1
star
18

npne

NumPy NeuroEvolution
Python
1
star
19

torchlife

PyTorch implementation of Conway's Game of Life
Python
1
star
20

imhoughc

MATLAB implementation of Hough transform for circle detection
MATLAB
1
star
21

PL-Final

PL Final Project: Scala DSL for Automata
Scala
1
star
22

tome

Time Series DBMS in Rust
1
star
23

mud

[DEPRECATED] Moved to https://github.com/jinyeom/helloworld
Go
1
star
24

cnkv

Let's learn Cloud Native by building a simple key-value store.
1
star
25

world-model

PyTorch Implementation of World Models (Ha & Schmidhuber, 2018) for BipedalWalker-v2
Python
1
star
26

micrograph

A tiny graph processing engine based on message passing
1
star
27

Computational-Intelligence-Research

Computational Intelligence Research
Python
1
star
28

dh18

Texas Datahack 2018
Jupyter Notebook
1
star
29

glox

Go implementation of the Lox interpreter (from Crafting Interpreters)
1
star
30

openmp-bellman-ford

Parallel Bellman-Ford for SSSP with OpenMP
C++
1
star
31

anigo

Anigo - Looped Image Generation with a Randomly Created CPPN
Go
1
star
32

l0-regularization

PyTorch implementation of L0 Regularization (Louizos et al., 2018)
Python
1
star
33

kv

Remote in-memory key-value store
Go
1
star
34

lsm-tree

Log-structured merge-tree (LSM tree)
Go
1
star
35

smol

PyTorch implementation of YOLOv4-Tiny
Python
1
star