Classification d'image avec Jax, Flax et Optax
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.
Configuration de Jax: installation et importations:
Installez les bibliothèques nécessaires:
! PIP Install - Opgrade -Q Pip Jax Jaxlib Flax Optax TensorFlow-Datasets
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
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 ()
Les images sont normalisées à la plage [0, 1].
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
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) ...
(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) ...
(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) ...
(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) ...
(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) ...
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds











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-

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

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

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

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

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

"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

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
