Heim > Technologie-Peripheriegeräte > KI > Bildklassifizierung mit JAX, Flachs und Optax

Bildklassifizierung mit JAX, Flachs und Optax

Jennifer Aniston
Freigeben: 2025-03-18 11:50:23
Original
1011 Leute haben es durchsucht

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.

Bildklassifizierung mit JAX, Flachs und Optax

JAX -Setup: Installation und Importe:

Installieren Sie die erforderlichen Bibliotheken:

 !
Nach dem Login kopieren

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
Nach dem Login kopieren

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 ()
Nach dem Login kopieren

Bilder werden auf den Bereich normalisiert [0, 1].

Bildklassifizierung mit JAX, Flachs und Optax

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
Nach dem Login kopieren

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) ...
Nach dem Login kopieren

(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) ...
Nach dem Login kopieren

(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) ...
Nach dem Login kopieren

(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) ...
Nach dem Login kopieren

(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) ...
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage