Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Transformations | Tenseurs
Introduction à TensorFlow
course content

Contenu du cours

Introduction à TensorFlow

Introduction à TensorFlow

1. Tenseurs
2. Notions de Base de TensorFlow

book
Transformations

Transformations de Tenseurs

Bienvenue de retour ! Aujourd'hui, nous allons plonger plus profondément dans des opérations plus avancées : la transformation des tenseurs.

Les transformations de tenseurs sont cruciales lorsque vous travaillez avec des données. À mesure que vous vous enfoncez davantage dans les tâches d'apprentissage profond et de science des données, vous constaterez que les données avec lesquelles vous traitez ne sont pas toujours dans le format dont vous avez besoin. Cette leçon vous présentera des méthodes dans TensorFlow qui vous permettent de manipuler la structure et le contenu des tenseurs pour répondre à vos besoins.

Remodelage des Tenseurs

Lorsque vous travaillez avec des tenseurs, il y a des moments où vous aurez besoin de changer la forme sans altérer les données sous-jacentes. tf.reshape() est utile dans de tels moments.

Comment ça fonctionne :

  • Le remodelage change la structure du tenseur, mais pas ses données. Le nombre total d'éléments avant et après le remodelage doit rester le même;
  • Il fonctionne en "remplissant" la nouvelle forme ligne par ligne (de gauche à droite, de haut en bas).
1234567891011121314
import tensorflow as tf # Create a tensor with shape (3, 2) tensor = tf.constant([[1, 2], [3, 4], [5, 6]]) # Reshape the tensor to shape (2, 3) reshaped_tensor = tf.reshape(tensor, (2, 3)) print(reshaped_tensor) print('-' * 50) # Reshape the tensor to shape (6, 1); # The size of the first dimention is determined automatically reshaped_tensor = tf.reshape(tensor, (-1, 1)) print(reshaped_tensor)
copy

Remarque

Lors de la spécification de la nouvelle forme, une dimension peut être -1. TensorFlow calculera la taille de cette dimension afin que la taille totale reste constante.

Cela est particulièrement utile lorsque vous souhaitez alimenter des tenseurs dans un réseau de neurones mais que les dimensions ne correspondent pas à la forme d'entrée du réseau.

Découpage

Le découpage vous aide à extraire une partie d'un tenseur. C'est analogue au découpage de liste en Python mais étendu aux tenseurs multidimensionnels.

Comment ça fonctionne :

  • tf.slice() extrait une tranche d'un tenseur. Il nécessite l'indice de départ pour la tranche et la taille de la tranche ;
  • Si la taille est -1, cela signifie tous les éléments dans cette dimension.
12345678910111213
import tensorflow as tf # Create a tensor tensor = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Slice tensor to extract sub-tensor from index (0, 1) of size (1, 2) sliced_tensor = tf.slice(tensor, begin=(0, 1), size=(1, 2)) print(sliced_tensor) print('-' * 50) # Slice tensor to extract sub-tensor from index (1, 0) of size (2, 2) sliced_tensor = tf.slice(tensor, (1, 0), (2, 2)) print(sliced_tensor)
copy

Remarque

Rappelez-vous toujours de l'indexation basée sur zéro de TensorFlow, qui est similaire à l'indexation native de Python.

Modification des données

Il existe une autre manière de découper qui vous permet également de modifier les données originales, similaire au découpage de tableaux dans NumPy.

Comment ça fonctionne :

  • En utilisant [], vous pouvez facilement découper et indexer les tenseurs, semblable au découpage NumPy. Cette approche vous permet de sélectionner des lignes, colonnes ou éléments spécifiques d'un tenseur ;
  • Avec tf.Variable(), le tenseur devient mutable, permettant des modifications directes en utilisant le découpage ;
  • Pour modifier les valeurs du sous-tenseur sélectionné, utilisez la méthode .assign() avec un tenseur ou une liste qui correspond à sa forme.
12345678910111213
import tensorflow as tf # Create a mutable tensor tensor = tf.Variable([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Change the entire first row tensor[0, :].assign([0, 0, 0]) print(tensor) print('-' * 80) # Modify the second and the third columns tensor[:, 1:3].assign(tf.fill((3,2), 1)) print(tensor)
copy

Remarque

  • La syntaxe de découpage dans TensorFlow est largement inspirée de NumPy, donc si vous êtes familier avec NumPy, la transition vers le mécanisme de découpage de TensorFlow est simple ;
  • Assurez-vous toujours d'utiliser tf.Variable() pour toutes les opérations nécessitant la mutabilité des tenseurs.

Concaténation

La concaténation vous permet de joindre plusieurs tenseurs le long d'un axe spécifié.

Comment cela fonctionne :

  • tf.concat() combine les tenseurs. La méthode nécessite une liste de tenseurs que vous souhaitez concaténer et l'axe le long duquel effectuer l'opération;
  • L'axe est basé sur zéro. Un axe de 0 fait référence aux lignes (verticalement) et un axe de 1 fait référence aux colonnes (horizontalement).
123456789101112131415161718
import tensorflow as tf # Create two tensors tensor1 = tf.constant([[1, 2, 3], [4, 5, 6]]) tensor2 = tf.constant([[7, 8, 9]]) # Concatenate tensors vertically (along rows) concatenated_tensor = tf.concat([tensor1, tensor2], axis=0) print(concatenated_tensor) print('-' * 50) # Create another set of tensors tensor3 = tf.constant([[1, 2], [4, 5]]) tensor4 = tf.constant([[3], [6]]) # Concatenate tensors horizontally (along columns) concatenated_tensor = tf.concat([tensor3, tensor4], axis=1) print(concatenated_tensor)
copy

Remarque

  • Assurez-vous que les tenseurs que vous rejoignez ont des dimensions correspondantes sur les axes non concaténés ;
  • Cette opération est similaire à numpy.concatenate(), mais adaptée pour les tenseurs TensorFlow.
Tâche

Swipe to start coding

Contexte

Vous travaillez sur un ensemble de données composé de relevés de divers capteurs placés à différents emplacements géographiques. Ces capteurs enregistrent des données météorologiques telles que la température, la pression et les coordonnées géographiques normalisées.

Cependant, lors de la compilation des relevés, vous avez constaté que certaines données ont été enregistrées incorrectement.

Vous avez également reçu de nouveaux relevés d'autres capteurs que vous devez inclure.

Informations sur l'ensemble de données

  1. main_dataset: Un tenseur de forme (6, 4) représentant 6 relevés. Chaque ligne est un échantillon, et les colonnes représentent les caractéristiques suivantes :

    • Température (en Celsius).
    • Pression (en hPa).
    • Coordonnée de latitude normalisée.
    • Coordonnée de longitude normalisée.
  2. error_correction_data: Un tenseur de forme (2, 4) représentant 2 relevés corrigés pour les données erronées dans l'ensemble de données principal.

  3. additional_data: Un tenseur de forme (3, 4) représentant 3 nouveaux relevés.

Objectif

Préparer un ensemble de données corrigé et complet pour la prévision météorologique :

  1. Correction des données :

    • Vous avez découvert que les relevés des 2ème et 5ème lignes du main_dataset étaient inexacts. Remplacez ces lignes dans le main_dataset par les lignes de error_correction_data.
  2. Incorporer des données supplémentaires :

    • Concaténez le main_dataset avec additional_data pour incorporer les nouveaux relevés.
  3. Restructuration par lots :

    • Pour le besoin de l'entraînement par lots, vous souhaitez diviser l'ensemble de données en lots avec 3 relevés par lot. Restructurez complete_dataset, où la première dimension représente la taille du lot, et la deuxième dimension représente le nombre de relevés par lot.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 11
toggle bottom row

book
Transformations

Transformations de Tenseurs

Bienvenue de retour ! Aujourd'hui, nous allons plonger plus profondément dans des opérations plus avancées : la transformation des tenseurs.

Les transformations de tenseurs sont cruciales lorsque vous travaillez avec des données. À mesure que vous vous enfoncez davantage dans les tâches d'apprentissage profond et de science des données, vous constaterez que les données avec lesquelles vous traitez ne sont pas toujours dans le format dont vous avez besoin. Cette leçon vous présentera des méthodes dans TensorFlow qui vous permettent de manipuler la structure et le contenu des tenseurs pour répondre à vos besoins.

Remodelage des Tenseurs

Lorsque vous travaillez avec des tenseurs, il y a des moments où vous aurez besoin de changer la forme sans altérer les données sous-jacentes. tf.reshape() est utile dans de tels moments.

Comment ça fonctionne :

  • Le remodelage change la structure du tenseur, mais pas ses données. Le nombre total d'éléments avant et après le remodelage doit rester le même;
  • Il fonctionne en "remplissant" la nouvelle forme ligne par ligne (de gauche à droite, de haut en bas).
1234567891011121314
import tensorflow as tf # Create a tensor with shape (3, 2) tensor = tf.constant([[1, 2], [3, 4], [5, 6]]) # Reshape the tensor to shape (2, 3) reshaped_tensor = tf.reshape(tensor, (2, 3)) print(reshaped_tensor) print('-' * 50) # Reshape the tensor to shape (6, 1); # The size of the first dimention is determined automatically reshaped_tensor = tf.reshape(tensor, (-1, 1)) print(reshaped_tensor)
copy

Remarque

Lors de la spécification de la nouvelle forme, une dimension peut être -1. TensorFlow calculera la taille de cette dimension afin que la taille totale reste constante.

Cela est particulièrement utile lorsque vous souhaitez alimenter des tenseurs dans un réseau de neurones mais que les dimensions ne correspondent pas à la forme d'entrée du réseau.

Découpage

Le découpage vous aide à extraire une partie d'un tenseur. C'est analogue au découpage de liste en Python mais étendu aux tenseurs multidimensionnels.

Comment ça fonctionne :

  • tf.slice() extrait une tranche d'un tenseur. Il nécessite l'indice de départ pour la tranche et la taille de la tranche ;
  • Si la taille est -1, cela signifie tous les éléments dans cette dimension.
12345678910111213
import tensorflow as tf # Create a tensor tensor = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Slice tensor to extract sub-tensor from index (0, 1) of size (1, 2) sliced_tensor = tf.slice(tensor, begin=(0, 1), size=(1, 2)) print(sliced_tensor) print('-' * 50) # Slice tensor to extract sub-tensor from index (1, 0) of size (2, 2) sliced_tensor = tf.slice(tensor, (1, 0), (2, 2)) print(sliced_tensor)
copy

Remarque

Rappelez-vous toujours de l'indexation basée sur zéro de TensorFlow, qui est similaire à l'indexation native de Python.

Modification des données

Il existe une autre manière de découper qui vous permet également de modifier les données originales, similaire au découpage de tableaux dans NumPy.

Comment ça fonctionne :

  • En utilisant [], vous pouvez facilement découper et indexer les tenseurs, semblable au découpage NumPy. Cette approche vous permet de sélectionner des lignes, colonnes ou éléments spécifiques d'un tenseur ;
  • Avec tf.Variable(), le tenseur devient mutable, permettant des modifications directes en utilisant le découpage ;
  • Pour modifier les valeurs du sous-tenseur sélectionné, utilisez la méthode .assign() avec un tenseur ou une liste qui correspond à sa forme.
12345678910111213
import tensorflow as tf # Create a mutable tensor tensor = tf.Variable([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Change the entire first row tensor[0, :].assign([0, 0, 0]) print(tensor) print('-' * 80) # Modify the second and the third columns tensor[:, 1:3].assign(tf.fill((3,2), 1)) print(tensor)
copy

Remarque

  • La syntaxe de découpage dans TensorFlow est largement inspirée de NumPy, donc si vous êtes familier avec NumPy, la transition vers le mécanisme de découpage de TensorFlow est simple ;
  • Assurez-vous toujours d'utiliser tf.Variable() pour toutes les opérations nécessitant la mutabilité des tenseurs.

Concaténation

La concaténation vous permet de joindre plusieurs tenseurs le long d'un axe spécifié.

Comment cela fonctionne :

  • tf.concat() combine les tenseurs. La méthode nécessite une liste de tenseurs que vous souhaitez concaténer et l'axe le long duquel effectuer l'opération;
  • L'axe est basé sur zéro. Un axe de 0 fait référence aux lignes (verticalement) et un axe de 1 fait référence aux colonnes (horizontalement).
123456789101112131415161718
import tensorflow as tf # Create two tensors tensor1 = tf.constant([[1, 2, 3], [4, 5, 6]]) tensor2 = tf.constant([[7, 8, 9]]) # Concatenate tensors vertically (along rows) concatenated_tensor = tf.concat([tensor1, tensor2], axis=0) print(concatenated_tensor) print('-' * 50) # Create another set of tensors tensor3 = tf.constant([[1, 2], [4, 5]]) tensor4 = tf.constant([[3], [6]]) # Concatenate tensors horizontally (along columns) concatenated_tensor = tf.concat([tensor3, tensor4], axis=1) print(concatenated_tensor)
copy

Remarque

  • Assurez-vous que les tenseurs que vous rejoignez ont des dimensions correspondantes sur les axes non concaténés ;
  • Cette opération est similaire à numpy.concatenate(), mais adaptée pour les tenseurs TensorFlow.
Tâche

Swipe to start coding

Contexte

Vous travaillez sur un ensemble de données composé de relevés de divers capteurs placés à différents emplacements géographiques. Ces capteurs enregistrent des données météorologiques telles que la température, la pression et les coordonnées géographiques normalisées.

Cependant, lors de la compilation des relevés, vous avez constaté que certaines données ont été enregistrées incorrectement.

Vous avez également reçu de nouveaux relevés d'autres capteurs que vous devez inclure.

Informations sur l'ensemble de données

  1. main_dataset: Un tenseur de forme (6, 4) représentant 6 relevés. Chaque ligne est un échantillon, et les colonnes représentent les caractéristiques suivantes :

    • Température (en Celsius).
    • Pression (en hPa).
    • Coordonnée de latitude normalisée.
    • Coordonnée de longitude normalisée.
  2. error_correction_data: Un tenseur de forme (2, 4) représentant 2 relevés corrigés pour les données erronées dans l'ensemble de données principal.

  3. additional_data: Un tenseur de forme (3, 4) représentant 3 nouveaux relevés.

Objectif

Préparer un ensemble de données corrigé et complet pour la prévision météorologique :

  1. Correction des données :

    • Vous avez découvert que les relevés des 2ème et 5ème lignes du main_dataset étaient inexacts. Remplacez ces lignes dans le main_dataset par les lignes de error_correction_data.
  2. Incorporer des données supplémentaires :

    • Concaténez le main_dataset avec additional_data pour incorporer les nouveaux relevés.
  3. Restructuration par lots :

    • Pour le besoin de l'entraînement par lots, vous souhaitez diviser l'ensemble de données en lots avec 3 relevés par lot. Restructurez complete_dataset, où la première dimension représente la taille du lot, et la deuxième dimension représente le nombre de relevés par lot.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 11
Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
We're sorry to hear that something went wrong. What happened?
some-alt