Versi Cina 中文版
Pytorch-Lightning adalah perpustakaan yang sangat nyaman. Ini dapat dilihat sebagai abstraksi dan pengemasan pytorch. Keuntungannya adalah reusability yang kuat, pemeliharaan yang mudah, logika yang jelas, dll. Kerugiannya adalah terlalu berat dan membutuhkan sedikit waktu untuk belajar dan memahami. Selain itu, karena secara langsung mengikat model dan kode pelatihan, itu tidak cocok untuk proyek nyata dengan beberapa model dan file dataset. Hal yang sama berlaku untuk desain modul data. Kopling yang kuat dari hal -hal seperti Dataloader dan kumpulan data khusus juga menyebabkan masalah yang sama: kode yang sama disalin dan ditempelkan secara tidak sengaja di sana -sini.
Setelah banyak eksplorasi dan latihan, saya telah merangkum templat berikut, yang juga bisa menjadi abstraksi lebih lanjut dari pencahayaan pytorch. Di versi pertama, semua konten templat ada di bawah folder root. Namun, setelah menggunakannya selama lebih dari sebulan, saya menemukan bahwa templat yang lebih spesifik untuk berbagai jenis proyek dapat meningkatkan efisiensi pengkodean. Misalnya, tugas klasifikasi dan super-resolusi semuanya memiliki beberapa titik permintaan tetap. Kode proyek dapat diimplementasikan lebih cepat dengan secara langsung memodifikasi templat khusus, dan beberapa bug yang dapat dihindari juga telah dikurangi.
** Saat ini, karena ini masih merupakan perpustakaan baru, hanya ada dua templat ini. Namun, kemudian ketika saya menerapkannya pada proyek lain, templat khusus baru juga akan ditambahkan. Jika Anda telah menggunakan templat ini untuk tugas Anda (seperti NLP, GAN, pengenalan ucapan, dll.), Anda dipersilakan untuk mengirimkan PR sehingga Anda dapat mengintegrasikan templat Anda ke dalam perpustakaan untuk digunakan lebih banyak orang. Jika tugas Anda belum ada dalam daftar, mulai dari template classification adalah pilihan yang baik. Karena sebagian besar logika dan kode yang mendasari templat adalah sama, ini dapat dilakukan dengan sangat cepat. **
Setiap orang dipersilakan untuk mencoba set gaya kode ini. Cukup nyaman untuk menggunakan kembali jika Anda terbiasa, dan tidak mudah untuk kembali ke dalam lubang. Penjelasan yang lebih rinci dan panduan lengkap untuk pencahayaan pytorch dapat ditemukan di artikel ini blog 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
Tidak diperlukan instalasi. Langsung jalankan git clone https://github.com/miracleyoo/pytorch-lightning-template.git untuk mengkloningnya ke posisi lokal Anda. Pilih jenis masalah Anda seperti classification , dan salin template yang sesuai ke direktori proyek Anda.
Thre hanya main.py dan utils.py di direktori root. Yang pertama adalah pintu masuk kode, dan yang terakhir adalah file dukungan.
Ada file __init__.py di folder data dan modle untuk membuatnya menjadi paket. Dengan cara ini, impor menjadi lebih mudah.
Buat class DInterface(pl.LightningDataModule): Dalam data_interface untuk berfungsi sebagai antarmuka semua file dataset customized yang berbeda. Kelas dataset yang sesuai diimpor dalam fungsi __init__() . Instantiasi dilakukan dalam setup() , dan train_dataloader , val_dataloader , fungsi test_dataloader dibuat.
Demikian pula, kelas class MInterface(pl.LightningModule): dibuat di model_interface untuk berfungsi sebagai antarmuka semua file model Anda. Kelas model yang sesuai diimpor dalam fungsi __init__() . Satu -satunya hal yang perlu Anda modifikasi di antarmuka adalah fungsi seperti configure_optimizers , training_step , validation_step yang mengontrol proses pelatihan Anda sendiri. Satu antarmuka untuk semua model, dan perbedaannya ditangani dalam ARGS.
main.py hanya bertanggung jawab atas tugas -tugas berikut:
main.py seperti di baris Interface , Anda dapat secara langsung menambahkan item parse dalam file main.py Misalnya, ada argumen string yang disebut random_arg , Anda dapat menambahkan parser.add_argument('--random_arg', default='test', type=str) .callback yang dibutuhkan, seperti Save Auto, Stop Early Stop, dan LR Scheduler。MInterface , DInterface , Trainer 。Sirip.
Satu hal yang perlu Anda perhatikan adalah, untuk membiarkan MInterface dan DInterface dapat menguraikan model dan dataset yang baru ditambahkan secara otomatis dengan hanya menentukan argumen --model_name dan --dataset , kami menggunakan casing ular (seperti standard_net.py ) untuk file Model/DataSet, dan menggunakan konten yang sama dengan Camel Casing untuk Camel For Class, Like StandardNet .
Hal yang sama berlaku untuk folder data .
Meskipun ini tampaknya membatasi penamaan model dan set data Anda, tetapi juga dapat membuat kode Anda lebih mudah dibaca dan dipahami. Harap perhatikan hal ini untuk menghindari masalah penguraian.
Jika Anda menggunakan templat ini dan merasa terbantu untuk penelitian Anda, silakan pertimbangkan mengutip makalah kami:
@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}
}