Neuroevolution of Neural Network Architectures Using CoDeepNEAT and
  Keras
  Machine learning is a huge field of study in computer science and statistics
dedicated to the execution of computational tasks through algorithms that do
not require explicit instructions but instead rely on learning patterns from
data samples to automate inferences. A large portion of the work involved in a
machine learning project is to define the best type of algorithm to solve a
given problem. Neural networks - especially deep neural networks - are the
predominant type of solution in the field. However, the networks themselves can
produce very different results according to the architectural choices made for
them. Finding the optimal network topology and configurations for a given
problem is a challenge that requires domain knowledge and testing efforts due
to a large number of parameters that need to be considered. The purpose of this
work is to propose an adapted implementation of a well-established evolutionary
technique from the neuroevolution field that manages to automate the tasks of
topology and hyperparameter selection. It uses a popular and accessible machine
learning framework - Keras - as the back-end, presenting results and proposed
changes concerning the original algorithm. The implementation is available at
GitHub (https://github.com/sbcblab/Keras-CoDeepNEAT) with documentation and
examples to reproduce the experiments performed for this work.
