Китайская версия 中文版
Pytorch-Lightning-очень удобная библиотека. Это можно рассматривать как абстракция и упаковка Pytorch. Его преимущества являются сильная возможность повторного использования, легкое обслуживание, четкая логика и т. Д. Недостатком является то, что она слишком тяжелая и требует довольно много времени для изучения и понимания. Кроме того, поскольку он напрямую связывает модель и код обучения, она не подходит для реальных проектов с несколькими модельными и файлами набора данных. То же самое относится и к дизайну модуля данных. Сильная связь таких вещей, как DataLoader и пользовательские наборы данных, также вызывает аналогичную проблему: тот же код копируется и вставлен неэлежественно здесь и там.
После долгих разведки и практики я суммировал следующие шаблоны, которые также могут быть дополнительной абстракцией пирогального фонарика. В первой версии все содержимое шаблона находится под корневой папкой. Однако, используя его более чем месяц, я обнаружил, что более указанные шаблоны для различных типов проектов могут повысить эффективность кодирования. Например, задачи классификации и супер-разрешения имеют некоторые фиксированные точки спроса. Код проекта может быть реализован быстрее путем непосредственного изменения специализированных шаблонов, и некоторые ошибки, которые можно избежать, также были уменьшены.
** В настоящее время, поскольку это все еще новая библиотека, есть только два шаблона. Однако позже, когда я применяю его к другим проектам, также будут добавлены новые специализированные шаблоны. Если вы использовали этот шаблон для своих задач (например, NLP, GAN, распознавание речи и т. Д.), Вы можете отправить PR, чтобы вы могли интегрировать свой шаблон в библиотеку, чтобы больше людей использовали. Если ваша задача еще не в списке, начиная с шаблона classification - хороший выбор. Поскольку большая часть базовой логики и кода шаблонов одинакова, это можно сделать очень быстро. **
Все могут попробовать этот набор стилей кода. Это довольно удобно использовать, если вы привыкли к этому, и нелегко упасть в отверстие. Более подробное объяснение и полное руководство по пирожеству можно найти в блоге этой статьи 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
Установка не требуется. Прямо запустите git clone https://github.com/miracleyoo/pytorch-lightning-template.git чтобы клонировать его на свою местную позицию. Выберите свой тип проблемы, такой как classification , и скопируйте соответствующий шаблон в каталог проекта.
Тра только main.py и utils.py в корневом каталоге. Первый является входом в код, а последний - файл поддержки.
Существует файл __init__.py в папке data и modle , чтобы превратить их в пакеты. Таким образом, импорт становится проще.
Создайте class DInterface(pl.LightningDataModule): в data_interface для работы в качестве интерфейса всех различных файлов набора данных. Соответствующий класс набора данных импортируется в функции __init__() . Инстанция выполняется в setup() , и создаются функции train_dataloader , val_dataloader , test_dataloader .
Аналогичным образом, класс class MInterface(pl.LightningModule): создаются в model_interface для работы в качестве интерфейса всех ваших модельных файлов. Соответствующий класс модели импортируется в функции __init__() . Единственное, что вам нужно изменить в интерфейсе, - это такие функции, как configure_optimizers , training_step , validation_step , которые управляют вашим собственным процессом обучения. Один интерфейс для всех моделей, и разница обрабатывается в ARG.
main.py отвечает только за следующие задачи:
Interface которые должны контролироваться random_arg , как в main.py строке parser.add_argument('--random_arg', default='test', type=str) вы можете напрямую добавить элемент анализа в файле main.pycallback , такие как авто-самая, ранняя остановка и планировщик LR。MInterface , DInterface , Trainer 。Плавник.
Одна вещь, на которую вам необходимо обратить внимание, заключается в том, чтобы, чтобы MInterface и DInterface автоматически проанализировали ваши вновь добавленные модели и наборы данных, просто указали аргумент --model_name и --dataset , мы используем корпус Snake (например, standard_net.py ) для файла модели/набора данных, и используем тот же контент с вариантом для версии для класса, например, StandardNet .
То же самое относится и к папке data .
Хотя это, кажется, ограничивает ваше название моделей и наборов данных, но это также может облегчить чтение и понимание вашего кода. Пожалуйста, обратите внимание на этот момент, чтобы избежать проблем с анализом.
Если вы использовали этот шаблон и обнаружите его полезным для вашего исследования, пожалуйста, рассмотрите возможность ссылаться на нашу статью:
@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}
}