Bildklassifizierung mit JAX, Flachs und Optax
Dieses Tutorial zeigt, dass ein Faltungsnetz (CNN) für die MNIST -Ziffernklassifizierung unter Verwendung von JAX, Flachs und Optax aufgebaut, trainiert und bewertet wird. Wir werden alles von Umgebungsaufbau- und Datenvorverarbeitung bis hin zu Modellarchitektur, Schulungsschleife, Metrikvisualisierung und schließlich Vorhersage für benutzerdefinierte Bilder abdecken. Dieser Ansatz unterstreicht die synergistischen Stärken dieser Bibliotheken für effizientes und skalierbares tiefes Lernen.
Lernziele:
- Beherrschen Sie die Integration von Jax, Flachs und Optax für die Entwicklung des neuronalen Netzwerks.
- Erfahren Sie, dass Datensätze mithilfe von TensorFlow -Datensätzen (TFDs) vorgefertigt und geladen werden.
- Implementieren Sie ein CNN für eine effektive Bildklassifizierung.
- Visualisieren Sie den Trainingsfortschritt mithilfe wichtiger Metriken (Verlust und Genauigkeit).
- Bewerten Sie die Leistung des Modells auf benutzerdefinierten Bildern.
Dieser Artikel ist Teil des Datenwissenschaftsblogathons.
Inhaltsverzeichnis:
- Lernziele
- Das JAX-, Flachs- und Optax -Kraftpaket
- JAX -Setup: Installation und Importe
- MNIST -Daten: Laden und Vorverarbeitung
- Konstruktion des CNN
- Modellbewertung: Metriken und Verfolgung
- Die Trainingsschleife
- Ausführung von Schulungen und Bewertung
- Visualisierung der Leistung
- Vorhersage mit benutzerdefinierten Bildern
- Abschluss
- Häufig gestellte Fragen
Das Powerhouse Jax, Flachs und Optax:
Effizienter, skalierbares Deep -Learning erfordert leistungsstarke Tools für Berechnung, Modelldesign und Optimierung. Jax, Flachs und Optax befassen sich gemeinsam mit diesen Anforderungen:
JAX: Numerical Computing Excellence:
JAX bietet eine leistungsstarke numerische Berechnung mit einer numpy-ähnlichen Schnittstelle. Zu den wichtigsten Funktionen gehören:
- Automatische Differenzierung (AUTOGRAD): Mühelose Gradientenberechnung für komplexe Funktionen.
- Just-in-Time (JIT) -Kompilation: Beschleunigte Ausführung von CPUs, GPUs und TPUs.
- Vektorisierung: Vereinfachte Stapelverarbeitung über
vmap
. - Hardwarebeschleunigung: Native Unterstützung für GPUs und TPUs.
Flachs: Flexible neuronale Netzwerke:
Flax, eine JAX-basierte Bibliothek, bietet einen benutzerfreundlichen und hoch anpassbaren Ansatz für die Konstruktion neuronaler Netzwerke:
- Stateful Module: Vereinfachter Parameter und Zustandsmanagement.
- Concise API: Intuitive Modelldefinition mit dem Dekorator
@nn.compact
. - Anpassungsfähigkeit: Geeignet für verschiedene Architekturen von einfach bis komplex.
- Seamless JAX -Integration: Mühelose Nutzung der Fähigkeiten von JAX.
Optax: umfassende Optimierung:
Optax stromabreiche Gradientenhandhabung und -optimierung, bereitgestellt:
- Optimierer -Sorte: Eine breite Palette von Optimierern, einschließlich SGD, Adam und RMSProp.
- Gradientenmanipulation: Werkzeuge zum Ausschneiden, Skalieren und Normalisierung.
- Modulares Design: Einfache Kombination von Gradiententransformationen und Optimierern.
Dieser kombinierte Rahmen bietet ein leistungsstarkes, modulares Ökosystem für die effiziente Entwicklung des Deep -Learning -Modells.
JAX -Setup: Installation und Importe:
Installieren Sie die erforderlichen Bibliotheken:
!
Wesentliche Bibliotheken importieren:
Jax importieren Importieren Sie Jax.numpy als JNP von Flachs importieren Leinen als nn von flax.training import Train_state Optax importieren Numph als NP importieren Tensorflow_Datasets als TFDS importieren matplotlib.pyplot als pLT importieren
MNIST -Daten: Laden und Vorverarbeitung:
Wir laden und werden den MNIST -Datensatz mit TFDS geladen:
Def get_datasets (): ds_builder = tfds.builder ('mnist') ds_builder.download_and_prepare () train_ds = tfds.as_numpy (ds_builder.as_dataset (split = 'train', batch_size = -1)) test_ds = tfds.as_numpy (ds_builder.as_dataset (split = 'test', batch_size = -1)) Train_ds ['Bild'] = jnp.float32 (train_ds ['Bild']) / 255.0 test_ds ['Bild'] = jnp.float32 (test_ds ['Bild']) / 255.0 return train_ds, test_ds train_ds, test_ds = get_datasets ()
Bilder werden auf den Bereich normalisiert [0, 1].
Konstruktion des CNN:
Unsere CNN -Architektur:
Klasse cnn (nn.module): @nn.comPact def __call __ (self, x): x = nn.conv (features = 32, kernel_size = (3, 3)) (x) x = nn.relu (x) x = nn.avg_pool (x, window_shape = (2, 2), strides = (2, 2)) x = nn.conv (features = 64, kernel_size = (3, 3)) (x) x = nn.relu (x) x = nn.avg_pool (x, window_shape = (2, 2), strides = (2, 2)) x = x.reshape ((x.Shape [0], -1)) x = nn.dense (features = 256) (x) x = nn.relu (x) x = nn.dense (features = 10) (x) Rückkehr x
Dies umfasst Faltungsschichten, Bündelungsschichten, eine Abflachungsschicht und dichte Schichten.
Modellbewertung: Metriken und Verfolgung:
Wir definieren Funktionen zur Berechnung des Verlusts und der Genauigkeit:
Def compute_metrics (Protokolls, Beschriftungen): LUST = JNP.MEAN (optax.softmax_cross_entropy (logits, jax.nn.one_hot (Labels, num_classeses = 10))) accuracy = jnp.mean (jnp.argmax (logits, -1) == Labels) Metriken = {'Verlust': Verlust, 'Genauigkeit': Genauigkeit} Metriken zurückgeben # ... (train_step und eval_step -Funktionen bleiben weitgehend gleich) ...
(Die Funktionen von Train_Step und Eval_Step würden hier enthalten, ähnlich wie der ursprüngliche Code.)
Die Trainingsschleife:
Die Trainingsschleife aktualisiert iterativ das Modell:
# ... (Train_epoch und Eval_Model -Funktionen bleiben weitgehend gleich) ...
(Die Funktionen von Train_epoch und Eval_Model würden hier enthalten, ähnlich wie der ursprüngliche Code.)
Ausführung von Schulungen und Bewertung:
Wir führen den Schulungs- und Bewertungsprozess aus:
# ... (Trainings- und Bewertungsausführungscode bleibt weitgehend gleich) ...
(Der Ausführungscode für Schulungen und Bewertung, einschließlich Parameterinitialisierung, Optimierer -Setup und die Trainingsschleife, werden hier enthalten, ähnlich dem ursprünglichen Code.)
Visualisierung der Leistung:
Wir visualisieren Trainings- und Testmetriken mit Matplotlib:
# ... (Matplotlib -Plotcode bleibt weitgehend gleich) ...
(Der Matplotlib -Plotcode zur Visualisierung von Verlust und Genauigkeit würde hier ähnlich wie der ursprüngliche Code enthalten.)
Vorhersagen mit benutzerdefinierten Bildern:
Dieser Abschnitt zeigt die Vorhersage auf benutzerdefinierten Bildern (Code bleibt weitgehend das gleiche wie das Original).
# ... (Code zum Hochladen, Vorverarbeitung und Vorhersagen auf benutzerdefinierten Bildern bleibt weitgehend gleich) ...
Abschluss:
Dieses Tutorial zeigte die Effizienz und Flexibilität von Jax, Flachs und Optax für den Bau und die Schulung eines CNN. Die Verwendung von TFDs vereinfachte die Datenbearbeitung und die metrische Visualisierung lieferte wertvolle Erkenntnisse. Die Fähigkeit, das Modell auf benutzerdefinierten Bildern zu testen, unterstreicht seine praktische Anwendbarkeit.
Häufig gestellte Fragen:
(FAQs bleiben weitgehend das Gleiche wie das Original.)
Der bereitgestellte Colab -Link würde hier enthalten. Denken Sie daran, /uploads/....webp
Webp -Bildpfade durch die tatsächlichen Pfade zu Ihren Bildern zu ersetzen.
Das obige ist der detaillierte Inhalt vonBildklassifizierung mit JAX, Flachs und Optax. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Während der Arbeit an Agentic AI navigieren Entwickler häufig die Kompromisse zwischen Geschwindigkeit, Flexibilität und Ressourceneffizienz. Ich habe den Agenten-KI-Framework untersucht und bin auf Agno gestoßen (früher war es phi-

SQL -Änderungstabellanweisung: Dynamisches Hinzufügen von Spalten zu Ihrer Datenbank Im Datenmanagement ist die Anpassungsfähigkeit von SQL von entscheidender Bedeutung. Müssen Sie Ihre Datenbankstruktur im laufenden Flug anpassen? Die Änderungstabelleerklärung ist Ihre Lösung. Diese Anleitung Details Hinzufügen von Colu

Die Veröffentlichung umfasst drei verschiedene Modelle, GPT-4.1, GPT-4.1 Mini und GPT-4.1-Nano, die einen Zug zu aufgabenspezifischen Optimierungen innerhalb der Landschaft des Großsprachenmodells signalisieren. Diese Modelle ersetzen nicht sofort benutzergerichtete Schnittstellen wie

Schalte die Kraft des Einbettungsmodelle frei: einen tiefen Eintauchen in den neuen Kurs von Andrew Ng Stellen Sie sich eine Zukunft vor, in der Maschinen Ihre Fragen mit perfekter Genauigkeit verstehen und beantworten. Dies ist keine Science -Fiction; Dank der Fortschritte in der KI wird es zu einem R

Simulieren Raketenstarts mit Rocketpy: Eine umfassende Anleitung Dieser Artikel führt Sie durch die Simulation von Rocketpy-Starts mit hoher Leistung mit Rocketpy, einer leistungsstarken Python-Bibliothek. Wir werden alles abdecken, von der Definition von Raketenkomponenten bis zur Analyse von Simula

Gemini als Grundlage der KI -Strategie von Google Gemini ist der Eckpfeiler der AI -Agentenstrategie von Google und nutzt seine erweiterten multimodalen Funktionen, um Antworten auf Text, Bilder, Audio, Video und Code zu verarbeiten und zu generieren. Entwickelt von Deepm

"Super froh, Ihnen mitteilen zu können, dass wir Pollenroboter erwerben, um Open-Source-Roboter in die Welt zu bringen", sagte Hugging Face auf X.

In einer bedeutenden Entwicklung für die KI-Community haben Agentica und gemeinsam KI ein Open-Source-KI-Codierungsmodell namens DeepCoder-14b veröffentlicht. Angebotsfunktionen der Codegenerierung mit geschlossenen Wettbewerbern wie OpenAI,
