Version chinoise 中文版
Pytorch-Lightning est une bibliothèque très pratique. Il peut être considéré comme une abstraction et un emballage de pytorch. Ses avantages sont une forte réutilisabilité, une maintenance facile, une logique claire, etc. L'inconvénient est qu'il est trop lourd et nécessite pas mal de temps pour apprendre et comprendre. De plus, comme il lie directement le modèle et le code de formation, il ne convient pas aux projets réels avec plusieurs fichiers de modèle et de données. Il en va de même pour la conception du module de données. Le couplage fort de choses comme DatalOader et les ensembles de données personnalisés provoque également un problème similaire: le même code est copié et collé de manière inélégamment ici et là.
Après beaucoup d'exploration et de pratique, j'ai résumé les modèles suivants, qui peuvent également être une autre abstraction de l'éclairage de Pytorch. Dans la première version, tout le contenu du modèle est sous le dossier racine. Cependant, après l'avoir utilisé pendant plus d'un mois, j'ai constaté que des modèles plus spécifiés pour différents types de projets peuvent augmenter l'efficacité du codage. Par exemple, les tâches de classification et de super-résolution ont toutes des points de demande fixe. Le code de projet peut être implémenté plus rapidement en modifiant directement des modèles spécialisés, et certains bogues évitables ont également été réduits.
** Actuellement, comme il s'agit encore d'une nouvelle bibliothèque, il n'y a que ces deux modèles. Cependant, plus tard, comme je l'applique à d'autres projets, de nouveaux modèles spécialisés seront également ajoutés. Si vous avez utilisé ce modèle pour vos tâches (telles que NLP, Gan, Reconnaissance de la parole, etc.), vous êtes invités à soumettre un RP afin que vous puissiez intégrer votre modèle dans la bibliothèque pour plus de personnes. Si votre tâche n'est pas encore sur la liste, à partir du modèle classification est un bon choix. Étant donné que la plupart de la logique sous-jacente et du code des modèles sont les mêmes, cela peut être fait très rapidement. **
Tout le monde est invité à essayer cet ensemble de styles de code. Il est tout à fait pratique de réutiliser si vous y êtes habitué, et il n'est pas facile de retomber dans le trou. Une explication plus détaillée et un guide complet de la lumière de Pytorch peuvent être trouvés dans le blog de cet article Zhihu.
root-
|-data
|-__init__.py
|-data_interface.py
|-xxxdataset1.py
|-xxxdataset2.py
|-...
|-model
|-__init__.py
|-model_interface.py
|-xxxmodel1.py
|-xxxmodel2.py
|-...
|-main.py
|-utils.py
Aucune installation n'est nécessaire. Exécutez directement git clone https://github.com/miracleyoo/pytorch-lightning-template.git pour le cloner à votre poste local. Choisissez votre type de problème comme classification et copiez le modèle correspondant dans votre répertoire de projet.
Trois sont seulement main.py et utils.py dans le répertoire racine. Le premier est l'entrée du code, et le second est un fichier d'assistance.
Il y a un fichier __init__.py dans le dossier data et modle pour en faire des packages. De cette façon, l'importation devient plus facile.
Créez une class DInterface(pl.LightningDataModule): dans data_interface pour fonctionner comme l'interface de tous les différents fichiers de jeu de données garantis. La classe d'ensemble de données correspondante est importée dans la fonction __init__() . Les instanciations sont effectuées dans la setup() et train_dataloader , val_dataloader , test_dataloader Les fonctions sont créées.
De même, Class class MInterface(pl.LightningModule): sont créés dans model_interface pour fonctionner comme l'interface de tous vos fichiers de modèle. La classe de modèle correspondante est importée dans la fonction __init__() . Les seules choses que vous devez modifier dans l'interface sont les fonctions comme configure_optimizers , training_step , validation_step qui contrôlent votre propre processus de formation. Une interface pour tous les modèles, et la différence est gérée dans les args.
main.py n'est responsable que des tâches suivantes:
Interface , vous pouvez directement ajouter un élément d'analyse dans le fichier main.py Par exemple, il existe un argument de chaîne appelé random_arg , vous pouvez ajouter parser.add_argument('--random_arg', default='test', type=str) au fichier main.pycallback nécessaires, comme la sauvegarde automatique, le stop précoce et le planificateur LR。MInterface , DInterface , Trainer 。Ailette.
Une chose à laquelle vous devez prêter attention est, afin de laisser automatiquement le MInterface et DInterface pour analyser automatiquement vos modèles et vos ensembles de données nouvellement ajoutés en spécifiant simplement l'argument --model_name et --dataset , nous utilisons le même contenu (comme standard_net.py ) pour le fichier de modèle / jeu de données, et utilisons le même contenu avec le nom de classe Standard_net, comme StandardNet .
Il en va de même pour le dossier data .
Bien que cela semble restreindre votre dénomination des modèles et des ensembles de données, mais cela peut également rendre votre code plus facile à lire et à comprendre. Veuillez faire attention à ce point pour éviter les problèmes d'analyse.
Si vous avez utilisé ce modèle et que vous le trouvez utile à vos recherches, veuillez envisager de citer notre article:
@article{ZHANG2023126388,
title = {Neuromorphic high-frequency 3D dancing pose estimation in dynamic environment},
journal = {Neurocomputing},
volume = {547},
pages = {126388},
year = {2023},
issn = {0925-2312},
doi = {https://doi.org/10.1016/j.neucom.2023.126388},
url = {https://www.sciencedirect.com/science/article/pii/S0925231223005118},
author = {Zhongyang Zhang and Kaidong Chai and Haowen Yu and Ramzi Majaj and Francesca Walsh and Edward Wang and Upal Mahbub and Hava Siegelmann and Donghyun Kim and Tauhidur Rahman},
keywords = {Event Camera, Dynamic Vision Sensor, Neuromorphic Camera, Simulator, Dataset, Deep Learning, Human Pose Estimation, 3D Human Pose Estimation, Technology-Mediated Dancing},
}
@InProceedings{Zhang_2022_WACV,
author = {Zhang, Zhongyang and Xu, Zhiyang and Ahmed, Zia and Salekin, Asif and Rahman, Tauhidur},
title = {Hyperspectral Image Super-Resolution in Arbitrary Input-Output Band Settings},
booktitle = {Proceedings of the IEEE/CVF Winter Conference on Applications of Computer Vision (WACV) Workshops},
month = {January},
year = {2022},
pages = {749-759}
}