Struktur yang sederhana dan dirancang dengan baik sangat penting untuk setiap proyek pembelajaran mendalam, jadi setelah banyak latihan dan berkontribusi dalam proyek Pytorch, inilah templat proyek Pytorch yang menggabungkan kesederhanaan, praktik terbaik untuk struktur folder dan desain OOP yang baik . Gagasan utamanya adalah ada banyak hal yang sama yang Anda lakukan setiap kali ketika Anda memulai proyek Pytorch Anda, jadi membungkus semua hal yang dibagikan ini akan membantu Anda mengubah ide inti setiap kali Anda memulai proyek Pytorch baru.
Jadi, inilah templat Pytorch sederhana yang membantu Anda masuk ke proyek utama Anda lebih cepat dan hanya fokus pada inti Anda (arsitektur model, aliran pelatihan, dll)
Untuk mengurangi barang berulang, kami sarankan untuk menggunakan perpustakaan tingkat tinggi. Anda dapat menulis perpustakaan tingkat tinggi Anda sendiri atau Anda dapat menggunakan beberapa perpustakaan bagian ketiga seperti Ignite, Fastai, MMCV ... dll. Ini dapat membantu Anda menulis loop pelatihan yang ringkas tetapi berfitur lengkap dalam beberapa baris kode. Di sini kami menggunakan Ignite untuk melatih Mnist sebagai contoh.
Singkatnya, inilah cara menggunakan templat ini, jadi misalnya menganggap Anda ingin menerapkan resnet-18 untuk melatih mnist, jadi Anda harus melakukan hal berikut:
modeling buat file python bernama apa pun yang Anda suka, di sini kami menamakannya example_model.py . Dalam file modeling/__init__.py , Anda dapat membangun fungsi bernama build_model untuk memanggil model Anda from . example_model import ResNet18
def build_model ( cfg ):
model = ResNet18 ( cfg . MODEL . NUM_CLASSES )
return modelengine , buat fungsi pelatih model dan fungsi inferensi. Dalam fungsi pelatih, Anda perlu menulis logika proses pelatihan, Anda dapat menggunakan beberapa perpustakaan pihak ketiga untuk mengurangi barang yang diulang. # trainer
def do_train ( cfg , model , train_loader , val_loader , optimizer , scheduler , loss_fn ):
"""
implement the logic of epoch:
-loop on the number of iterations in the config and call the train step
-add any summaries you want using the summary
"""
pass
# inference
def inference ( cfg , model , val_loader ):
"""
implement the logic of the train step
- run the tensorflow session
- return any metrics you need to summarize
"""
passtools , Anda membuat train.py . Dalam file ini, Anda perlu mendapatkan contoh objek berikut "model", "dataloader", "pengoptimal", dan konfigurasi # create instance of the model you want
model = build_model ( cfg )
# create your data generator
train_loader = make_data_loader ( cfg , is_train = True )
val_loader = make_data_loader ( cfg , is_train = False )
# create your model optimizer
optimizer = make_optimizer ( cfg , model )do_train , dan mulai pelatihan Anda # here you train your model
do_train ( cfg , model , train_loader , val_loader , optimizer , None , F . cross_entropy )Anda akan menemukan file templat dan contoh sederhana dalam folder model dan pelatih yang menunjukkan kepada Anda cara mencoba model pertama Anda secara sederhana.
├── config
│ └── defaults.py - here's the default config file.
│
│
├── configs
│ └── train_mnist_softmax.yml - here's the specific config file for specific model or dataset.
│
│
├── data
│ └── datasets - here's the datasets folder that is responsible for all data handling.
│ └── transforms - here's the data preprocess folder that is responsible for all data augmentation.
│ └── build.py - here's the file to make dataloader.
│ └── collate_batch.py - here's the file that is responsible for merges a list of samples to form a mini-batch.
│
│
├── engine
│ ├── trainer.py - this file contains the train loops.
│ └── inference.py - this file contains the inference process.
│
│
├── layers - this folder contains any customed layers of your project.
│ └── conv_layer.py
│
│
├── modeling - this folder contains any model of your project.
│ └── example_model.py
│
│
├── solver - this folder contains optimizer of your project.
│ └── build.py
│ └── lr_scheduler.py
│
│
├── tools - here's the train/test model of your project.
│ └── train_net.py - here's an example of train model that is responsible for the whole pipeline.
│
│
└── utils
│ ├── logger.py
│ └── any_other_utils_you_need
│
│
└── tests - this foler contains unit test of your project.
├── test_data_sampler.py
Segala jenis peningkatan atau kontribusi disambut.