Tutoriels intelligence artificielle Formation TensorFlow : Coder un réseau de neurones récurrent

Pour approfondir le sujet

Sur le même thème :

Vendée Territoire Connecté : réseau d’objets connectés et jumeau numérique au service de la transition écologique

Vendée Territoire Connecté, l'un des douze projets lauréats de l'appel à projets DIAT, entre dans sa phase opérationnelle. Porté par Vendée Numérique et soutenu...

Nomination de Clara Chappaz : La voie vers une nouvelle mission ?

En ligne avec l’intervention en Serbie d’Emmanuel Macron fin août, la nomination de Clara Chappaz en tant que Secrétaire d’Etat Chargée de l’Intelligence Artificielle...

Mozilla appelle à créer une alternative publique à l’IA privée dominée par les Big Tech

Si l'organisation à but non-lucratif Mozilla est connue principalement pour son navigateur web, Mozilla Firefox, elle, œuvre sans relâche en faveur des libertés numériques, de...

IA et sûreté : vers une généralisation des caméras de vidéosurveillance intelligentes en France

L'expérimentation des caméras de surveillance augmentées d'IA lors des Jeux olympiques et paralympiques s'est avérée positive. Le gouvernement réfléchit donc à l'installer durablement sur...

Formation TensorFlow : Coder un réseau de neurones récurrent

Dans cette nouvelle vidéo de formation à TensorFlow 2.0, nous allons coder notre premier réseau de neurones récurrent. Ce cours s’appuie sur deux vidéos précédentes : Comprendre les réseaux de neurones récurrents, comprendre les réseaux LSTM.

Accéder au Notebook (code source) de ce cours

 

Retourner au sommaire de la formation à TensorFlow

 

 

Transcription de cette vidéo

On a vu dans les dernières vidéos comment on pouvait générer des batchs, on a donc une méthode pour générer des batchs, on a vu l’importance du one hot encoding, on a vu à quoi ressemblait notre dataset, maintenant on va voir comment créer notre réseau de neurones récurrent. L’important pour pouvoir suivre cette vidéo, c’est vraiment que vous ayez une compréhension des vidéos que j’ai faites sur les réseaux de neurones récurrents pour comprendre comment ça fonctionne. On va direcctement partir sur la création de notre modèle. Le modèle qu’on va créer, ça va être celui-ci. C’est un peu différent des modèles que j’ai montré précédemment, ou l’on avait directement les cellules LSTM et les outputs. Je vais stacker les cellules LSTM (les mettre les unes sur les autres). Sachant que les cellules du même étage sont les mêmes, si ce n’est que les états sont différents puisque nous sommes à des instants différents de la séquence. Mais les cellules des deux étages sont différentes. Cela nous permet d’augmenter le nombre de features qui vont pouvoir être détectées par notre réseau et les combinaisons possibles qui vont être effectuées pour pouvoir générer des lettres et du texte. C’est la seule nuance, mais on va voir que dans l’implémentation, l’ajout de ce layer ne va pas beaucoup faire varier l’implémentation du réseau. Si ce n’est qu’on a un état initial par cellule LSTM. Nous allons définir dans tf_inputs les entrées de notre réseau, en utilisant tf.keras.Input. (Nous utilisons la valeur None pour ne pas avoir à déterminer de valeur fixe dès à présent). En revanche, on spécifie une taille de batch dès à présent : 64. Cette fois, nous ne ferons pas de subclassing, contrairement aux dernières vidéos. Nous définirons directement nos layers. Je définis mon premier one hot layer (défini dans la vidéo précédente). On instantie le layer en lui passant l’input. Mais ce dernier n’est pas encore rempli. Nous voyons que le code fonctionne directement, mais qu’on obtient un tensor qui n’a pas encore de valeur. Il est ensuite très facile de définir nos layers de cellules LSTM grâce à tf.keras.layers.LSTM . On définit la taille des états de notre cellule ( 128 valeurs dans l’exemple) , ainsi que les paramètres return_sequences (qui permet de récupérer toute la séquence d’un seul coup si on le met à True, ou de ne récupérer que le dernier élément de la séquence si on le met à False). Nous avons également le paramètre stateful qui permet de ne pas retourner à l’état initial à chaque appel. Nous passons one_hot en paramètre de notre premier layer. Nous définissons ensuite notre deuxième layer de manière identique, en passant cette fois notre premier layer en paramètre du précédent. Nous ajoutons ensuite un dense layer caché avec activation relu et nous lui passons en entrée la sortie du 2ème layer LSTM. Nous déclarons ensuite notre layer de sortie, qui est également de type Dense, en utilisant la méthode d’activation softmax et en passant en entrée notre layer caché. Il ne nous reste plus qu’à créer notre modèle avec tf.keras.Model en définissant les paramètres inputs à tf_inputs et outputs à outputs.

Nous voyons ensuite comment réinitialiser les cellules de notre modèle RNN. Nous verrons prochainement comment entrainer ce modèle.

Contributeur expert

Thibault Neveu

Thibault Neveu est un entrepreneur, ingénieur de recherche spécialisé dans l’apprentissa

Partager l'article

Vendée Territoire Connecté : réseau d’objets connectés et jumeau numérique au service de la transition écologique

Vendée Territoire Connecté, l'un des douze projets lauréats de l'appel à projets DIAT, entre dans sa phase opérationnelle. Porté par Vendée Numérique et soutenu...

Nomination de Clara Chappaz : La voie vers une nouvelle mission ?

En ligne avec l’intervention en Serbie d’Emmanuel Macron fin août, la nomination de Clara Chappaz en tant que Secrétaire d’Etat Chargée de l’Intelligence Artificielle...

Mozilla appelle à créer une alternative publique à l’IA privée dominée par les Big Tech

Si l'organisation à but non-lucratif Mozilla est connue principalement pour son navigateur web, Mozilla Firefox, elle, œuvre sans relâche en faveur des libertés numériques, de...

IA et sûreté : vers une généralisation des caméras de vidéosurveillance intelligentes en France

L'expérimentation des caméras de surveillance augmentées d'IA lors des Jeux olympiques et paralympiques s'est avérée positive. Le gouvernement réfléchit donc à l'installer durablement sur...