Übersicht zu aktuellen Machine-Learning Frameworks

Für die effektive Umsetzung Neuronaler Netze stehen inzwischen mehrere Open Source Machine-Learning Frameworks (auch: Deep Learning Frameworks) zur Verfügung. Diese erlauben einen schnellen Einstieg in die Implementierung eigener Projekte, wie er vor wenigen Jahren noch undenkbar war.

  • TensorFlow (Google, 2015): geschrieben in C++ und Python, das derzeit mit Abstand populärste Open Source Machine-Learning Framework, seit Oktober 2019 in der Version 2.0 mit neuer Architektur und überarbeiteter API, genutzt u.a. von DeepMind, Uber, AirBnB und Dropbox. TensodFlow bietet Bindings für eine große Anzahl an Programmiersprachen – neben Python auch R, C/C++, Java, Go, Swift und JavaScript.
  • PyTorch (Facebook, 2016): Python Version von Torch (2002) , genutzt u.a. von Twitter und Salesforce, geschätzt insbesondere wegen seiner Flexibilität und der Unterstützung dynamischer Netze. Das früher eigenständige Framework Caffee2 (2017) ist seit 2018 in PyTorch integriert.
  • MXNet (Apache, 2015): unterstützt eine große Bandbreite an Sprachen, wie Python, Julia, C++, R, JavaScript
  • CNTK (Microsoft, 2016): Microsoft Cognitive Toolkit; unterstützt Python, C++, C#, und Java; genutzt u.a. für Skype, Xbox, Bing und Cortana; bietet wie TensorFlow Bindings für relativ viele Sprachen, ist aber in der Community deutlich geringer verbreitet.
  • Theano (2007): Python Library, entwickelt vom MILA Lab an der Université de Montréal, Support und Weiterentwicklung sind inzwischen eingestellt.

Die Keras API (2015) bietet eine einheitliche und einfache Schnittstelle auf die unterschiedlichen Architekturen von TensorFlow, CNTK und Theano. Die Berechnungen erfolgen wahlweise über CPU (unter Nutzung der low-level Bibliothek für tensor operations ‚Eigen‘) oder GPU (unter Nutzung der NVIDIA CUDA Deep Neural Network Bibliothek ‚cuDNN‘). Die High-Level-API von Keras erlaubt eine noch schnellere Implementierung komplexer Netze und Anwendungen resp. einen noch einfacheren Einstieg für Einsteiger als die unterliegenden Frameworks selbst.