Table des matières
1. Ensemble de données et cible
2. Préparation
3. Hyperparamètres
4. Créez des ensembles de formation et de test
5. Concevoir l'architecture du réseau neuronal
6、训练
7、小结
Maison Périphériques technologiques IA Un guide pour entraîner des modèles de classification d'images à l'aide de TensorFlow

Un guide pour entraîner des modèles de classification d'images à l'aide de TensorFlow

Apr 13, 2023 pm 05:13 PM
模型 tensorflow 分类

Traducteur | Chen Jun

Critique | Sun Shujuan

Comme nous le savons tous, les humains apprennent à identifier et à étiqueter les choses qu'ils voient dès leur plus jeune âge. De nos jours, grâce à l’itération continue des algorithmes d’apprentissage automatique et d’apprentissage profond, les ordinateurs sont capables de classer les images capturées à grande échelle avec une très grande précision. Actuellement, les scénarios d'application de ces algorithmes avancés comprennent : l'interprétation des images de scanner pulmonaire pour déterminer si elles sont saines, la reconnaissance faciale via des appareils mobiles et la distinction de différents types d'objets de consommation pour les détaillants.

Ci-dessous, je discuterai avec vous d'une application de vision par ordinateur - classification d'images, et montrerai progressivement comment utiliser TensorFlow pour entraîner un modèle sur un petit ensemble de données d'image.

1. Ensemble de données et cible

Dans cet exemple, nous utiliserons l'ensemble de données MNIST d'images de chiffres de 0 à 9. Sa forme est celle indiquée dans la figure ci-dessous :

Un guide pour entraîner des modèles de classification dimages à laide de TensorFlow

Le but de l'entraînement de ce modèle est de classer les images sous leurs étiquettes respectives, c'est-à-dire : leurs numéros correspondants dans la figure ci-dessus. En règle générale, une architecture de réseau neuronal profond fournit une entrée, une sortie, deux couches cachées (couches cachées) et une couche d'abandon pour entraîner le modèle. CNN ou Convolutional Neural Network est le premier choix pour identifier des images plus grandes. Il peut capturer des informations pertinentes tout en réduisant la quantité d'entrée.

2. Préparation

Tout d'abord, importons toutes les données pertinentes via TensorFlow, to_categorical (utilisé pour convertir les valeurs de classe numériques​​en d'autres catégories), Sequential, Flatten, Dense et Dropout pour créer la base de code de l'architecture de réseau neuronal. . Certaines des bibliothèques de codes mentionnées ici peuvent vous être légèrement inconnues. Je vais les expliquer en détail ci-dessous.

3. Hyperparamètres

  • Je vais choisir le bon ensemble d'hyperparamètres à travers les aspects suivants :

  • Tout d'abord, définissons quelques hyperparamètres comme point de départ. Plus tard, vous pourrez l'ajuster pour répondre à différents besoins. Ici, j'ai choisi 128 comme taille de lot la plus petite. En fait, la taille du lot peut prendre n'importe quelle valeur, mais une puissance de 2 améliore souvent l'efficacité de la mémoire, elle devrait donc être le premier choix. Il convient de noter que la principale raison derrière le choix d'une taille de lot appropriée est qu'une taille de lot trop petite rendra la convergence trop lourde, tandis qu'une taille de lot trop grande risque de ne pas tenir dans la mémoire de votre ordinateur.
  • Gardons le nombre d'époques (chaque échantillon de l'ensemble d'entraînement participe à un entraînement) à 50 pour obtenir un entraînement rapide du modèle. Plus la valeur de l’époque est faible, plus elle est adaptée aux ensembles de données petits et simples.
  • Ensuite, vous devez ajouter des calques cachés. Ici, j'ai réservé 128 neurones pour chaque couche cachée. Bien entendu, vous pouvez également tester avec 64 et 32 ​​neurones. Pour cet exemple, je ne recommanderais pas d'utiliser des valeurs plus élevées pour un ensemble de données simple comme MINST.
  • Vous pouvez essayer différents taux d'apprentissage, tels que 0,01, 0,05 et 0,1. Dans ce cas, je le garde à 0,01.
  • Pour les autres hyperparamètres, j'ai choisi les étapes de désintégration et le taux de désintégration comme étant respectivement de 2000 et 0,9. Et au fur et à mesure que la formation progresse, ils peuvent être utilisés pour réduire le taux d’apprentissage.
  • Ici, je choisis Adamax comme optimiseur. Bien entendu, vous pouvez également choisir d’autres optimiseurs comme Adam, RMSProp, SGD, etc.
