> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-docs-2751.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# TensorFlow

> Intégrez W&B à TensorFlow pour la journalisation de métriques personnalisées, l’utilisation de hooks d’estimateur et la synchronisation des journaux TensorBoard.

export const ColabLink = ({url}) => <a href={url} target="_blank" rel="noopener noreferrer" className="colab-link">
    <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M14.25.18l.9.2.73.26.59.3.45.32.34.34.25.34.16.33.1.3.04.26.02.2-.01.13V8.5l-.05.63-.13.55-.21.46-.26.38-.3.31-.33.25-.35.19-.35.14-.33.1-.3.07-.26.04-.21.02H8.77l-.69.05-.59.14-.5.22-.41.27-.33.32-.27.35-.2.36-.15.37-.1.35-.07.32-.04.27-.02.21v3.06H3.17l-.21-.03-.28-.07-.32-.12-.35-.18-.36-.26-.36-.36-.35-.46-.32-.59-.28-.73-.21-.88-.14-1.05-.05-1.23.06-1.22.16-1.04.24-.87.32-.71.36-.57.4-.44.42-.33.42-.24.4-.16.36-.1.32-.05.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75-.02-.37.05-.34.11-.31.17-.28.25-.26.31-.23.38-.2.44-.18.51-.15.58-.12.64-.1.71-.06.77-.04.84-.02 1.27.05zm-6.3 1.98l-.23.33-.08.41.08.41.23.34.33.22.41.09.41-.09.33-.22.23-.34.08-.41-.08-.41-.23-.33-.33-.22-.41-.09-.41.09zm13.09 3.95l.28.06.32.12.35.18.36.27.36.35.35.47.32.59.28.73.21.88.14 1.04.05 1.23-.06 1.23-.16 1.04-.24.86-.32.71-.36.57-.4.45-.42.33-.42.24-.4.16-.36.09-.32.05-.24.02-.16-.01h-8.22v.82h5.84l.01 2.76.02.36-.05.34-.11.31-.17.29-.25.25-.31.24-.38.2-.44.17-.51.15-.58.13-.64.09-.71.07-.77.04-.84.01-1.27-.04-1.07-.14-.9-.2-.73-.25-.59-.3-.45-.33-.34-.34-.25-.34-.16-.33-.1-.3-.04-.25-.02-.2.01-.13v-5.34l.05-.64.13-.54.21-.46.26-.38.3-.32.33-.24.35-.2.35-.14.33-.1.3-.06.26-.04.21-.02.13-.01h5.84l.69-.05.59-.14.5-.21.41-.28.33-.32.27-.35.2-.36.15-.36.1-.35.07-.32.04-.28.02-.21V6.07h2.09l.14.01.21.03zm-6.47 14.25l-.23.33-.08.41.08.41.23.33.33.23.41.08.41-.08.33-.23.23-.33.08-.41-.08-.41-.23-.33-.33-.23-.41-.08-.41.08z" />
    </svg>
    Essayer sur Colab
  </a>;

<ColabLink url="https://colab.research.google.com/drive/1JCpAbjkCFhYMT7LCQ399y35TS3jlMpvM" />

Cette page explique comment intégrer W\&B à TensorFlow pour suivre les expériences, consigner des métriques et synchroniser les journaux TensorBoard. Suivez ces approches pour capturer les données d’entraînement des modèles TensorFlow, personnaliser ce que vous consignez à l’aide de hooks d’estimateur ou d’une journalisation manuelle, et réutiliser vos flux de travail TensorBoard existants avec le tableau de bord centralisé de W\&B. Utilisez cette intégration si vous souhaitez un suivi des expériences plus riche que celui fourni par TensorBoard seul.

<div id="get-started">
  ## Pour commencer
</div>

Si vous utilisez déjà TensorBoard, vous pouvez l’intégrer à W\&B. Importez les deux bibliothèques afin de pouvoir utiliser les API W\&B et TensorFlow dans votre script.

```python theme={null}
import tensorflow as tf
import wandb
```

<div id="log-custom-metrics">
  ## Consigner des métriques personnalisées
</div>

Cette section explique comment consigner des métriques que TensorBoard ne capture pas déjà, afin que vous puissiez suivre des valeurs supplémentaires en plus de vos résumés TensorBoard standard.

Si vous devez consigner d’autres métriques personnalisées que TensorBoard ne journalise pas, vous pouvez appeler `run.log()` dans votre code, par exemple `run.log({"custom": 0.8})`.

W\&B désactive l’argument `step` dans `run.log()` lors de la synchronisation avec TensorBoard. Pour définir un nombre d’étapes différent, consignez les métriques avec une métrique d’étape, comme suit :

```python theme={null}
with wandb.init(config=tf.flags.FLAGS, sync_tensorboard=True) as run:
    run.log({"custom": 0.8, "global_step":global_step}, step=global_step)
```

<div id="tensorflow-estimators-hook">
  ## Hook pour les estimateurs TensorFlow
</div>

Cette section décrit le hook W\&B pour les estimateurs TensorFlow, qui vous permet de contrôler finement ce que W\&B capture pendant l’entraînement de l’estimateur.

Si vous souhaitez mieux contrôler ce qui est journalisé, W\&B propose également un hook pour les estimateurs TensorFlow. Ce hook journalise toutes les valeurs `tf.summary` du graphe.

