Aus Linux-Magazin 04/2020

KI-Schnupperkurs: Das KI-Framework Tensorflow

© besjunior, 123RF

Worum es bei Tensorflow geht und weshalb das Schlagwort gegenwärtig so häufig fällt, erläutert dieser Artikel im Detail.

Wer in der IT unterwegs ist und sich im KI-Umfeld bewegt, dem kommt regelmäßig der Begriff Tensorflow unter. Doch viele Admins wissen kaum mehr, als dass Tensorflow irgend etwas mit KI zu tun hat. Da liest man, dass es sich eigne, um neuronale Netze zu programmieren – aber was soll ein neuronales Netz überhaupt sein, und welche technischen Ansätze gibt es dafür?

Faktisch handelt es sich bei Tensorflow um eines der mächtigsten Frameworks im Kontext künstlicher Intelligenz. Im Gegensatz zu manchen abstrakten Projekten aus den Forschungslaboren der Universitäten lässt es sich zudem schon heute konkret nutzen. Dieser Artikel wagt eine Einführung in das Thema: Welche Funktionen bietet Tensorflow, und in welchem Zusammenhang kann man es sinnvoll einsetzen?

Die Basics

Die englischsprachige Wikipedia beschreibt Tensorflow als eine Bibliothek für das Verarbeiten von Datenströmen, die zudem auf Basis der Differenzialrechnung arbeitet. Wer nicht gerade zur Fraktion Mathe-LK gehört und Diplom-Informatiker ist, versteht anhand dieser Beschreibung aber nur schwer, was es mit Tensorflow eigentlich auf sich hat.

Sinnvoller ist es, Tensorflow aus einer anderen Perspektive zu betrachten: Was leistet das Programm für Entwickler, welche Probleme hilft es zu lösen? Um das zu verstehen, gilt es aber, zunächst einige weitere Fachausdrücke zu klären: Was bedeutet im technischen Sinn eigentlich Machine Learning, was ist Deep Learning, und wie funktioniert ein neuronales Netz? All diese Begriffe tauchen im Tensorflow-Kontext regelmäßig auf, und ohne ihr Verständnis erschließt sich Tensorflow nicht.

Neuronale Netze simulieren Neuronen

Neuronale Netze haben diesen Namen erhalten, weil sie die Neuronenverbindungen, wie sie in Gehirnen vorkommen, in stark vereinfachter Form nachahmen. Dort funktioniert Informationsverarbeitung auf Basis von Zellen, die sich im Hirn immer wieder neu miteinander verbinden, abhängig von Erfahrungen und Erlebnissen. Machine Learning nutzt ein ähnliches, allerdings extrem vereinfachtes Modell: Künstliche Neuronen sind in einem Netzwerk mit anderen künstlichen Neuronen verbunden. Anhand von eigenen Erkenntnissen verbinden sich diese künstlichen Neuronen dann von alleine neu.

Doch wo kommen diese eigenen Erkenntnisse her? Hält man sich vor Augen, dass die Funktionsweise des menschlichen Gehirns bis heute nicht abschließend erforscht ist, wirkt es wagemutig, dessen Funktionen in Software nachbauen zu wollen. Wodurch entsteht also Input? Erkenntnisse in Computern und mithin auch die Daten, anhand derer neuronale Netze lernen, ergeben sich stets als Resultat mathematischer Berechnungen. Entsprechend agieren die künstlichen Neuronen als Gegenstück zu ihren echten Vorbildern auch als mathematische Referenz.

Stellt man sich ein neuronales Netz als Graph vor, so bilden die einzelnen Neuronen dessen Knoten und die Verbindungen die Kanten. Als Graph gilt hier im Sinne der Graphentheorie eine Struktur, die verschiedene Objekte und ihre Relationen untereinander abbildet. Komplexe Probleme, so die Theorie, lassen sich stets in einzelne Objekte und in die Beziehungen dazwischen aufteilen und darstellen. Letztlich fungiert die Graphentheorie also als Werkzeug, um die Zusammenhänge zwischen vielen Faktoren zu modellieren.

Ein- und Ausgabe