import tensorflow as tf
from tensorflow.keras.utils import to_categorical
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Flatten, Dense, Dropout
params = {
'dropout': 0.25,
'batch-size': 128,
'epochs': 50,
'layer-1-size': 128,
'layer-2-size': 128,
'initial-lr': 0.01,
'decay-steps': 2000,
'decay-rate': 0.9,
'optimizer': 'adamax'
}
mnist = tf.keras.datasets.mnist
num_class = 10
# split between train and test sets
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# reshape and normalize the data
x_train = x_train.reshape(60000, 784).astype("float32")/255
x_test = x_test.reshape(10000, 784).astype("float32")/255
# convert class vectors to binary class matrices
y_train = to_categorical(y_train, num_class)
y_test = to_categorical(y_test, num_class)
Copier après la connexion

4. Créez des ensembles de formation et de test

Étant donné que la bibliothèque TensorFlow comprend également l'ensemble de données MNIST, vous pouvez obtenir la formation (60 000) en appelant datasets.mnist sur l'objet, puis en appelant la méthode load_data(). ) et tester des ensembles de données (10 000 échantillons).

Ensuite, vous devez remodeler et normaliser les images d'entraînement et de test. Parmi eux, la normalisation limitera l’intensité des pixels de l’image entre 0 et 1.

