timm documentation
Adaptasi dan Ekspor Model
Adaptasi dan Ekspor Model
Saluran Input
Set in_chans ke jumlah channel yang akan diterima model Anda. Untuk checkpoint non-RGB, input_size[0] pada konfigurasi pretrained-nya harus menggambarkan jumlah channel checkpoint sumber. Sebagai contoh, untuk menggunakan dua gambar 13-band yang ditumpuk dengan checkpoint ResNet-18 13-band yang sesuai:
import timm
model = timm.create_model(
'resnet18',
pretrained=True,
in_chans=26,
num_classes=10,
pretrained_cfg_overlay={
'file': 'path/to/your_13_band_resnet18.pth',
'input_size': (13, 224, 224),
'num_classes': 10,
},
)Contoh ini memerlukan checkpoint Anda sendiri dengan arsitektur dan jumlah kelas sumber yang sesuai. Bobot konvolusi input diulang atau dipangkas sesuai urutan kanal, kemudian dikalikan dengan rasio kanal sumber-ke-target. Dengan demikian, konversi 13-ke-26 mengulang bobot dua kali dan mengeskala-nya dengan 1/2; salinan berulang dari frame yang sama mempertahankan respons konvolusi input. Konversi 13-ke-11 mempertahankan 11 kanal pertama dan mengeskala-nya dengan 13/11. Jumlah kanal yang sama dimuat tanpa perubahan. Konversi ke satu kanal menjumlahkan bobot kanal sumber.
Untuk konversi bobot langsung, tentukan informasi sumber yang sama secara eksplisit:
from timm.models import adapt_input_conv
temporal_weights = adapt_input_conv(26, pretrained_weights, base_chans=13)base_chans menggambarkan kanal citra fisik, yang dapat berbeda dari dimensi input konvolusi stem space-to-depth. Konversi default RGB yang ada dan konversi grayscale space-to-depth tetap didukung; konversi kanal space-to-depth lainnya masih menggunakan fallback format tidak didukung saat pemuatan. Pemilihan spesifik band, pencocokan band semantik, dan normalisasi tidak disimpulkan: atur band dan pra-pemrosesan untuk sensor dan tugas Anda.
Simpan Model yang Diadaptasi
model.pretrained_cfg tetap menggambarkan checkpoint sumber setelah adaptasi.
Model saat ini mengekspos in_chans dan num_classes. Kamus _traits yang dimiliki instance mencatat img_size nominal, kendala fixed_input_size, dan jalur first_conv. Kamus terpisah _model_args mencatat argumen konstruksi
untuk ekspor. Metode set_input_size() yang didukung memperbarui traits dan
argumen rekonstruksi secara bersamaan.
Gunakan timm.models.get_model_traits(model) untuk memeriksa salinan traits beserta atribut in_chans dan num_classes saat ini. Jumlah tersebut dibaca dari atribut, bukan diduplikasi di _traits, sehingga reset klasifikator tetap tercermin. timm.models.get_model_input_config(model) menyelesaikan konfigurasi input dari traits ini, dan timm.models.get_model_args(model) mengembalikan argumen rekonstruksi.
Hub export menulis konfigurasi baru yang menjelaskan bobot yang disimpan tanpa mengubah konfigurasi sumber yang aktif. Sampaikan pra-pemrosesan yang digunakan untuk model yang diadaptasi:
from timm.models import save_for_hf
save_for_hf(model, 'my_model', data_config=data_config)
restored = timm.create_model('local-dir:my_model', pretrained=True)Skrip pelatihan, validasi, inferensi, dan benchmark bawaan menyelesaikan pengaturan input terhadap model saat ini. Helper resolve_data_config dan resolve_model_data_config yang sudah ada mempertahankan perilaku konfigurasi sumber mereka.
Argumen Konstruksi yang Diekspor
Factory mencatat argumen konstruksi seperti aktivasi, normalisasi, dan dimensi embedding. Export mengecualikan penempatan device/dtype dan regularisasi pelatihan yang ditangkap: drop_rate, drop_path_rate, drop_block_rate, dan *_drop_rate. Oleh karena itu, saat dimuat ulang, nilai default regularisasi arsitektur digunakan kecuali pemanggil menyediakan nilai baru. model_args export eksplisit dapat mempertahankan suatu rate jika memang disengaja.
Argumen callable tidak dapat diserialisasi secara andal. Lebih baik gunakan nama string yang terdaftar saat membangun model, atau berikan nama yang setara saat mengekspor:
import torch.nn as nn
model = timm.create_model('resnet18', act_layer=nn.SiLU)
save_for_hf(model, 'my_silu_resnet', model_args={'act_layer': 'silu'})Tanpa pengganti yang dapat diserialisasi, export akan memicu error yang menyebutkan argumen tersebut. Menghapusnya secara diam-diam dapat merekonstruksi model yang berbeda bahkan ketika bobotnya dimuat dengan sukses.
Update on GitHub