[PYTHON] Bug où "val_loss" n'est pas trouvé lors de l'utilisation de l'arrêt anticipé dans pytorch-lightning (0.5.3.2)

supposition

(*** Ceci est un article du 9 janvier 2020 **. Je pense qu'il n'y aura pas de problème dans un proche avenir.)

Pytorch Lightning est la trompette semblable à Keras de PyTorch. Il est intéressant de pouvoir écrire de manière compacte autour de modèles, d'apprentissage et de données.

Pour plus de détails, consultez l'article suivant de @fam_taro.

PyTorch Sangokushi (Ignite / Catalyst / Lightning) --Qiita

Cela semble très pratique, mais j'ai rencontré un bogue au début de l'installation, je vais donc vous rapporter le contenu et la solution.

environnement

OS: macOS 10.14.6 Python: 3.7.3 pytorch-lightning: 0.5.3.2 Comment installer Pytorch Lightning: pip install pytorch-lightning

punaise

L'arrêt anticipé est implémenté dans Pytorch Lightning, Vous pouvez l'écrire avec le code suivant (clean).

Partie de définition de modèle(Extrait)


import pytorch_lightning as pl
class MyModel(pl.LightningModule):
    ...
    def validation_step(self, batch, batch_nb):
        x, y = batch
        y_hat = self.forward(x)
        return {'val_batch_loss': F.cross_entropy(y_hat, y)}

    def validation_end(self, outputs):
        val_loss = torch.stack([x['val_batch_loss'] for x in outputs]).mean()
        log = {'val_loss': val_loss}
        return {'log': log}
    ...

Early_Autour de l'arrêt


early_stop_callback = EarlyStopping(
    min_delta=0.00,
    patience=1,
    verbose=False,
    monitor='val_loss',
    mode='min',
)
model = MyModel()
trainer = pl.Trainer(early_stop_callback=early_stop_callback)
trainer.fit(model) 

Cependant, lorsque je l'ai exécuté, j'ai eu l'erreur suivante et cela n'a pas fonctionné. (Je ne sais pas si cela arrive toujours, mais pour le moment, cela a toujours été reproduit dans mon environnement d'exécution.)

Early stopping conditioned on metric `val_loss` which is not available. Available metrics are: loss,train_loss

Ce bogue a également été signalé sur le numéro officiel.

https://github.com/williamFalcon/pytorch-lightning/issues/490

Solution

Il a été corrigé dans la dernière branche principale, donc l'installer avec la commande suivante corrigera le bogue.

pip install git+https://github.com/williamFalcon/pytorch-lightning.git@master --upgrade

point important

L'installation de la dernière branche est susceptible de provoquer une divergence d'API entre ** 9 janvier 2020 ** Documentation actuelle.

Exemple: modifiez l'argument de la méthode d'initialisation de la classe d'enregistrement de point de contrôle pytorch_lightning.callbacks.ModelCheckpoint (Page applicable)

Probablement, lorsqu'une version supérieure à 0.5.3.2 est publiée, l'habituel pip install pytorch-lightning conviendra.

référence

Recommended Posts

Bug où "val_loss" n'est pas trouvé lors de l'utilisation de l'arrêt anticipé dans pytorch-lightning (0.5.3.2)
Traitement d'image avec PIL (Pillow)
[Erreur] Symbole introuvable: _PyUnicodeUCS2_Compare
Précautions lors de l'utilisation de phantomjs de python
Bug où "val_loss" n'est pas trouvé lors de l'utilisation de l'arrêt anticipé dans pytorch-lightning (0.5.3.2)
La commande est introuvable dans sudo
Lorsque la recherche ne fonctionne pas dans la banque de données de GAE
Il y a un modèle que le programme ne s'est pas arrêté lors de l'utilisation du thread Python
Lorsque l'objet sélectionné dans bpy.context.selected_objects n'est pas renvoyé
Lorsque "ERREUR: HTTP n'est pas pris en charge." S'affiche dans mpsyt
À propos du problème que nosetests ne passe pas lorsque __init__.py est créé dans le répertoire du projet
Que faire lorsqu'un artefact manquant se produit dans un fichier jar qui n'est pas défini dans pom.xml
Scripts pouvant être utilisés lors de l'utilisation de Bottle en Python
J'ai un TypeError: l'objet 'int' n'est pas itérable lors de l'utilisation de keras
[Golang] "Le package exec n'est pas dans GOROOT" lors de l'exécution du test
[Super débutant] [Intermédiaire fatigué] Lorsque "commande non trouvée" ou "commande non trouvée" s'affiche