> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wandb.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# PyTorch Geometric

> Intégrez W&B à PyTorch Geometric pour la visualisation de graphes et le suivi des expériences en apprentissage profond géométrique.

[PyTorch Geometric](https://github.com/pyg-team/pytorch_geometric), ou PyG, est l’une des bibliothèques les plus populaires pour le deep learning géométrique, et W\&B s’y intègre extrêmement bien pour visualiser des graphes et suivre les expériences.

Après avoir installé PyTorch Geometric, suivez ces étapes pour démarrer.

<div id="sign-up-and-create-an-api-key">
  ## Inscrivez-vous et créez une clé API
</div>

Une clé API authentifie votre machine auprès de W\&B. Vous pouvez générer une clé API à partir de votre profil.

<Note>
  Pour une méthode plus directe, accédez aux [Paramètres utilisateur](https://wandb.ai/settings) et créez une clé API. Copiez immédiatement la clé API et conservez-la dans un endroit sûr, par exemple dans un gestionnaire de mots de passe.
</Note>

1. Cliquez sur l’icône de votre profil en haut à droite.
2. Sélectionnez **Paramètres utilisateur**, puis faites défiler la page jusqu’à la section **Clés API**.

<div id="install-the-wandb-library-and-log-in">
  ## Installez la bibliothèque `wandb` et connectez-vous
</div>

Pour installer la bibliothèque `wandb` en local et vous connecter :

<Tabs>
  <Tab title="Ligne de commande">
    1. Définissez la [variable d'environnement](/fr/models/track/environment-variables/) `WANDB_API_KEY` avec votre clé API.

       ```bash theme={null}
       export WANDB_API_KEY=<your_api_key>
       ```

    2. Installez la bibliothèque `wandb` et connectez-vous.

       ```shell theme={null}
       pip install wandb

       wandb login
       ```
  </Tab>

  <Tab title="Python">
    ```bash theme={null}
    pip install wandb
    ```

    ```python theme={null}
    import wandb
    wandb.login()
    ```
  </Tab>

  <Tab title="Python notebook">
    ```notebook theme={null}
    !pip install wandb

    import wandb
    wandb.login()
    ```
  </Tab>
</Tabs>

<div id="visualize-the-graphs">
  ## Visualiser les graphes
</div>

Vous pouvez enregistrer des informations sur les graphes en entrée, notamment le nombre d’arêtes, le nombre de nœuds, etc. W\&B prend en charge la consignation de graphiques Plotly et de panneaux HTML, de sorte que toutes les visualisations que vous créez pour votre graphe peuvent également être consignées dans W\&B.

<div id="use-pyvis">
  ### Utiliser PyVis
</div>

L’extrait suivant montre comment procéder avec PyVis et HTML.

```python theme={null}
from pyvis.network import Network
import wandb

with wandb.init(project=’graph_vis’) as run:
    net = Network(height="750px", width="100%", bgcolor="#222222", font_color="white")

    # Ajouter les arêtes du graphe PyG au réseau PyVis
    for e in tqdm(g.edge_index.T):
        src = e[0].item()
        dst = e[1].item()

        net.add_node(dst)
        net.add_node(src)
        
        net.add_edge(src, dst, value=0.1)

    # Enregistrer la visualisation PyVis dans un fichier HTML
    net.show("graph.html")
    run.log({"eda/graph": wandb.Html("graph.html")})
```

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541/w-lBKSCruauC3-2f/images/integrations/pyg_graph_wandb.png?fit=max&auto=format&n=w-lBKSCruauC3-2f&q=85&s=d104a8a4313b3fb077737cd3c2772ff2" alt="Visualisation interactive de graphes" width="1128" height="1120" data-path="images/integrations/pyg_graph_wandb.png" />
</Frame>

<div id="use-plotly">
  ### Utiliser Plotly
</div>

Pour utiliser Plotly afin de créer une visualisation de graphe, vous devez d’abord convertir le graphe PyG en objet NetworkX. Vous devrez ensuite créer des graphiques de dispersion Plotly pour les nœuds et les arêtes. L’extrait ci-dessous peut être utilisé pour cette tâche.

```python theme={null}
def create_vis(graph):
    G = to_networkx(graph)
    pos = nx.spring_layout(G)

    edge_x = []
    edge_y = []
    for edge in G.edges():
        x0, y0 = pos[edge[0]]
        x1, y1 = pos[edge[1]]
        edge_x.append(x0)
        edge_x.append(x1)
        edge_x.append(None)
        edge_y.append(y0)
        edge_y.append(y1)
        edge_y.append(None)

    edge_trace = go.Scatter(
        x=edge_x, y=edge_y,
        line=dict(width=0.5, color='#888'),
        hoverinfo='none',
        mode='lines'
    )

    node_x = []
    node_y = []
    for node in G.nodes():
        x, y = pos[node]
        node_x.append(x)
        node_y.append(y)

    node_trace = go.Scatter(
        x=node_x, y=node_y,
        mode='markers',
        hoverinfo='text',
        line_width=2
    )

    fig = go.Figure(data=[edge_trace, node_trace], layout=go.Layout())

    return fig


with wandb.init(project=’visualize_graph’) as run:
    run.log({‘graph’: wandb.Plotly(create_vis(graph))})
```

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541/w-lBKSCruauC3-2f/images/integrations/pyg_graph_plotly.png?fit=max&auto=format&n=w-lBKSCruauC3-2f&q=85&s=b2d743e7ed55760ca3c14f54770e6a3c" alt="Une visualisation créée à l’aide de la fonction d’exemple et enregistrée dans un tableau W&B." width="1999" height="644" data-path="images/integrations/pyg_graph_plotly.png" />
</Frame>

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

Vous pouvez utiliser W\&B pour suivre vos expériences et les métriques associées, comme les fonctions de perte, la précision, entre autres. Ajoutez la ligne suivante à votre boucle d'entraînement :

```python theme={null}
with wandb.init(project="my_project", entity="my_entity") as run:
    run.log({
        'train/loss': training_loss,
        'train/acc': training_acc,
        'val/loss': validation_loss,
        'val/acc': validation_acc
        })
```

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541/w-lBKSCruauC3-2f/images/integrations/pyg_metrics.png?fit=max&auto=format&n=w-lBKSCruauC3-2f&q=85&s=0b70d0d867dd87dae75c4dda357f76b1" alt="métriques hits@K au fil des époques" width="1999" height="1219" data-path="images/integrations/pyg_metrics.png" />
</Frame>

<div id="more-resources">
  ## Plus de ressources
</div>

* [Recommandation de produits Amazon à l’aide de réseaux neuronaux de graphes avec PyTorch Geometric](https://wandb.ai/manan-goel/gnn-recommender/reports/Recommending-Amazon-Products-using-Graph-Neural-Networks-in-PyTorch-Geometric--VmlldzozMTA3MzYw#what-does-the-data-look-like?)
* [Classification de nuages de points avec PyTorch Geometric](https://wandb.ai/geekyrakshit/pyg-point-cloud/reports/Point-Cloud-Classification-using-PyTorch-Geometric--VmlldzozMTExMTE3)
* [Segmentation de nuages de points avec PyTorch Geometric](https://wandb.ai/wandb/point-cloud-segmentation/reports/Point-Cloud-Segmentation-using-Dynamic-Graph-CNN--VmlldzozMTk5MDcy)
