?? Die Ukraine wird von der russischen Armee angegriffen. ZIVILISTEN WERDEN GETÖTET. WOHNGEBIETE WERDEN BOMBARDIERT.
- Helfen Sie der Ukraine über:
- Serhiy Prytula Wohltätigkeitsstiftung
- Come Back Alive Charity Foundation
- Nationalbank der Ukraine
- Weitere Informationen auf war.ukraine.ua und MFA der Ukraine
Dies ist eine Sammlung interaktiver Experimente zum maschinellen Lernen. Jedes Experiment besteht aus ?️ Jupyter/Colab- Notizbuch (um zu sehen, wie ein Modell trainiert wurde) und ?️ Demoseite (um ein Modell direkt in Ihrem Browser in Aktion zu sehen).
Sie könnten auch an Homemade GPT • JS interessiert sein
️ Dieses Repository enthält Experimente zum maschinellen Lernen und keinen produktionsbereiten, wiederverwendbaren, optimierten und fein abgestimmten Code und Modelle. Dies ist eher eine Sandbox oder ein Spielplatz zum Lernen und Ausprobieren verschiedener Ansätze, Algorithmen und Datensätze des maschinellen Lernens. Modelle funktionieren möglicherweise nicht gut und es kann zu Über-/Unteranpassung kommen.
Die meisten Modelle in diesen Experimenten wurden mit TensorFlow 2 mit Keras-Unterstützung trainiert.
Überwachtes Lernen liegt vor, wenn Sie Eingabevariablen X
und eine Ausgabevariable Y
haben und einen Algorithmus verwenden, um die Zuordnungsfunktion von der Eingabe zur Ausgabe zu lernen: Y = f(X)
. Das Ziel besteht darin, die Zuordnungsfunktion so gut zu approximieren, dass Sie bei neuen Eingabedaten X
die Ausgabevariablen Y
für diese Daten vorhersagen können. Man spricht von überwachtem Lernen, da man sich den Prozess des Lernens eines Algorithmus aus dem Trainingsdatensatz als einen Lehrer vorstellen kann, der den Lernprozess überwacht.
Ein mehrschichtiges Perzeptron (MLP) ist eine Klasse künstlicher neuronaler Feedforward-Netzwerke (ANN). Mehrschichtige Perzeptrone werden manchmal als „Vanilla“-Neuronale Netze (bestehend aus mehreren Schichten von Perzeptronen) bezeichnet, insbesondere wenn sie über eine einzige verborgene Schicht verfügen. Es kann Daten unterscheiden, die nicht linear trennbar sind.
Experiment | Modelldemo & Schulung | Schlagworte | Datensatz | |
---|---|---|---|---|
Handschriftliche Ziffernerkennung (MLP) | MLP | MNIST | ||
Handschriftliche Skizzenerkennung (MLP) | MLP | QuickDraw |
Ein Convolutional Neural Network (CNN oder ConvNet) ist eine Klasse tiefer neuronaler Netzwerke, die am häufigsten zur Analyse visueller Bilder (Fotos, Videos) eingesetzt werden. Sie werden zur Erkennung und Klassifizierung von Objekten auf Fotos und Videos, zur Stilübertragung, zur Gesichtserkennung, zur Posenschätzung usw. verwendet.
Experiment | Modelldemo & Schulung | Schlagworte | Datensatz | |
---|---|---|---|---|
Handschriftliche Ziffernerkennung (CNN) | CNN | MNIST | ||
Handschriftliche Skizzenerkennung (CNN) | CNN | QuickDraw | ||
Stein-Papier-Schere (CNN) | CNN | RPS | ||
Stein-Papier-Schere (MobilenetV2) | MobileNetV2 , Transfer learning , CNN | RPS, ImageNet | ||
Objekterkennung (MobileNetV2) | MobileNetV2 , SSDLite , CNN | COCO | ||
Bildklassifizierung (MobileNetV2) | MobileNetV2 , CNN | ImageNet |
Ein wiederkehrendes neuronales Netzwerk (RNN) ist eine Klasse tiefer neuronaler Netzwerke, die am häufigsten auf sequenzbasierte Daten wie Sprache, Stimme, Text oder Musik angewendet werden. Sie werden für maschinelle Übersetzung, Spracherkennung, Sprachsynthese usw. verwendet.
Experiment | Modelldemo & Schulung | Schlagworte | Datensatz | |
---|---|---|---|---|
Zahlensummierung (RNN) | LSTM , Sequence-to-sequence | Automatisch generiert | ||
Shakespeare-Textgenerierung (RNN) | LSTM , Character-based RNN | Shakespeare | ||
Wikipedia-Textgenerierung (RNN) | LSTM , Character-based RNN | Wikipedia | ||
Rezeptgenerierung (RNN) | LSTM , Character-based RNN | Rezeptbox |
Beim unüberwachten Lernen liegen nur Eingabedaten X
und keine entsprechenden Ausgabevariablen vor. Das Ziel des unbeaufsichtigten Lernens besteht darin, die zugrunde liegende Struktur oder Verteilung in den Daten zu modellieren, um mehr über die Daten zu erfahren. Diese werden als unüberwachtes Lernen bezeichnet, da es im Gegensatz zum oben genannten überwachten Lernen keine richtigen Antworten und keinen Lehrer gibt. Es bleibt den Algorithmen sich selbst überlassen, die interessante Struktur in den Daten zu entdecken und darzustellen.
Ein Generative Adversarial Network (GAN) ist eine Klasse von Frameworks für maschinelles Lernen, bei denen zwei neuronale Netze in einem Spiel gegeneinander antreten. Zwei Modelle werden gleichzeitig durch einen kontradiktorischen Prozess trainiert. Beispielsweise lernt ein Generator („der Künstler“), Bilder zu erstellen, die echt aussehen, während ein Diskriminator („der Kunstkritiker“) lernt, echte Bilder von Fälschungen zu unterscheiden.
Experiment | Modelldemo & Schulung | Schlagworte | Datensatz | |
---|---|---|---|---|
Kleidergeneration (DCGAN) | DCGAN | Mode MNIST |
# Create "experiments" environment (from the project root folder).
python3 -m venv .virtualenvs/experiments
# Activate environment.
source .virtualenvs/experiments/bin/activate
# or if you use Fish...
source .virtualenvs/experiments/bin/activate.fish
Um eine Umgebung zu verlassen, führen Sie deactivate
aus.
# Upgrade pip and setuptools to the latest versions.
pip install --upgrade pip setuptools
# Install packages
pip install -r requirements.txt
Um neue Pakete zu installieren, führen Sie pip install package-name
aus. Um neue Pakete zu den Anforderungen hinzuzufügen, führen Sie pip freeze > requirements.txt
aus.
Um mit Jupyter-Notebooks herumzuspielen und zu sehen, wie Modelle trainiert wurden, müssen Sie einen Jupyter-Notebook-Server starten.
# Launch Jupyter server.
jupyter notebook
Jupyter wird lokal unter http://localhost:8888/
verfügbar sein. Notizbücher mit Experimenten finden Sie im Ordner experiments
.
Die Demoanwendung erfolgt auf React mithilfe der Create-React-App.
# Switch to demos folder from project root.
cd demos
# Install all dependencies.
yarn install
# Start demo server on http.
yarn start
# Or start demo server on https (for camera access in browser to work on localhost).
yarn start-https
Demos werden lokal unter http://localhost:3000/
oder unter https://localhost:3000/
verfügbar sein.
Die converter
wird verwendet, um die Modelle, die während der Experimente trainiert wurden, vom Keras-Format .h5
in Javascript-verständliche Formate (Formate tfjs_layers_model
oder tfjs_graph_model
mit .json
und .bin
Dateien) zur weiteren Verwendung mit TensorFlow.js in der Demoanwendung zu konvertieren.
# Create "converter" environment (from the project root folder).
python3 -m venv .virtualenvs/converter
# Activate "converter" environment.
source .virtualenvs/converter/bin/activate
# or if you use Fish...
source .virtualenvs/converter/bin/activate.fish
# Install converter requirements.
pip install -r requirements.converter.txt
Die Konvertierung von keras
-Modellen in die Formate tfjs_layers_model
/ tfjs_graph_model
erfolgt durch tfjs-converter:
Zum Beispiel:
tensorflowjs_converter --input_format keras
./experiments/digits_recognition_mlp/digits_recognition_mlp.h5
./demos/public/models/digits_recognition_mlp
️ Das Konvertieren der Modelle in JS-verständliche Formate und das direkte Laden in den Browser ist möglicherweise keine gute Vorgehensweise, da der Benutzer in diesem Fall möglicherweise Dutzende oder Hunderte Megabyte an Daten in den Browser laden muss, was nicht effizient ist. Normalerweise wird das Modell vom Back-End (z. B. TensorFlow Extended) bereitgestellt und anstatt alles in den Browser zu laden, sendet der Benutzer eine einfache HTTP-Anfrage, um eine Vorhersage zu treffen. Da es sich bei der Demo-App jedoch nur um ein Experiment und nicht um eine produktionsreife App handelt, konvertieren wir der Einfachheit halber (um ein funktionierendes Back-End zu vermeiden) die Modelle in JS-verständliche Formate und laden sie direkt in die Browser.
Empfohlene Versionen:
> 3.7.3
.>= 12.4.0
.>= 1.13.0
. Wenn Sie Python Version 3.7.3
haben, kann beim Versuch, import tensorflow
der Fehler RuntimeError: dictionary changed size during iteration
auftreten (siehe Problem).