Moving on, we define our train and evaluate functions. In our train function, we have our generic code which takes samples from dataloader. Next, batch_graphs, batch_x, batch_e, batch_snorm_n and batch_snorm_e are fed into our model which returns batch_scores (of size 8). The predicted scores are compared with the ground truth in our loss function: loss(batch_scores, batch_labels). Then, we zero out gradients (optimizer.zero_grad()), perform backprop (J.backward()) and updates our weights (optimizer.step()). Finally, loss for epoch and training accuracy is calculated. Furthermore, we use a similar code for our evaluate function.
Ensuite, nous définissons nos fonctions train et evaluate. Dans notre fonction train, nous avons notre code générique qui prend des échantillons dans le dataloader. Ensuite, les batch_graphs, batch_x, batch_e, batch_snorm_n et batch_snorm_e sont introduits dans notre modèle qui retourne des batch_scores (de taille 8). Les scores prédits sont comparés à la vérité de base dans notre fonction de perte : loss(batch_scores, batch_labels). Ensuite, nous mettons à zéro les gradients (optimizer.zero_grad()), nous effectuons une rétropropagation (J.backward()) et nous mettons à jour nos poids (optimizer.step()). Enfin, la perte pour l’époque et la précision de l’entraînement est calculée. Nous utilisons un code similaire pour notre fonction evaluate.