Die einzelnen Elemente innerhalb eines Graphen, wie er in neuronalen Netzen zum Einsatz kommt, sind durch mehrere Eigenschaften definiert. So kann jeder Knoten innerhalb eines Graphen mindestens eine Quelle haben, aus der er Informationen bezieht, sowie ein Ziel, an das er Informationen sendet (auch Senke genannt). Die Knoten selbst agieren im neuronalen Netz als informationsverarbeitende Einheit, und zwar durch das Ausführen einer Berechnung. Berechnungen ergeben aber nur Sinn, wenn es Material gibt, das sich verarbeiten lässt. Zu einem neuronalen Netz gehört deshalb immer auch ein Datensatz, den der zuständige Entwickler dem Netz als Grundlage für seine Arbeit zur Verfügung stellt.

Grundsätzlich kennen neuronale Netze zwei Betriebsmodi. Die einfachere Variante beschränkt sich darauf, das bestehende Modell lediglich auf neue Input-Daten anzuwenden. Hier geht es um die Analyse bisher unbekannter Daten; in einem solchen Szenario dienen neuronale Netze also eher dem Big-Data-Prinzip, sie werten Daten aus.

Aus IT-Sicht viel spannender und tatsächlich Machine Learning ist der andere Modus: die Trainingsphase, die der Anwendung vorausgehen muss. Dabei vergleicht das Netz seine Ergebnisse mit einer Zielvorgabe für jeden Datensatz, die ein Mensch zuvor festgelegt haben muss. Anhand dieser Zielvorgabe bewertet das Netz die Qualität seiner Berechnungen und gewichtet entsprechend die Verbindungen zwischen den einzelnen Knoten des neuronalen Netzes neu.

Besteht die Aufgabe etwa darin, aus einer Sammlung von Fotos diejenigen zu identifizieren, die Hunde zeigen, sollte das Netz im zehnten Lauf wesentlich mehr Hunde korrekt erkennen als nach dem ersten, weil es immer wieder auf Fehlklassifikationen aufmerksam wurde und sie korrigiert hat. Am Ende der Läufe gilt das neuronale Netz als trainiert.

Das besondere Detail dabei: Neuronale Netze erhalten keine expliziten Anweisungen dafür, welche konkreten Maßnahmen zu besseren Ergebnissen führen. Sie verstärken stattdessen selbstständig solche Gewichtungen, die zu besseren Ergebnissen führen, und schwächen Gewichtungen, die Fehler zur Folge hatten.

Notwendige Vorarbeit

Es liegt auf der Hand, dass es keine triviale Aufgabe darstellt, eine Umgebung zu bauen, die neuronale Netze spinnen und die nötigen Kalkulationen dafür gut und zuverlässig vornehmen kann. Es wäre zudem nicht sinnvoll, würde jede Forschungsinstitution ihre vollständig eigene KI-Implementierung bauen, denn wie bereits beschrieben, stehen viele KI-Ansätze vor ähnlichen Problemen und verwenden vergleichbare Methoden, um ans Ziel zu gelangen.

Das ist nicht neu: In der IT gibt es ebenfalls Fragestellungen, die selbst in ganz unterschiedlichen Projekten immer wieder auftreten. Die Antworten darauf bieten Software-Bibliotheken, die Funktionen einmal implementieren und sich dann in anderen Umgebungen einbinden lassen. Wer solche Bibliotheken in eigenen Programmen verwendet, erspart sich viel Aufwand und sorgt außerdem für einen höheren Standardisierungsgrad. Das wiederum reduziert die Kosten für die Entwicklung und die Pflege von Software.

Die Idee hinter Tensorflow lässt sich vor diesem Hintergrund leicht erfassen: Tensorflow versteht sich als eine KI-Bibliothek, die Forscher und Entwickler mit verschiedenen Daten füttern können, um an eine KI und neuronale Netze zu gelangen. Das erspart faktisch den Aufwand, eine KI-Umgebung für den Einzelfall zu schreiben.

Datenströme als Grundlage

Praktisch wendet Tensorflow das bereits angesprochene Graphenmodell an, um zu mathematischen Kalkulationen zu kommen. Es bietet Entwicklern die Möglichkeit, Graphen zu bauen, deren Daten aus Datenströmen (“flows”) stammen. Jeder Knoten in einem Tensorflow-Netz ist eine mathematische Operation, die die eingehenden Daten in spezifischer Art und Weise verändert, bevor sie weiter durch das neuronale Netz migrieren. Die Verbindungen zwischen den Knoten stellen dabei multidimensionale Arrays oder Tensoren her.

