Maison Périphériques technologiques IA Classification d'image avec Jax, Flax et Optax

Classification d'image avec Jax, Flax et Optax

Mar 18, 2025 am 11:50 AM

Ce tutoriel démontre la construction, la formation et l'évaluation d'un réseau neuronal convolutionnel (CNN) pour la classification des chiffres MNIST en utilisant JAX, Flax et Optax. Nous couvrirons tout, de la configuration de l'environnement et du prétraitement des données à l'architecture du modèle, à l'implémentation de la boucle de formation, à la visualisation métrique et enfin, à la prédiction sur les images personnalisées. Cette approche met en évidence les forces synergiques de ces bibliothèques pour un apprentissage en profondeur efficace et évolutif.

Objectifs d'apprentissage:

  • Maître l'intégration de Jax, de lin et d'Optax pour le développement de réseau neuronal rationalisé.
  • Apprenez à prétraiter et à charger des ensembles de données à l'aide de ensembles de données TensorFlow (TFDS).
  • Implémentez un CNN pour une classification d'images efficace.
  • Visualisez les progrès de la formation à l'aide de mesures clés (perte et précision).
  • Évaluez les performances du modèle sur les images personnalisées.

Cet article fait partie du blogathon des sciences des données.

Table des matières:

  • Objectifs d'apprentissage
  • La centrale Jax, Flax et Optax
  • Configuration de Jax: installation et importations
  • Données MNIST: chargement et prétraitement
  • Construire le CNN
  • Évaluation du modèle: métriques et suivi
  • La boucle de formation
  • Exécution de la formation et de l'évaluation
  • Visualiser les performances
  • Prédire avec des images personnalisées
  • Conclusion
  • Questions fréquemment posées

Le Jax, le lin et l'Optax Powerhouse:

Un apprentissage en profondeur efficace et évolutif exige des outils puissants de calcul, de conception de modèles et d'optimisation. Jax, Flax et Optax répondent collectivement à ces besoins:

Jax: Excellence en informatique numérique:

Jax fournit un calcul numérique haute performance avec une interface de type Numpy. Ses caractéristiques clés incluent:

  • Différenciation automatique (Autograd): calcul du gradient sans effort pour les fonctions complexes.
  • Compilation Just-in-Time (JIT): exécution accélérée sur les CPU, les GPU et les TPU.
  • Vectorisation: traitement par lots simplifié via vmap .
  • Accélération matérielle: prise en charge native pour les GPU et les TPU.

Flax: réseaux de neurones flexibles:

Flax, une bibliothèque basée à Jax, propose une approche conviviale et hautement personnalisable de la construction du réseau neuronal:

  • Modules avec état: paramètre simplifié et gestion de l'état.
  • API concise: Définition du modèle intuitif à l'aide du décorateur @nn.compact .
  • Adaptabilité: Convient à diverses architectures, de simple à complexe.
  • Intégration sans couture de Jax: levier sans effort des capacités de Jax.

Optax: optimisation complète:

Optax rationalise la gestion et l'optimisation du gradient, à propos de:

  • Variété d'optimiseur: une large gamme d'optimiturs, y compris SGD, Adam et RMSProp.
  • Manipulation du gradient: outils pour l'écrasement, la mise à l'échelle et la normalisation.
  • Conception modulaire: combinaison facile des transformations de gradient et des optimisateurs.

Ce cadre combiné offre un écosystème puissant et modulaire pour un développement efficace du modèle d'apprentissage en profondeur.

Classification d'image avec Jax, Flax et Optax

Configuration de Jax: installation et importations:

Installez les bibliothèques nécessaires:

 ! PIP Install - Opgrade -Q Pip Jax Jaxlib Flax Optax TensorFlow-Datasets
Copier après la connexion

Importer des bibliothèques essentielles:

 Importer Jax
importer jax.numpy en tant que JNP
à partir du lin d'importation de lin comme nn
de Flax.Training Import Train_State
Importer Optax
Importer Numpy comme NP
Importer Tensorflow_Datasets en tant que TFDS
Importer Matplotlib.pyplot en tant que plt
Copier après la connexion

