النسخة الصينية 中文版
Pytorch-Lightning هي مكتبة مريحة للغاية. يمكن اعتباره تجريدًا وتغليفًا من Pytorch. مزاياها هي قابلية إعادة الاستخدام القوية ، وسهولة الصيانة ، والمنطق الواضح ، وما إلى ذلك. العيب هو أنه ثقيل للغاية ويتطلب الكثير من الوقت للتعلم والفهم. بالإضافة إلى ذلك ، نظرًا لأنه يربط النموذج ورمز التدريب مباشرةً ، فهو غير مناسب للمشاريع الحقيقية مع ملفات نموذجية متعددة ومجموعة بيانات. وينطبق الشيء نفسه على تصميم وحدة البيانات. يؤدي الاقتران القوي لأشياء مثل Dataloader ومجموعات البيانات المخصصة أيضًا إلى مشكلة مماثلة: يتم نسخ نفس الرمز ولصقه هنا وهناك.
بعد الكثير من الاستكشاف والممارسة ، قمت بتلخيص القوالب التالية ، والتي يمكن أن تكون أيضًا تجريدًا إضافيًا من Lightning Pytorch. في الإصدار الأول ، يكون جميع محتوى القالب تحت المجلد الجذر. ومع ذلك ، بعد استخدامه لأكثر من شهر ، وجدت أن قوالب أكثر تحديدًا لأنواع مختلفة من المشاريع يمكن أن تعزز كفاءة الترميز. على سبيل المثال ، تحتوي جميع المهام على التصنيف والمهام الفائقة على بعض نقاط الطلب الثابتة. يمكن تنفيذ رمز المشروع بشكل أسرع عن طريق تعديل القوالب المتخصصة مباشرة ، كما تم تقليل بعض الأخطاء التي يمكن تجنبها.
** حاليًا ، نظرًا لأن هذا لا يزال مكتبة جديدة ، فهناك فقط هذين القالبان. ومع ذلك ، في وقت لاحق أثناء تطبيقه على مشاريع أخرى ، سيتم أيضًا إضافة قوالب متخصصة جديدة. إذا كنت قد استخدمت هذا القالب لمهامك (مثل NLP ، GAN ، التعرف على الكلام ، وما إلى ذلك) ، فأنت مرحب بك لتقديم العلاقات العامة حتى تتمكن من دمج القالب الخاص بك في المكتبة لاستخدامها المزيد من الأشخاص. إذا لم تكن مهمتك في القائمة حتى الآن ، فإن البدء من قالب classification هو اختيار جيد. نظرًا لأن معظم المنطق والرمز الأساسي للقوالب متماثلون ، يمكن القيام بذلك بسرعة كبيرة. **
الجميع مرحب بهم لتجربة مجموعة أنماط التعليمات البرمجية هذه. من المريح تمامًا إعادة الاستخدام إذا كنت معتادًا على ذلك ، وليس من السهل العودة إلى الحفرة. يمكن العثور على شرح أكثر تفصيلاً ودليلًا كاملاً لـ Pytorch-Lightning في مدونة 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 ، ونسخ القالب المقابل إلى دليل المشروع الخاص بك.
Thre هي فقط 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 التي تتحكم في عملية التدريب الخاصة بك. يتم التعامل مع واجهة واحدة لجميع النماذج ، والفرق في args.
main.py مسؤول فقط عن المهام التالية:
random_arg ، كما parser.add_argument('--random_arg', default='test', type=str) الحال في سطر Interface ، main.py إضافة عنصر تحليل في ملف main.py مباشرة.callback المطلوبة ، مثل Save-Save و Early Stop و LR Scheduler。MInterface ، DInterface ، Trainer 。زعنفة.
أحد الأشياء التي تحتاج إلى الانتباه إليها ، من أجل السماح لـ MInterface و DInterface بإمكانك تحليل النماذج ومجموعات البيانات المضافة حديثًا تلقائيًا عن طريق تحديد الوسيطة --model_name و --dataset ، نستخدم حالة الأفعى (مثل 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}
}