เวอร์ชันภาษาจีน中文版
Pytorch-Lightning เป็นห้องสมุดที่สะดวกมาก มันสามารถมองเห็นได้ว่าเป็นนามธรรมและบรรจุภัณฑ์ของ pytorch ข้อดีของมันคือความสามารถในการนำกลับมาใช้ใหม่ได้ง่ายการบำรุงรักษาที่ง่ายตรรกะที่ชัดเจน ฯลฯ ข้อเสียคือมันหนักเกินไปและต้องใช้เวลาสักครู่ในการเรียนรู้และเข้าใจ นอกจากนี้เนื่องจากมันเชื่อมโยงโมเดลและรหัสการฝึกอบรมโดยตรงจึงไม่เหมาะสำหรับโครงการจริงที่มีหลายรุ่นและไฟล์ชุดข้อมูล เช่นเดียวกับการออกแบบโมดูลข้อมูล การมีเพศสัมพันธ์ที่แข็งแกร่งของสิ่งต่าง ๆ เช่น Dataloader และชุดข้อมูลที่กำหนดเองยังทำให้เกิดปัญหาที่คล้ายกัน: รหัสเดียวกันถูกคัดลอกและวางอย่างไม่ถูกต้องที่นี่และที่นั่น
หลังจากการสำรวจและฝึกฝนมากมายฉันได้สรุปเทมเพลตต่อไปนี้ซึ่งอาจเป็นนามธรรมต่อไปของการเปิดไฟ pytorch ในเวอร์ชันแรกเนื้อหาเทมเพลตทั้งหมดอยู่ภายใต้โฟลเดอร์รูท อย่างไรก็ตามหลังจากใช้งานมานานกว่าหนึ่งเดือนฉันพบว่าเทมเพลตที่ระบุเพิ่มเติมสำหรับโครงการประเภทต่าง ๆ สามารถเพิ่มประสิทธิภาพการเข้ารหัส ตัวอย่างเช่นงานการจำแนกและความละเอียดสูงล้วนมีจุดอุปสงค์ที่แน่นอน รหัสโครงการสามารถใช้งานได้เร็วขึ้นโดยการปรับเปลี่ยนเทมเพลตเฉพาะทางโดยตรงและข้อบกพร่องที่หลีกเลี่ยงได้บางอย่างก็ลดลงเช่นกัน
** ปัจจุบันเนื่องจากนี่ยังคงเป็นห้องสมุดใหม่จึงมีเทมเพลตทั้งสองนี้เท่านั้น อย่างไรก็ตามในภายหลังเมื่อฉันนำไปใช้กับโครงการอื่น ๆ เทมเพลตพิเศษใหม่จะถูกเพิ่มเข้ามา หากคุณใช้เทมเพลตนี้สำหรับงานของคุณ (เช่น NLP, GAN, การจดจำคำพูด ฯลฯ ) คุณสามารถส่ง PR เพื่อให้คุณสามารถรวมเทมเพลตของคุณเข้ากับห้องสมุดเพื่อให้ผู้คนใช้มากขึ้น หากงานของคุณยังไม่อยู่ในรายการการเริ่มต้นจากเทมเพลต 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 รับผิดชอบงานต่อไปนี้เท่านั้น:
Interface เช่นในบรรทัดคำสั่งคุณสามารถเพิ่มรายการแยกวิเคราะห์ได้โดยตรงในไฟล์ main.py ตัวอย่างเช่นมีอาร์กิวเมนต์สตริงที่เรียกว่า random_arg main.py สามารถเพิ่ม parser.add_argument('--random_arg', default='test', type=str) ได้callback ที่จำเป็นเช่นการประหยัดอัตโนมัติหยุดเร็วและ LR Scheduler 。MInterface , DInterface , Trainer 。ครีบ.
สิ่งหนึ่งที่คุณต้องให้ความสนใจคือเพื่อให้ MInterface และ DInterface สามารถแยกวิเคราะห์รุ่นและชุดข้อมูลที่เพิ่มขึ้นใหม่ของคุณ standard_net.py อัตโนมัติโดยระบุอาร์กิวเมนต์ --model_name และ --dataset ชุดข้อมูลเราใช้เคส 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}
}