encog-dotnet-core alternatives and similar packages
Based on the "Machine Learning and Data Science" category.
Alternatively, view encog-dotnet-core alternatives based on common mentions on social networks and blogs.
-
ML.NET
Cross-platform open-source machine learning framework which makes machine learning accessible to .NET developers. -
Accord.NET
Machine learning framework combined with audio and image processing libraries (computer vision, computer audition, signal processing and statistics). -
TensorFlow.NET
.NET Standard bindings for Google's TensorFlow for developing, training and deploying Machine Learning models in C# and F#. -
AForge.NET
Framework for developers and researchers in the fields of Computer Vision and Artificial Intelligence (image processing, neural networks, genetic algorithms, machine learning, robotics). -
F# Data
F# type providers for accessing XML, JSON, CSV and HTML files (based on sample documents) and for accessing WorldBank data -
Deedle
Data frame and (time) series library for exploratory data manipulation with C# and F# support -
Accord.NET Extensions
Advanced image processing and computer vision algorithms made as fluent extensions. -
numl
Designed to include the most popular supervised and unsupervised learning algorithms while minimizing the friction involved with creating the predictive models. -
Spreads
Series and Panels for Real-time and Exploratory Analysis of Data Streams. Spreads library is optimized for performance and memory usage. It is several times faster than other open source projects. -
Catalyst
Catalyst Cross-platform Natural Language Processing (NLP) library inspired by spaCy, with pre-trained models, out-of-the box support for training word and document embeddings, and flexible entity recognition models. Part of the SciSharp Stack -
Infer.NET
A framework for running Bayesian inference in graphical models. It can also be used for probabilistic programming. [Proprietary] [Free] [Research] -
SciSharp STACK
A rich machine learning ecosystem for .NET created by porting the most popular Python libraries to C#.
Pixel-Perfect Multi-Platform Applications with C# and XAML
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of encog-dotnet-core or a related project?
README
Note: The name "Encog Core" causes some confusion with Microsoft .Net Core. This version of Encog has nothing to do with Microsoft's .Net Core release. I am tempted to change the name of the Repo and NuGet, but that would be a massive breaking change at this point.
Encog Machine Learning Framework
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.
Simple C# XOR Example in Encog
using System;
using ConsoleExamples.Examples;
using Encog.Engine.Network.Activation;
using Encog.ML.Data;
using Encog.ML.Data.Basic;
using Encog.ML.Train;
using Encog.Neural.Networks;
using Encog.Neural.Networks.Layers;
using Encog.Neural.Networks.Training.Propagation.Back;
using Encog.Neural.Networks.Training.Propagation.Resilient;
namespace Encog.Examples.XOR
{
public class XORHelloWorld : IExample
{
/// <summary>
/// Input for the XOR function.
/// </summary>
public static double[][] XORInput = {
new[] {0.0, 0.0},
new[] {1.0, 0.0},
new[] {0.0, 1.0},
new[] {1.0, 1.0}
};
/// <summary>
/// Ideal output for the XOR function.
/// </summary>
public static double[][] XORIdeal = {
new[] {0.0},
new[] {1.0},
new[] {1.0},
new[] {0.0}
};
public static ExampleInfo Info
{
get
{
var info = new ExampleInfo(
typeof(XORHelloWorld),
"xor",
"Simple XOR with backprop, no factories or helper functions.",
"This example shows how to train an XOR with no factories or helper functions.");
return info;
}
}
#region IExample Members
/// <summary>
/// Program entry point.
/// </summary>
/// <param name="app">Holds arguments and other info.</param>
public void Execute(IExampleInterface app)
{
// create a neural network, without using a factory
var network = new BasicNetwork();
network.AddLayer(new BasicLayer(null, true, 2));
network.AddLayer(new BasicLayer(new ActivationSigmoid(), true, 3));
network.AddLayer(new BasicLayer(new ActivationSigmoid(), false, 1));
network.Structure.FinalizeStructure();
network.Reset();
// create training data
IMLDataSet trainingSet = new BasicMLDataSet(XORInput, XORIdeal);
// train the neural network
IMLTrain train = new ResilientPropagation(network, trainingSet);
int epoch = 1;
do
{
train.Iteration();
Console.WriteLine(@"Epoch #" + epoch + @" Error:" + train.Error);
epoch++;
} while (train.Error > 0.01);
// test the neural network
Console.WriteLine(@"Neural Network Results:");
foreach (IMLDataPair pair in trainingSet)
{
IMLData output = network.Compute(pair.Input);
Console.WriteLine(pair.Input[0] + @"," + pair.Input[1]
+ @", actual=" + output[0] + @",ideal=" + pair.Ideal[0]);
}
}
#endregion
}
}