Données MNIST: chargement et prétraitement:

Nous chargeons et préparons l'ensemble de données MNIST à l'aide de TFDS:

 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 ['image'] = jnp.float32 (Train_ds ['image']) / 255.0
  test_ds ['image'] = jnp.float32 (test_ds ['image']) / 255.0
  return Train_ds, test_ds

Train_ds, test_ds = get_datasets ()
Copier après la connexion

Les images sont normalisées à la plage [0, 1].

Classification d'image avec Jax, Flax et Optax

Construction du CNN:

Notre architecture CNN:

 Classe CNN (nn.module):
  @ nn.compact
  def __ call __ (self, x):
    x = nn.conv (fonctionnalités = 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 (fonctionnalités = 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 (caractéristiques = 256) (x)
    x = nn.relu (x)
    x = nn.dense (fonctionnalités = 10) (x)
    retour x
Copier après la connexion

Cela comprend des couches convolutionnelles, des couches de mise en commun, une couche aplatie et des couches denses.

Évaluation du modèle: métriques et suivi:

Nous définissons les fonctions pour calculer la perte et la précision:

 DEF COMPUTE_METRICS (Logits, Étiquettes):
  perte = jnp.mean (optax.softmax_cross_entropy (Logits, jax.nn.one_hot (labels, num_classes = 10)))
  précision = jnp.mean (jnp.argmax (logits, -1) == étiquettes)
  Metrics = {'perte': perte, 'précision': précision}
  retour des mesures

# ... (les fonctions Train_step et EVAVE_STEP restent en grande partie les mêmes) ...
Copier après la connexion

(Les fonctions Train_step et EVAVE_STEP seraient incluses ici, similaires au code d'origine.)

La boucle de formation:

La boucle de formation met à jour itérative le modèle:

 # ... (les fonctions Train_epoch et Eval_Model restent en grande partie les mêmes) ...
Copier après la connexion

(Les fonctions Train_Epoch et EVAV_Model seraient incluses ici, similaires au code d'origine.)

Exécution de la formation et de l'évaluation:

Nous exécutons le processus de formation et d'évaluation:

 # ... (Le code d'exécution de la formation et de l'évaluation reste en grande partie le même) ...
Copier après la connexion

(Le code d'exécution de formation et d'évaluation, y compris l'initialisation des paramètres, la configuration de l'optimiseur et la boucle de formation, serait inclus ici, similaire au code d'origine.)

Visualiser les performances:

Nous visualisons la formation et le test des mesures à l'aide de Matplotlib:

 # ... (le code de traçage Matplotlib reste en grande partie le même) ...
Copier après la connexion

(Le code de traçage Matplotlib pour visualiser la perte et la précision serait inclus ici, similaire au code d'origine.)

Prédire avec des images personnalisées:

Cette section démontre la prédiction sur les images personnalisées (le code reste en grande partie le même que l'original).

 # ... (code pour le téléchargement, le prétraitement et la prévision des images personnalisées restent en grande partie les mêmes) ...
Copier après la connexion

Conclusion:

Ce tutoriel a présenté l'efficacité et la flexibilité de Jax, de lin et d'optax pour construire et former un CNN. L'utilisation de TFDS Simplified Data Manipting et la visualisation métrique a fourni des informations précieuses. La possibilité de tester le modèle sur des images personnalisées met en évidence son applicabilité pratique.

Questions fréquemment posées:

(Les FAQ restent en grande partie les mêmes que l'original.)

Le lien colab fourni serait ici. N'oubliez pas de remplacer /uploads/....webp les chemins d'image d'image par les chemins réels de vos images.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
<🎜>: Grow A Garden - Guide de mutation complet
3 Il y a quelques semaines By DDD
Nordhold: Système de fusion, expliqué
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1672
14
Tutoriel PHP
1276
29
Tutoriel C#
1256
24
Comment construire des agents d'IA multimodaux à l'aide d'AGNO Framework? Comment construire des agents d'IA multimodaux à l'aide d'AGNO Framework? Apr 23, 2025 am 11:30 AM

Tout en travaillant sur une IA agentique, les développeurs se retrouvent souvent à naviguer dans les compromis entre la vitesse, la flexibilité et l'efficacité des ressources. J'ai exploré le cadre de l'IA agentique et je suis tombé sur Agno (plus tôt c'était Phi-

Comment ajouter une colonne dans SQL? - Analytique Vidhya Comment ajouter une colonne dans SQL? - Analytique Vidhya Apr 17, 2025 am 11:43 AM

Instruction ALTER TABLE de SQL: Ajout de colonnes dynamiquement à votre base de données Dans la gestion des données, l'adaptabilité de SQL est cruciale. Besoin d'ajuster votre structure de base de données à la volée? L'énoncé de la table alter est votre solution. Ce guide détaille l'ajout de Colu

Openai change de mise au point avec GPT-4.1, priorise le codage et la rentabilité Openai change de mise au point avec GPT-4.1, priorise le codage et la rentabilité Apr 16, 2025 am 11:37 AM

La version comprend trois modèles distincts, GPT-4.1, GPT-4.1 Mini et GPT-4.1 Nano, signalant une évolution vers des optimisations spécifiques à la tâche dans le paysage du modèle grand langage. Ces modèles ne remplacent pas immédiatement les interfaces orientées utilisateur comme

Nouveau cours court sur les modèles d'intégration par Andrew Ng Nouveau cours court sur les modèles d'intégration par Andrew Ng Apr 15, 2025 am 11:32 AM

Déverrouiller la puissance des modèles d'intégration: une plongée profonde dans le nouveau cours d'Andrew Ng Imaginez un avenir où les machines comprennent et répondent à vos questions avec une précision parfaite. Ce n'est pas de la science-fiction; Grâce aux progrès de l'IA, cela devient un R

Simulation et analyse de lancement de fusées à l'aide de Rocketpy - Analytics Vidhya Simulation et analyse de lancement de fusées à l'aide de Rocketpy - Analytics Vidhya Apr 19, 2025 am 11:12 AM

Simuler les lancements de fusée avec Rocketpy: un guide complet Cet article vous guide à travers la simulation des lancements de fusées haute puissance à l'aide de Rocketpy, une puissante bibliothèque Python. Nous couvrirons tout, de la définition de composants de fusée à l'analyse de Simula

Google dévoile la stratégie d'agent la plus complète au cloud prochain 2025 Google dévoile la stratégie d'agent la plus complète au cloud prochain 2025 Apr 15, 2025 am 11:14 AM

Gemini comme fondement de la stratégie d'IA de Google Gemini est la pierre angulaire de la stratégie d'agent AI de Google, tirant parti de ses capacités multimodales avancées pour traiter et générer des réponses à travers le texte, les images, l'audio, la vidéo et le code. Développé par Deepm

Robots humanoïdes open source que vous pouvez imprimer vous-même: les câlins de visage achètent la robotique du pollen Robots humanoïdes open source que vous pouvez imprimer vous-même: les câlins de visage achètent la robotique du pollen Apr 15, 2025 am 11:25 AM

"Super heureux d'annoncer que nous acquérons une robotique de pollen pour amener les robots open source au monde", a déclaré Hugging Face sur X. "Depuis que Remi Cadene nous a rejoints de Tesla, nous sommes devenus la plate-forme logicielle la plus utilisée pour la robotique ouverte grâce à des remerciements grâce à des remerciements grâce à des remerciements à une robotique ouverte grâce à des remerciements à des remerciements à des remerciements à la robotique ouverte grâce à des remerciements à Gérom

Deepcoder-14b: la compétition open source à O3-MinI et O1 Deepcoder-14b: la compétition open source à O3-MinI et O1 Apr 26, 2025 am 09:07 AM

Dans un développement significatif pour la communauté de l'IA, Agetica et ensemble AI ont publié un modèle de codage d'IA open source nommé Deepcoder-14b. Offrir des capacités de génération de code à égalité avec des concurrents à source fermée comme OpenAI

See all articles