All Projects → mpatacchiola → pyERA

mpatacchiola / pyERA

Licence: MIT license
Python implementation of the Epigenetic Robotic Architecture (ERA). It includes standalone classes for Self-Organizing Maps (SOM) and Hebbian Networks.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to pyERA

sparse-som
Efficient Self-Organizing Map for Sparse Data
Stars: ✭ 17 (-75%)
Mutual labels:  som, self-organizing-map
DESOM
🌐 Deep Embedded Self-Organizing Map: Joint Representation Learning and Self-Organization
Stars: ✭ 76 (+11.76%)
Mutual labels:  som, self-organizing-map
SelfOrganizingMap-SOM
Pytorch implementation of Self-Organizing Map(SOM). Use MNIST dataset as a demo.
Stars: ✭ 33 (-51.47%)
Mutual labels:  som, self-organizing-map
Deep-Learning-A-Z-Hands-on-Artificial-Neural-Network
Codes and Templates from the SuperDataScience Course
Stars: ✭ 39 (-42.65%)
Mutual labels:  artificial-neural-networks, self-organizing-map
Data Science Resources
👨🏽‍🏫You can learn about what data science is and why it's important in today's modern world. Are you interested in data science?🔋
Stars: ✭ 171 (+151.47%)
Mutual labels:  artificial-neural-networks
Sparse Evolutionary Artificial Neural Networks
Always sparse. Never dense. But never say never. A repository for the Adaptive Sparse Connectivity concept and its algorithmic instantiation, i.e. Sparse Evolutionary Training, to boost Deep Learning scalability on various aspects (e.g. memory and computational time efficiency, representation and generalization power).
Stars: ✭ 182 (+167.65%)
Mutual labels:  artificial-neural-networks
Cnn Svm
An Architecture Combining Convolutional Neural Network (CNN) and Linear Support Vector Machine (SVM) for Image Classification
Stars: ✭ 170 (+150%)
Mutual labels:  artificial-neural-networks
Java Deep Learning Cookbook
Code for Java Deep Learning Cookbook
Stars: ✭ 156 (+129.41%)
Mutual labels:  artificial-neural-networks
Xtreme-Vision
A High Level Python Library to empower students, developers to build applications and systems enabled with computer vision capabilities.
Stars: ✭ 77 (+13.24%)
Mutual labels:  artificial-neural-networks
pyradox
State of the Art Neural Networks for Deep Learning
Stars: ✭ 61 (-10.29%)
Mutual labels:  artificial-neural-networks
SOMns
SOMns: A Newspeak for Concurrency Research
Stars: ✭ 62 (-8.82%)
Mutual labels:  som
Free Ai Resources
🚀 FREE AI Resources - 🎓 Courses, 👷 Jobs, 📝 Blogs, 🔬 AI Research, and many more - for everyone!
Stars: ✭ 192 (+182.35%)
Mutual labels:  artificial-neural-networks
Continual Learning Benchmark
Evaluate three types of task shifting with popular continual learning algorithms.
Stars: ✭ 245 (+260.29%)
Mutual labels:  artificial-neural-networks
python-neuron
Neuron class provides LNU, QNU, RBF, MLP, MLP-ELM neurons
Stars: ✭ 38 (-44.12%)
Mutual labels:  artificial-neural-networks
Udemy derinogrenmeyegiris
Udemy Derin Öğrenmeye Giriş Kursunun Uygulamaları ve Daha Fazlası
Stars: ✭ 239 (+251.47%)
Mutual labels:  artificial-neural-networks
Perfect Tensorflow
TensorFlow C API Class Wrapper in Server Side Swift.
Stars: ✭ 166 (+144.12%)
Mutual labels:  artificial-neural-networks
Echotorch
A Python toolkit for Reservoir Computing and Echo State Network experimentation based on pyTorch. EchoTorch is the only Python module available to easily create Deep Reservoir Computing models.
Stars: ✭ 231 (+239.71%)
Mutual labels:  artificial-neural-networks
EmbedSOM
Fast embedding ot multidimensional datasets, great for cytometry data
Stars: ✭ 22 (-67.65%)
Mutual labels:  som
kohonen-maps
Implementation of SOM and GSOM
Stars: ✭ 62 (-8.82%)
Mutual labels:  som
Dino-AI
An AI to teach Google Chrome's dinosaur to jump obstacles.
Stars: ✭ 15 (-77.94%)
Mutual labels:  artificial-neural-networks

What is pyERA?

pyERA is a python implementation of the Epigenetic Robotic Architecture (ERA). It can be used to create single SOMs or more complex systems interconnected with Hebbian weights. The main features of this library can be summarized as follow:

  • Estremely lightweight
  • Self-contained, the only external library required is numpy
  • Standalone classes for Self-Organizing Maps and Hebbian Leaning
  • It provides utilities for decaying learning rate and radius
  • Well documented, different examples are provided
  • Open source (MIT License)

Because the different modules are standalone you can use pyERA for building SOM using only the som.py class. Feel free to fork the project and add your own stuff. Any feedback is appreciated.

What is a Self-Organizing Map?

A Self-Organizing Map (SOM) is a type of artificial neural network that is trained using unsupervised learning to produce a low-dimensional (typically two-dimensional), discretized representation of the input space of the training samples, called a map. SOMs are different from other artificial neural networks as they apply competitive learning as opposed to error-correction learning (such as backpropagation with gradient descent), and in the sense that they use a neighborhood function to preserve the topological properties of the input space [wiki]

What is ERA?

The Epigenetic Robotic Architecture (ERA) is a hybrid behavior-based robotics and neural architecture purposely built to implement embodied principles in cognitive development. This architecture has been already tested in a variety of cognitive and developmental tasks directly modeling child psychology data. The ERA architecture uses a behaviour-based subsumption mechanism to handle the integration of competing sensorimotor input. The learning system is based on an ensemble of pre-trained SOMs connected via Hebbian weights. The basic unit of the ERA architecture is formed by the structured association of multiple self-organizing maps. Each SOM receives a subset of the input available to that unit and is typically partially prestabilized using random input distributed across the appropriate ranges for those inputs. In the simplest case, the ERA architecture comprises of multiple SOMs, each receiving input from a different sensory modality, and each with a single winning unit. Each of these winning units is then associated to the winning unit of a special “hub” SOM using a bidirectional connection weighted with positive Hebbian learning.

In some cases, one of the existing input SOMs can be selected as the hub but more often the hub SOM will provide pattern recognition over the activity of the other SOMs in the ERA unit. Having established the winning units in the various SOMs via a forward pass, the activity within the ERA unit then spreads via the bidirectional Hebbian connections, allowing the presence of features or concepts in one map to prime features or concepts in the other maps/conceptual spaces. For more information about the architecture see the reference section at the bottom of this page.

Installation

Download the repository from [here] or clone it using git:

git clone https://github.com/mpatacchiola/pyERA.git

To install the package you have to run the setup.py script (it may require root privileges):

python setup.py install

Done! pyERA is installed and ready to be used. Give a look to the examples folder. The examples work without any intervention on the code. The only thing you need to do is to open a new terminal and set the examples folder as current directory:

cd pyERA/examples/

The examples require matplotlib (for the visualization of the results), which can be installed from terminal:

sudo apt-get install python-matplotlib

Examples

  • How to save and load a Self-Organizing Map [code]

  • How to train a Self-Organizing Map to classify pixel locations [code] [video]

  • How to pre-train a Self-Organizing Map to classify six different RGB colors [code] [video]

  • How to visualize the Euclidean distance between input vector and weights of a Self-Organizing Map [code] [video] [wiki]

References

Morse, A. F., De Greeff, J., Belpeame, T., & Cangelosi, A. (2010). Epigenetic robotics architecture (ERA). IEEE Transactions on Autonomous Mental Development, 2(4), 325-339. [pdf]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].