Die eigentliche Leistung des neuronalen Netzes besteht darin, die Signalstärke, mit der die Daten aus den Streams ihren Weg durch den Graph nehmen, automatisch so zu verbessern, dass ein bestimmtes, vorgegebenes Ziel erreicht wird. Das geschieht durch das automatische Anpassen der Tensoren – und damit ist klar, wie Tensorflow zu seinem Namen kam.

Die große Stärke von Tensorflow ist letztlich, dass es einiges der Komplexität aus dem KI-Umfeld vom Entwickler fernhält. Der Programmierer, der ein konkretes Problem zu lösen hat, muss sich nicht mit den Details eines zu entwickelnden Algorithmus für maschinelles Lernen beschäftigen. Er greift stattdessen auf Tensorflow zu und kombiniert dessen vorgefertigte Funktionen mit eigenem Input-Material, das Tensorflow dann verarbeitet. Tensorflow ist so vielseitig, dass der Entwickler seine Aufgabe nur grundlegend beschreiben muss.

Der zweite Anlauf

Tensorflow kommt von Google und hat damit einen der weltweit potentesten Konzerne im Rücken. Es ist allerdings nicht Googles erster Ausflug in die Welt der künstlichen Intelligenz: Distbelief entstand im Jahr 2011 als rein kommerzielle Plattform und war Googles erster KI-Versuch. Während das Produkt intern umfassend zur Anwendung kam, war es für die externe Verwendung oder auch nur die Freigabe nicht geplant – es handelte sich um eine rein proprietäre Lösung. Man stellte deshalb eine Reihe von Wissenschaftlern und Programmieren an, deren alltägliches Geschäft KI und neuronale Netze waren, und ließ den alten Distbelief-Code umfassend refakturieren.

Das Ergebnis dieser Bemühungen veröffentlichte Google 2017 unter dem Namen Tensorflow. Der Newcomer erfreute sich vom ersten Moment an großer Beliebtheit; viele der heutigen KI-Anwendungsfälle wären ohne Tensorflow praktisch undenkbar. Während man Google attestieren darf, dass “don’t be evil” mittlerweile nicht mehr in allen Abteilungen des Konzerns zu gelten scheint, hat die Firma der Welt durch die Veröffentlichung von Tensorflow zweifelsohne einen Dienst erwiesen (Abbildung 1).

<a href="#artRef-f1">Abbildung 1</a>: Tensorflow und Keras erm&ouml;glichen im Gespann auch Anf&auml;ngern den Einstieg in KI und Deep Learning &ndash; in vielen Facetten. Quelle: Tensorflow

Abbildung 1: Tensorflow und Keras ermöglichen im Gespann auch Anfängern den Einstieg in KI und Deep Learning – in vielen Facetten. Quelle: Tensorflow

Verfasst in Python

Als hilfreich für die Verbreitung von Tensorflow hat sich erwiesen, dass sich die von Entwicklern beizusteuernden Aufgabenbeschreibungen in Python verfassen lassen. Die Beschreibung eines neuronalen Netzes geschieht letztlich also in einer mäßig komplexen Skriptsprache. In Python notiert der Anwender allerdings lediglich die Aufgaben. Unter der Haube werkelt eine auf C++ basierende Engine, die die in Tensorflow durch den Entwickler definierten Aufgaben abarbeitet. Bei den Tensoren und Knoten handelt es sich allerdings allesamt um Python-Objekte, die sich verwenden lassen wie in jeder anderen Python-Applikation auch.

Die Python-Bindings bieten aber nur den ersten Einstieg in Tensorflow; wer stattdessen eine andere Sprache verwenden möchte, hat eine breite Auswahl. Hier kommt Tensorflow zugute, dass es letztlich ein Framework mit definierter API ist, für das sich relativ einfach verschiedene Frontends schreiben lassen. Folglich hat der Entwickler die Wahl zwischen Python, C, C++, Go, Java, Javascript oder Swift. Von Drittanbietern gibt es weitere Implementierungen, etwa in C# oder R. Die Resultate, die Tensorflow produziert, sind letztlich von der genutzten Frontend-Sprache unabhängig.

Ein breites Hardware-Fundament

Bekanntlich eignet sich nicht jede Art von Prozessor für jeden Workload. Das hat sich spätestens herumgesprochen, seit leistungsfähige Grafikkarten mit Nvidia-Chipsätzen über Monate gar nicht oder nur zu absurden Preisen erhältlich waren: Seinerzeit kauften die Betreiber von Bitcoin-Minern solche Boards buchstäblich Lkw-weise auf, um digitales Katzengold zu schürfen. Der relativ banale Grund: Eine GPU arbeitet die Mining-Operationen in Bitcoin viel schneller ab als ein regulärer Prozessor, weil sie für ähnliche Workloads optimiert wurde. Freilich gibt es auch Workloads, bei denen eine normale x86_64-CPU die Nase klar vorn hat.

Tensorflow punktet hier wieder mit Abstraktion: Es beherrscht grundsätzlich den Umgang mit diversen Prozessorarten und ermöglicht mittels entsprechender Anweisung dem Entwickler, einen entsprechenden Workload auf einer bestimmten Ziel-CPU laufen zu lassen. Außerdem kann Tensorflow Multi-CPU-Umgebungen nutzen. Der Entwickler muss sich dann nicht mit der Frage nach den Eigenheiten einzelner CPUs beschäftigen; er schreibt einfach Anweisungen, die Tensorflow hinterher abarbeitet.

Support auch für mobile Geräte

Seitens seiner Entwickler beschränkt sich Tensorflow keineswegs darauf, nur in großen Computing-Umgebungen zum Einsatz zu kommen. Ein explizit genanntes Einsatzszenario für Tensorflow ist deshalb auch der Betrieb auf mobilen und eingebetteten Systemen. Sogar in Browsern lässt Tensorflow sich durch seine Javascript-Anbindung ausführen.

Speziell für mobile Endgeräte haben sich die Entwickler zudem Tensorflow Lite ausgedacht: Diese abgespeckte Version kann entwickelte Modelle zwar ausführen, beherrscht aber den Teil mit der automatischen Erweiterung des neuronalen Netzes nicht. Hier wird letztlich auch auf der Programmebene deutlich, dass die beiden Schritte logisch voneinander getrennt sind: Ein einmal definiertes Muster arbeitet als eigenständiges Modell im Rahmen der KI eine Aufgabe für vorgegebenes Material ab. Der Machine-Learning-Teil ist separat davon zu betrachten und nicht zwangsläufig notwendig. Tensorflow Light hat auf mobilen Geräten schlicht nicht die Ressourcen zur Verfügung, die für den entsprechenden Part neuronaler Netze nötig wären; daher beschränkt das Produkt sich dort auf den beschriebenen Kompromiss.

Erweiterungen mit Tensorflow Hub

Google setzt bekanntlich auf Standardisierung, auch wenn es bevorzugt die eigenen Standards zu weltweiten Richtschnur machen möchte. Für die Entwickler von Machine-Learning-Anwendungen haben die Tensorflow-Entwickler sich deshalb den Tensorflow Hub ausgedacht: Zu diesem Online-Verzeichnis von Machine-Learning-Modulen kann jeder Entwickler beitragen, indem er den eigenen Code hochlädt.

Der Anbieter verspricht sich davon mehrere Vorzüge: Zum einen können einzelne Entwickler mit kleineren Datasets arbeiten, wenn sie optimierten Code und entsprechende Daten in Tensorflow Hub finden. Zudem hilft das gemeinsame Verzeichnis für entsprechende Module beim Setzen von Standards: Findet sich auf Tensorflow Hub ein Modul, das eine bestimmte Aufgabe gut und zuverlässig erledigt, können Entwickler direkt darauf zurückgreifen, statt das Rad neu zu erfinden. Das sorgt wiederum für eine geringere Fehleranfälligkeit. Einsteiger ins Machine Learning kommen über den Hub außerdem leichter an Code, wodurch sie schneller dazulernen.

Keras für den noch schnelleren Einstieg

Im Fahrwasser von Tensorflow schwimmt noch Keras, eine weitere Bibliothek für Machine Learning. Auch das entstammt der Feder eines Google-Mitarbeiters, François Chollet, der 2015 die erste Keras-Version veröffentlichte.

