Encog is a pure-Java/C# machine learning framework that I created back in 2008 to support genetic programming, NEAT/HyperNEAT, and other neural network technologies. Originally, Encog was created to support research for my master’s degree and early books. The neural network aspects of Encog proved popular, and Encog was used by a number of people and is cited by 952 academic papers in Google Scholar. I created Encog at a time when there were not so many well developed frameworks, such as TensorFlow, Keras, DeepLearning4J, and many others (these are the frameworks I work with the most these days for neural networks).
Encog continues to be developed (and bugs fixed) for the types of models not covered by the large frameworks and to provide a pure non-GPU Java/C# implementation of several classic neural networks. Because it is pure Java, the source code for Encog can be much simpler to adapt for cases where you want to implement the neural network yourself from scratch. Some of the less mainstream technologies supported by Encog include NEAT, HyperNEAT, and Genetic Programming. Encog has minimal support for computer vision. Computer vision is a fascinating topic, but just has never been a research interest of mine.
Encog supports a variety of advanced algorithms, as well as support classes to normalize and process data. Machine learning algorithms such as Support Vector Machines, Neural Networks, Bayesian Networks, Hidden Markov Models, Genetic Programming and Genetic Algorithms are supported. Most Encog training algorithms are multi-threaded and scale well to multicore hardware.
Encog continues to be developed, and is used in my own research, for areas that I need Java and are not covered by Keras. However, for larger-scale cutting edge work, where I do not need to implement the technology from scratch, I make use of Keras/TensorFlow for my own work.
Encog Documentation
To learn about Encog, start here:
- Encog Quick Start Guide
- Encog Contributor Guide
- Encog User Guide (Download for Java or C#, or Buy Paperback or Kindle)
- Encog Developer Guide
- Encog Facebook
- The Flatspot Problem
- Encog GPU/CUDA Support - Note: Encog does not currently support GPU processing.
- Encog NEAT Neural Networks - Information about Encog’s support of NEAT and HyperNEAT.
Encog Java Links
- Encog Java Core GitHub - Encog framework.
- Encog Java Examples GitHub - Examples for the Encog framework.
- Encog Maven Information - Information about how to add Encog to Maven, Gradle, etc.
- Encog Java Downloads/Releases - Releases and binary files (if you do not want to use Gradle/Maven).
- Encog Java Issues - View the current issues or report an issue yourself.
Encog .Net Links
- Encog .Net Core/Examples GitHub - Encog core framework and examples in C#.
- Encog NuGet Information - Information about how to add Encog via NuGet.
- Encog .Net Downloads/Releases - Releases and binary files (if you do not want to use NuGet).
- Encog .Net Issues - View the current issues or report an issue yourself.
Other Encog Info
- How to Cite Encog (APA, BibTex, EndNote, MLA)
- Encog Stackoverflow Tag
- Encog Javadoc (v3.3)
- Encog C# XMLDoc (v3.3)
Experimental/Unsupported Versions of Encog
- Encog for Silverlight - Silveright itself is deprecated, I am leaving the REPO up incase it is needed.
- Encog for C/C++ - This was a simple experiment that I wrote to test Encog with CUDA.
- Encog for Javascript - I mainly make use of this for web based demos.