Enfin, nous utilisons la méthode to_categorical que nous avons importée précédemment pour convertir les étiquettes de formation et de test en étiquettes classifiées. Il est très important de transmettre au framework TensorFlow que les étiquettes de sortie (c'est-à-dire : 0 à 9) sont des classes, et non des types numériques.

5. Concevoir l'architecture du réseau neuronal

Maintenant, comprenons comment concevoir l'architecture du réseau neuronal en détail.

Nous convertissons la matrice d'image 2D en vecteurs en ajoutant Flatten pour définir la structure du DNN (Deep Neural Network). Les neurones d'entrée correspondent ici aux nombres dans le vecteur.

Ensuite, j'utilise la méthode Dense() pour ajouter deux couches denses cachées et extraire chaque hyperparamètre du dictionnaire "params" précédemment défini. On peut utiliser "relu" (Rectified Linear Unit) comme fonction d'activation de ces couches. C’est l’une des fonctions d’activation les plus couramment utilisées dans les couches cachées des réseaux neuronaux.

Ensuite, nous ajoutons le calque Dropout en utilisant la méthode Dropout. Il sera utilisé pour éviter le surajustement lors de la formation des réseaux de neurones. Après tout, les modèles de surajustement ont tendance à mémoriser avec précision l’ensemble d’entraînement et ne parviennent pas à généraliser à des ensembles de données invisibles.

输出层是我们网络中的最后一层,它是使用Dense() 方法来定义的。需要注意的是,输出层有10个神经元,这对应于类(数字)的数量。

# Model Definition
# Get parameters from logged hyperparameters
model = Sequential([
Flatten(input_shape=(784, )),
Dense(params('layer-1-size'), activatinotallow='relu'),
Dense(params('layer-2-size'), activatinotallow='relu'),
Dropout(params('dropout')),
Dense(10)
])
lr_schedule =
tf.keras.optimizers.schedules.ExponentialDecay(
initial_learning_rate=experiment.get_parameter('initial-lr'),
decay_steps=experiment.get_parameter('decay-steps'),
decay_rate=experiment.get_parameter('decay-rate')
)
loss_fn = tf.keras.losses.CategoricalCrossentropy(from_logits=True)
model.compile(optimizer='adamax',
loss=loss_fn,
metrics=['accuracy'])
model.fit(x_train, y_train,
batch_size=experiment.get_parameter('batch-size'),
epochs=experiment.get_parameter('epochs'),
validation_data=(x_test, y_test),)
score = model.evaluate(x_test, y_test)
# Log Model
model.save('tf-mnist-comet.h5')
Copier après la connexion

6、训练

至此,我们已经定义好了架构。下面让我们用给定的训练数据,来编译和训练神经网络。

首先,我们以初始学习率、衰减步骤和衰减率作为参数,使用ExponentialDecay(指数衰减学习率)来定义学习率计划。

其次,将损失函数定义为CategoricalCrossentropy(用于多类式分类)。

接着,通过将优化器 (即:adamax)、损失函数、以及各项指标(由于所有类都同等重要、且均匀分布,因此我选择了准确性)作为参数,来编译模型。

然后,我们通过使用x_train、y_train、batch_size、epochs和validation_data去调用一个拟合方法,并拟合出模型。

同时,我们调用模型对象的评估方法,以获得模型在不可见数据集上的表现分数。

最后,您可以使用在模型对象上调用的save方法,保存要在生产环境中部署的模型对象。

7、小结

综上所述,我们讨论了为图像分类任务,训练深度神经网络的一些入门级的知识。您可以将其作为熟悉使用神经网络,进行图像分类的一个起点。据此,您可了解到该如何选择正确的参数集、以及架构背后的思考逻辑。

原文链接:https://www.kdnuggets.com/2022/12/guide-train-image-classification-model-tensorflow.html

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

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

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)

Le modèle MoE open source le plus puissant au monde est ici, avec des capacités chinoises comparables à celles du GPT-4, et le prix ne représente que près d'un pour cent de celui du GPT-4-Turbo. Le modèle MoE open source le plus puissant au monde est ici, avec des capacités chinoises comparables à celles du GPT-4, et le prix ne représente que près d'un pour cent de celui du GPT-4-Turbo. May 07, 2024 pm 04:13 PM

Imaginez un modèle d'intelligence artificielle qui non seulement a la capacité de surpasser l'informatique traditionnelle, mais qui permet également d'obtenir des performances plus efficaces à moindre coût. Ce n'est pas de la science-fiction, DeepSeek-V2[1], le modèle MoE open source le plus puissant au monde est ici. DeepSeek-V2 est un puissant mélange de modèle de langage d'experts (MoE) présentant les caractéristiques d'une formation économique et d'une inférence efficace. Il est constitué de 236B paramètres, dont 21B servent à activer chaque marqueur. Par rapport à DeepSeek67B, DeepSeek-V2 offre des performances plus élevées, tout en économisant 42,5 % des coûts de formation, en réduisant le cache KV de 93,3 % et en augmentant le débit de génération maximal à 5,76 fois. DeepSeek est une entreprise explorant l'intelligence artificielle générale

KAN, qui remplace MLP, a été étendu à la convolution par des projets open source KAN, qui remplace MLP, a été étendu à la convolution par des projets open source Jun 01, 2024 pm 10:03 PM