Ursprünglich hatten Keras und Tensorflow allerdings gar nichts miteinander zu tun. Zwar handelt es sich bei Keras ebenfalls um eine Bibliothek für Deep Machine Learning, sie unterscheidet sich jedoch von Tensorflow in einem Aspekt frappierend: Keras implementiert selbst keine Engine und versteht sich stattdessen primär als Frontend für Machine-Learning-Engines – wie eben Tensorflow. Seit der Version 1.4 bietet Tensorflow Unterstützung für die Keras-API, die allerdings unabhängig von Tensorflow weiterentwickelt wird. Eine Zusammenlegung war ausdrücklich unter anderem deshalb nicht gewünscht, weil Keras dazu einiges an Funktionalität hätte aufgeben müssen.

Im Gespann mit Tensorflow entfaltet Keras trotzdem sehr nützliche Zusatzfunktionen, wobei die Bibliothek bedingungslos auf Einfachheit und Benutzerfreundlichkeit getrimmt ist. Selbst wer bisher mit KI und Deep Learning kaum oder gar keine Erfahrung hat, kommt mit Keras schnell zu ersten Erfolgen. Damit eignet sich die Bibliothek hervorragend für die Ausbildung. Dass das Prinzip verfängt, beweist der Tensorflow Hub: Ein erquicklicher Teil der dort vorhandenen Beispiele und Vorlagen braucht nicht nur Tensorflow, sondern auch Keras.

Mit Datenquellen arbeiten

In welcher Form auch immer man sich mit neuronalen Netzen, Deep Learning und künstlicher Intelligenz befasst – eine Sache sollte man dabei stets in Erinnerung behalten: Jede Machine Learning Engine ist nur so gut, wie die Daten, die ihr zum Trainieren zur Verfügung stehen.

Erinnert sei etwa an den Microsoft-Chatbot Tay, den das Unternehmen 2016 auf Twitter losließ. Die noble Idee: Anhand seines Trainingsmaterials, das Tay aus seinen Konversationen mit Anwendern bezog, sollte er die Fähigkeit entwickeln, auf menschliche Art und Weise zu kommunizieren. Das Ergebnis fiel indes verheerend aus: Wohl auch, weil Trolle sich ganz bewusst auf den Dienst einschossen, mutierte Tay in knapp 16 Stunden zum Rüpel-Account, der kein Problem mit rassistischen Thesen und Neonazi-Ansichten hatte und das offen kommunizierte.

Wer den Einstieg in Tensorflow sucht, hat gleich mehrere Varianten, sich solche Probleme fürs Erste vom Hals zu halten. Auf Tensorflow Hub finden sich einerseits diverse Pre-Trained Networks, also die Ergebnisse von vorherigen Tensorflow-Läufen auf Basis großer Datasets. Die dort genutzten Datasets sind in aller Regel generisch gehalten, sodass sie eine gute Grundlage für das automatisierte Lernen bilden.

Darüber hinaus stellen gleich mehrere Projekte vorbereitete Datasets für Tensorflow zur Verfügung, und zwar für eine Vielzahl potenzieller Ziele. Wer etwa automatische Bilderkennung im Rahmen von neuronalen Netzen ausprobieren möchte, findet im Dataset des Projekts Aerial Cactus Identification ein gutes Beispiel. Dabei geht es um genau das, was der Name suggeriert: Das Dataset eignet sich, um ein neuronales Netz darauf zu trainieren, Kakteen auf Fotos automatisch zu erkennen (Abbildung 2).

<a href="#artRef-f2">Abbildung 2</a>: Kaktus oder nicht? Anhand solcher Bilder lernen Deep-Learning- Netze Kakteen auf Fotos zu erkennen. (Foto: Kaggle) Quelle: Kaggle

Abbildung 2: Kaktus oder nicht? Anhand solcher Bilder lernen Deep-Learning- Netze Kakteen auf Fotos zu erkennen. (Foto: Kaggle) Quelle: Kaggle

Ein anderes beeindruckendes Beispiel für ein vorgegebenes Dataset ist die MNIST-Datenbank (Abbildung 3): Sie enthält fast 60 000 Beispiele von Handschriften in Form einzelner Buchstaben. Damit bildet sie eine gute Grundlage für neuronale Netze, die sich selbst darin trainieren sollen, Handschriften zu interpretieren und zu lesen. Hier blitzt einmal mehr das Potenzial auf, das neuronale Netze mit sich bringen: Wer etwa schon einmal alte Dokumente händisch transkribiert hat, die in Sütterlin oder deutscher Kurrent verfasst sind, der weiß, wie kompliziert diese Aufgabe sein kann. Ein auf spezifische Schriften trainiertes neuronales Netz könnte das deutlich besser erledigen, insbesondere aber schneller (Abbildung 4).