```python theme={null}
import tensorflow as tf
import wandb

run = wandb.init(config=tf.FLAGS)

estimator.train(hooks=[wandb.tensorflow.WandbHook(steps_per_log=1000)])
run.finish()
```

<div id="log-manually">
  ## Journaliser manuellement
</div>

Si vous n’utilisez pas d’estimateurs ou si vous souhaitez consigner explicitement des synthèses spécifiques, cette section montre comment envoyer directement des valeurs `tf.summary` à W\&B.

Une façon de consigner des métriques dans TensorFlow consiste à utiliser `tf.summary` avec le logger de TensorFlow :

```python theme={null}
import wandb
run = wandb.init(config=tf.flags.FLAGS, sync_tensorboard=True)
with tf.Session() as sess:
    # ...
    wandb.tensorflow.log(tf.summary.merge_all())
```

Avec TensorFlow 2, la manière recommandée d’entraîner un modèle avec une boucle personnalisée est d’utiliser `tf.GradientTape`. Pour plus d'informations, voir le [guide pas à pas TensorFlow sur l’entraînement personnalisé](https://www.tensorflow.org/tutorials/customization/custom_training_walkthrough). Pour intégrer W\&B afin de consigner des métriques dans vos boucles d’entraînement TensorFlow personnalisées, suivez cet extrait :

```python theme={null}
    with tf.GradientTape() as tape:
        # Obtenir les probabilités
        predictions = model(features)
        # Calculer la perte
        loss = loss_func(labels, predictions)

    # Consigner vos métriques
    run.log({"loss": loss.numpy()})
    # Obtenir les gradients
    gradients = tape.gradient(loss, model.trainable_variables)
    # Mettre à jour les poids
    optimizer.apply_gradients(zip(gradients, model.trainable_variables))
```

Un [exemple complet pour personnaliser les boucles d'entraînement dans TensorFlow 2](https://www.wandb.com/articles/wandb-customizing-training-loops-in-tensorflow-2) est disponible.

<div id="differences-between-wb-and-tensorboard">
  ## Différences entre W\&B et TensorBoard
</div>

Si vous vous demandez s’il faut adopter W\&B en complément de TensorBoard ou à la place, cette section met en évidence les principales différences.

W\&B a été conçu pour remédier aux limites couramment rencontrées par les utilisateurs de TensorBoard. Voici les principaux points qui distinguent W\&B :

* **Reproduire les modèles** : W\&B prend en charge l’expérimentation, l’exploration et la reproduction ultérieure des modèles. W\&B capture les métriques, les hyperparamètres et la version du code, et peut enregistrer l’état de votre gestion de versions ainsi que les points de contrôle du modèle afin de rendre votre projet reproductible.
* **Organisation automatique** : Lorsque vous reprenez un projet d’un collaborateur, y revenez après une période d’absence ou revisitez un ancien projet, W\&B vous permet de voir les modèles que vous avez déjà essayés afin de ne pas relancer inutilement des expériences.
* **Intégration flexible** : Ajoutez W\&B à votre projet en installant le package Python open source et en ajoutant quelques lignes à votre code. Chaque run produit des métriques et des enregistrements.
* **Tableau de bord centralisé et persistant** : Que vous entraîniez vos modèles sur votre machine locale, sur un cluster de laboratoire partagé ou sur des instances spot dans le cloud, W\&B envoie vos résultats vers un même tableau de bord centralisé. Vous n’avez pas besoin de copier et d’organiser des fichiers TensorBoard provenant de différentes machines.
* **Tableaux** : Recherchez, filtrez, triez et regroupez les résultats de différents modèles. Vous pouvez examiner les versions des modèles et trouver les plus performants pour différentes tâches.
* **Outils de collaboration** : Utilisez W\&B pour organiser vos projets de machine learning. Partagez un lien vers W\&B ou utilisez des Teams privées pour envoyer des résultats vers un projet partagé. Reports prend en charge la collaboration grâce à des visualisations interactives et à des descriptions en Markdown, que vous pouvez utiliser pour tenir un journal de travail, partager vos conclusions avec votre responsable ou les présenter à votre laboratoire ou à votre équipe.

Pour essayer W\&B, [créez un compte gratuit](https://wandb.ai).

<div id="examples">
  ## Exemples
</div>

Pour voir ces schémas d’intégration appliqués à des projets complets, explorez les exemples suivants :

* [Exemple MNIST avec estimateurs TensorFlow](https://github.com/wandb/examples/blob/master/examples/tensorflow/tf-estimator-mnist/mnist.py).
* [Exemple Fashion MNIST avec TensorFlow pur](https://github.com/wandb/examples/blob/master/examples/tensorflow/tf-cnn-fashion/train.py).
* [Tableau de bord W\&B pour l’exemple MNIST](https://app.wandb.ai/l2k2/examples-tf-estimator-mnist/runs/p0ifowcb).
* Personnalisation des boucles d’entraînement dans TensorFlow 2 : [article](https://www.wandb.com/articles/wandb-customizing-training-loops-in-tensorflow-2) et [tableau de bord](https://app.wandb.ai/sayakpaul/custom_training_loops_tf).