Plus tôt ce mois-ci, des chercheurs du MIT et d'autres institutions ont proposé une alternative très prometteuse au MLP – KAN. KAN surpasse MLP en termes de précision et d’interprétabilité. Et il peut surpasser le MLP fonctionnant avec un plus grand nombre de paramètres avec un très petit nombre de paramètres. Par exemple, les auteurs ont déclaré avoir utilisé KAN pour reproduire les résultats de DeepMind avec un réseau plus petit et un degré d'automatisation plus élevé. Plus précisément, le MLP de DeepMind compte environ 300 000 paramètres, tandis que le KAN n'en compte qu'environ 200. KAN a une base mathématique solide comme MLP est basé sur le théorème d'approximation universelle, tandis que KAN est basé sur le théorème de représentation de Kolmogorov-Arnold. Comme le montre la figure ci-dessous, KAN a

Bonjour, Atlas électrique ! Le robot Boston Dynamics revient à la vie, des mouvements étranges à 180 degrés effraient Musk Bonjour, Atlas électrique ! Le robot Boston Dynamics revient à la vie, des mouvements étranges à 180 degrés effraient Musk Apr 18, 2024 pm 07:58 PM

Boston Dynamics Atlas entre officiellement dans l’ère des robots électriques ! Hier, l'Atlas hydraulique s'est retiré "en larmes" de la scène de l'histoire. Aujourd'hui, Boston Dynamics a annoncé que l'Atlas électrique était au travail. Il semble que dans le domaine des robots humanoïdes commerciaux, Boston Dynamics soit déterminé à concurrencer Tesla. Après la sortie de la nouvelle vidéo, elle a déjà été visionnée par plus d’un million de personnes en seulement dix heures. Les personnes âgées partent et de nouveaux rôles apparaissent. C'est une nécessité historique. Il ne fait aucun doute que cette année est l’année explosive des robots humanoïdes. Les internautes ont commenté : Les progrès des robots ont fait ressembler la cérémonie d'ouverture de cette année à des êtres humains, et le degré de liberté est bien plus grand que celui des humains. Mais n'est-ce vraiment pas un film d'horreur ? Au début de la vidéo, Atlas est allongé calmement sur le sol, apparemment sur le dos. Ce qui suit est à couper le souffle

L'IA bouleverse la recherche mathématique ! Le lauréat de la médaille Fields et mathématicien sino-américain a dirigé 11 articles les mieux classés | Aimé par Terence Tao L'IA bouleverse la recherche mathématique ! Le lauréat de la médaille Fields et mathématicien sino-américain a dirigé 11 articles les mieux classés | Aimé par Terence Tao Apr 09, 2024 am 11:52 AM

L’IA change effectivement les mathématiques. Récemment, Tao Zhexuan, qui a prêté une attention particulière à cette question, a transmis le dernier numéro du « Bulletin de l'American Mathematical Society » (Bulletin de l'American Mathematical Society). En se concentrant sur le thème « Les machines changeront-elles les mathématiques ? », de nombreux mathématiciens ont exprimé leurs opinions. L'ensemble du processus a été plein d'étincelles, intense et passionnant. L'auteur dispose d'une équipe solide, comprenant Akshay Venkatesh, lauréat de la médaille Fields, le mathématicien chinois Zheng Lejun, l'informaticien de l'Université de New York Ernest Davis et de nombreux autres universitaires bien connus du secteur. Le monde de l’IA a radicalement changé. Vous savez, bon nombre de ces articles ont été soumis il y a un an.

Google est ravi : les performances de JAX surpassent Pytorch et TensorFlow ! Cela pourrait devenir le choix le plus rapide pour la formation à l'inférence GPU Google est ravi : les performances de JAX surpassent Pytorch et TensorFlow ! Cela pourrait devenir le choix le plus rapide pour la formation à l'inférence GPU Apr 01, 2024 pm 07:46 PM

Les performances de JAX, promu par Google, ont dépassé celles de Pytorch et TensorFlow lors de récents tests de référence, se classant au premier rang sur 7 indicateurs. Et le test n’a pas été fait sur le TPU présentant les meilleures performances JAX. Bien que parmi les développeurs, Pytorch soit toujours plus populaire que Tensorflow. Mais à l’avenir, des modèles plus volumineux seront peut-être formés et exécutés sur la base de la plate-forme JAX. Modèles Récemment, l'équipe Keras a comparé trois backends (TensorFlow, JAX, PyTorch) avec l'implémentation native de PyTorch et Keras2 avec TensorFlow. Premièrement, ils sélectionnent un ensemble de