<a href="#artRef-f3">Abbildung 3</a>: Das MNIST-Set ist ein Beispiel f&uuml;r Input-Daten, anhand derer eine KI-Umgebung automatische Schriftenerkennung lernen kann. Quelle: MNIST

Abbildung 3: Das MNIST-Set ist ein Beispiel für Input-Daten, anhand derer eine KI-Umgebung automatische Schriftenerkennung lernen kann. Quelle: MNIST

<a href="#artRef-f4">Abbildung 4</a>: Tensorflow verarbeitet Daten in mehreren L&auml;ufen und gibt am Ende die Akkuratesse an, mit der es die gestellte Aufgabe nun vollziehen kann. Quelle: Tensorflow

Abbildung 4: Tensorflow verarbeitet Daten in mehreren Läufen und gibt am Ende die Akkuratesse an, mit der es die gestellte Aufgabe nun vollziehen kann. Quelle: Tensorflow

Ähnliches gilt für andere Aufgaben: Wer etwa auf einer Reihe von Fotos bestimmte Formen erkennen möchte, der kann die Bilder händisch sichten oder das eine KI erledigen lassen. Vor diesem Hintergrund sind die manchmal etwas seltsam anmutenden Beispieldaten verständlich, die im Tensorflow-Umfeld kursieren – etwa eine Datenbank mit Fotos von Spielzeug vor beliebiger Kulisse (Abbildung 5). Die Suche im Netz fördert schnell weitere Datensätze zutage, anhand derer sich neuronale Netze auf Tensorflow-Basis verwenden lassen.

<a href="#artRef-f5">Abbildung 5</a>: Spielzeuge vor beliebiger Kulisse &ndash; was zun&auml;chst wirr wirkt, dient als Methode, um neuronale Netze Spielzeugerkennung lernen zu lassen. Quelle: NORB

Abbildung 5: Spielzeuge vor beliebiger Kulisse – was zunächst wirr wirkt, dient als Methode, um neuronale Netze Spielzeugerkennung lernen zu lassen. Quelle: NORB

Erste Gehversuche

Ein Übersichtsartikel wie dieser kann zwar erklären, was Tensorflow tut und wozu es in der Praxis dient; eine praktische Einführung würde jedoch einen weiteren Beitrag erfordern. Wer trotzdem Lust darauf bekommen hat, sich mit Tensorflow im Detail zu beschäftigen, findet dazu online jede Menge wirklich hervorragender Anleitungen. Tensorflow listet einige davon selbst auf [1].

Mit Keras lässt sich in sehr kurzer Zeit ein neuronales Netz bauen, das Bilder analysiert. Beinahe alle Beginner-Tutorials setzen auf Keras, weil es leichter zu verwenden ist als Tensorflow. Sämtliche Tutorials enthalten zudem das Dataset, das man benötigt, um die jeweilige Aufgabe per Keras zu erledigen. Und hat man sich durch die Beispiele in Keras-Notation einmal durchgearbeitet, landet man relativ schnell bei den Advanced-Modellen: Die fallen zwar komplizierter aus, erlauben aber auch in sehr kurzer Zeit den tiefen Einstieg in die Materie.

Wer sich mit künstlicher Intelligenz, Deep Learning und neuronalen Netzen beschäftigen möchte, findet in Tensorflow dafür insofern das ideale Werkzeug. Obendrein ist Tensorflow zukunftssicher: Google beteiligt sich nach wie vor sehr aktiv an der Entwicklung der Lösung, die regelmäßig neue Funktionen erhält. Zudem setzt Google Tensorflow selbst in diversen Produkten ein, etwa beim Verarbeiten von Fotos aus Streetview. Dass Googles interne Use-Cases für das Produkt oder KI im Generellen wegfallen, erscheint eher unwahrscheinlich. (jcb/jlu)

Der Autor

Martin Gerhard Loschwitz ist Cloud Platform Architect bei Drei Austria. Dort beschäftigt er sich hauptsächlich mit OpenStack, Ceph und Kubernetes

Infos

  1. Tensorflow-Tutorials: https://www.tensorflow.org/tutorials

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben