Keras ist eine Open-Source-Bibliothek, die in der Sprache Python geschrieben ist und eine rasche Implementierung neuronaler Netzwerke für das Deep Learning ermöglicht. Es kann gemeinsam mit TensorFlow, Theano oder anderen Frameworks verwendet werden.
Steigen wir direkt ein!
Was ist Keras?
Diese Open-Source-Bibliothek wurde zum größten Teil von Google-Programmierer François Chollet entwickelt und entstand im Zuge des sogenannten ONEIROS-Projekts (Abkürzung für: Open-ended Neuro-Electronic Intelligent Robot Operating System).
Es ist also eine Open-Source basierte Bibliothek, vorgesehen für schnelle Implementierung eines neuronalen Netzwerks. Sie dient nicht als Deep-Learning-Framework, eher als Interface für solche Frameworks und ist auf Frameworks für maschinelles Lernen einsetzbar.
High-Level-API für Deep Learning
Mit der Bibliothek steht ein High-Level-API zur Vereinfachung der Programmierung neuronaler Netze bereit. Der Fokus liegt auf der schnellen Bereitstellung der neuronalen Netze zu experimentellen Zwecken. Dabei werden rekurrente und auch konvolutionale Netzwerke, CPUs (Central Processing Units) sowie GPUs (Graphics Processing Units) unterstützt.
Die zentralen Merkmale der Bibliothek sind Einfachheit, Erweiterbarkeit und Modularität. Neuronale Netze können mit den bereitgestellten Lösungen erstellt und konfiguriert werden, ohne dass man sich detailliert mit den zugrunde liegenden Backends beschäftigen muss. TensorFlow unterstützt Keras direkt in seiner Kernbibliothek. Der Name geht übrigens auf das griechische Wort für Horn zurück und spielt auf Homers Odyssee an.
Welches sind die hauptsächlichen Vorteile von Keras?
Die Verwendung der Bibliothek zusammen mit den Frameworks für maschinelles Lernen bietet die folgenden Vorteile:
- Schnelles und leichtes Erstellen neuronaler Netze.
- Benutzerfreundlichkeit, Erweiterbarkeit und Modularität.
- Unterstützung der rekurrenten und auch konvolutionalen Netzwerke nebst Kombinationen aus beiden.
- Unterstützung der GPUs, CPUs sowie des Multi-Input-Trainings und Multi-Output-Trainings.
Wesentliche Prinzipien der Entwicklung
Eines der wichtigsten Prinzipien ist die Ausrichtung auf Menschen statt auf Maschinen. Benutzerfreundlichkeit steht daher im Mittelpunkt. Bei Fehlern erhalten Nutzer ein ausführliches Feedback und damit die Möglichkeit, Probleme leicht zu beheben.
Das zentrale Designprinzip ist Modularität. Die voll konfigurierbaren Module sind beliebig kombinierbar. Mit der Kombination der Module für neuronale Layer, Aktivierungsfunktionen, Kostenfunktionen oder Initialisierungsschemata können schnell neue Modelle erschaffen werden. Diese können leicht als neue Funktionen oder Klassen hinzugefügt werden und sind im Python-Code beschrieben, welcher kompakt und einfach zu debuggen ist.
Erweiterungen bei Keras2
Nach Veröffentlichung der ersten Variante im Jahr 2015 gibt es inzwischen die zweite Hauptversion. Im Vergleich zur ersten Version kann die API einfacher genutzt werden. Es ist inzwischen als Teil der Machine-Learning-Bibliothek im Framework TensorFlow verfügbar. Grundsätzlich gibt es zwei Implementierungen: eine externe, einfach erweiterbare Framework-Bibliothek und eine interne Umsetzung in der Bibliothek.
Unterstützung diverser Plattformen
Als besondere Stärke der Bibliothek lassen sich definierte Modelle auf verschiedenen Plattformen bereitstellen. Handys und Tablets von Apple mit dem Betriebssystem iOS, können über Apples CoreML unterstützt werden.
Für die Androidgeräte gibt es die TensorFlow-Android-Runtime-Umgebung. Wenn Modelle browserbasiert zur Verfügung gestellt werden, kommen JavaScript basierte Laufzeitumgebungen (etwa Keras.js und WebDNN) zur Anwendung. Des Weiteren sind nutzbar: die Google Cloud mit TensorFlow-Serving, der Raspberry Pi und die Java Virtual Machine mit dem DL4J Modelimport von SkyMind.
Verwendung von Keras
Gegen Ende des Jahres 2017 gab es schon mehr als 200.000 Nutzer. Die Bibliothek wird für Forschungsprojekte und auch in der Industrie für professionelle Anwendungen eingesetzt.
Neben TensorFlow zählt Keras zu den beliebtesten Bibliotheken für Deep-Learning-Anwendungen. Auch bei Anwendungen von Netflix, Uber, Instacard und Yelp sind Keras-Funktionen zu finden. Start-up-Unternehmen, die Deep Learning in ihren Produkten einsetzen, nutzen Keras. Wissenschaftliche Organisationen wie CERN oder NASA verwenden die beliebte Deep-Learning-Bibliothek ebenfalls.
Keras Beispiel: Bilderkennung
Einfaches Beispiel in Keras ist die Bilderkennung von handgeschriebenen Ziffern (MNIST Datensatz). Hier hat das High-Level-API Keras große Vorteile, da es die Arbeit vereinfacht. Nur in ein paar Funktionen können wir ein Deep Learning Modell in Keras zur Bilderkennung bauen.
Die Beispiel MNIST-Daten können wir einfach über TensorFlow importieren. Diese Daten nutzen wir im Folgenden, um die Handschriftlichen Zahlen durch ein künstliches Neuronales Netz zu erkennen. Mit folgendem Code geht das ganz einfach:
# import von TF
import tensorflow as tf
# Handgeschriebene Ziffern laden
mnist = tf.keras.datasets.mnist
# Aufteilung in Training- und Testset
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
# TF Bilderkennungsmodell
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(512, activation=tf.nn.relu),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
# Crossentropy für die 10 Zahlen Klassen
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# Modellfitting und Evaluation
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)
Nach der 5 Epoche sollte dieses sehr einfache künstliche Neuronale Netz eine Genauigkeit von ca. 98 % haben.
Lassen Sie uns sprechen und Ihr Potenzial entdecken.
Ob und wie künstliche Intelligenz Ihnen weiterhelfen kann, können Sie in einem ersten, unverbindlichen Gespräch mit uns herausfinden.
In diesem Gespräch erfahren Sie:
- Wie Ihr Use-Case technisch am besten umgesetzt werden kann
- Wie wir maximal sicher mit Ihren Kundendaten umgehen
- Wie lange wir für die Umsetzung benötigen und wie ein konkreter Projektplan aussehen könnte