Les robots Tesla travaillent dans les usines, Musk : Le degré de liberté des mains atteindra 22 cette année ! Les robots Tesla travaillent dans les usines, Musk : Le degré de liberté des mains atteindra 22 cette année ! May 06, 2024 pm 04:13 PM

La dernière vidéo du robot Optimus de Tesla est sortie, et il peut déjà fonctionner en usine. À vitesse normale, il trie les batteries (les batteries 4680 de Tesla) comme ceci : Le responsable a également publié à quoi cela ressemble à une vitesse 20 fois supérieure - sur un petit "poste de travail", en sélectionnant et en sélectionnant et en sélectionnant : Cette fois, il est publié L'un des points forts de la vidéo est qu'Optimus réalise ce travail en usine, de manière totalement autonome, sans intervention humaine tout au long du processus. Et du point de vue d'Optimus, il peut également récupérer et placer la batterie tordue, en se concentrant sur la correction automatique des erreurs : concernant la main d'Optimus, le scientifique de NVIDIA Jim Fan a donné une évaluation élevée : la main d'Optimus est l'un des robots à cinq doigts du monde. le plus adroit. Ses mains ne sont pas seulement tactiles

DualBEV : dépassant largement BEVFormer et BEVDet4D, ouvrez le livre ! DualBEV : dépassant largement BEVFormer et BEVDet4D, ouvrez le livre ! Mar 21, 2024 pm 05:21 PM

Cet article explore le problème de la détection précise d'objets sous différents angles de vue (tels que la perspective et la vue à vol d'oiseau) dans la conduite autonome, en particulier comment transformer efficacement les caractéristiques de l'espace en perspective (PV) en vue à vol d'oiseau (BEV). implémenté via le module Visual Transformation (VT). Les méthodes existantes sont globalement divisées en deux stratégies : la conversion 2D en 3D et la conversion 3D en 2D. Les méthodes 2D vers 3D améliorent les caractéristiques 2D denses en prédisant les probabilités de profondeur, mais l'incertitude inhérente aux prévisions de profondeur, en particulier dans les régions éloignées, peut introduire des inexactitudes. Alors que les méthodes 3D vers 2D utilisent généralement des requêtes 3D pour échantillonner des fonctionnalités 2D et apprendre les poids d'attention de la correspondance entre les fonctionnalités 3D et 2D via un transformateur, ce qui augmente le temps de calcul et de déploiement.

FisheyeDetNet : le premier algorithme de détection de cible basé sur une caméra fisheye FisheyeDetNet : le premier algorithme de détection de cible basé sur une caméra fisheye Apr 26, 2024 am 11:37 AM

La détection de cibles est un problème relativement mature dans les systèmes de conduite autonome, parmi lesquels la détection des piétons est l'un des premiers algorithmes à être déployés. Des recherches très complètes ont été menées dans la plupart des articles. Cependant, la perception de la distance à l’aide de caméras fisheye pour une vue panoramique est relativement moins étudiée. En raison de la distorsion radiale importante, la représentation standard du cadre de délimitation est difficile à mettre en œuvre dans les caméras fisheye. Pour alléger la description ci-dessus, nous explorons les conceptions étendues de boîtes englobantes, d'ellipses et de polygones généraux dans des représentations polaires/angulaires et définissons une métrique de segmentation d'instance mIOU pour analyser ces représentations. Le modèle fisheyeDetNet proposé avec une forme polygonale surpasse les autres modèles et atteint simultanément 49,5 % de mAP sur l'ensemble de données de la caméra fisheye Valeo pour la conduite autonome.

See all articles