timm documentation
Modelleri Uyarlayın ve Dışa Aktarın
Modelleri Uyarlayın ve Dışa Aktarın
Giriş Kanalları
in_chans değerini, modelinizin alacağı kanal sayısına ayarlayın. RGB olmayan bir checkpoint için, önceden eğitilmiş yapılandırmasının input_size[0] alanı, kaynak checkpoint'in kanal sayısını açıklamalıdır. Örneğin, eşleşen 13 bantlı bir ResNet-18 checkpoint'i ile üst üste yığılmış iki 13 bantlı görüntü kullanmak için:
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,
},
)Bu örnek, eşleşen mimariye ve kaynak sınıf sayısına sahip kendi kontrol noktanızı gerektirir. Girdi konvolüsyon ağırlıkları, kanal sırasına göre tekrarlanır veya kısaltılır, ardından kaynak-hedef kanal oranıyla çarpılır. Böylece 13'ten 26'ya dönüşüm, ağırlıkları iki kez tekrarlar ve 1/2 ile ölçekler; aynı çerçevenin tekrarlanan kopyaları, girdi konvolüsyonunun yanıtını korur. 13'ten 11'e dönüşüm, ilk 11 kanalı korur ve 13/11 ile ölçekler. Eşleşen kanal sayıları, değiştirilmeden yüklenir. Tek kanala dönüşüm, kaynak kanal ağırlıklarını toplar.
Doğrudan ağırlık dönüşümü için, aynı kaynak bilgisini açıkça belirtin:
from timm.models import adapt_input_conv
temporal_weights = adapt_input_conv(26, pretrained_weights, base_chans=13)base_chans, fiziksel görüntü kanallarını tanımlar ve bunlar, space-to-depth sapının konvolüsyon giriş boyutundan farklı olabilir. Mevcut RGB varsayılanı ve space-to-depth gri tonlama dönüşümü desteklenmeye devam eder; diğer space-to-depth kanal dönüşümleri, yükleme sırasında hâlâ desteklenmeyen biçim yedeğini kullanır. Bant bazlı seçim, anlamsal bant eşleştirme ve normalizasyon çıkarılmaz: bantları ve ön işlemleri sensörünüze ve görevinize göre düzenleyin.
Uyarlanmış Modelleri Kaydet
model.pretrained_cfg, uyarlama sonrasında kaynak kontrol noktasını açıklamaya devam eder.
Güncel model in_chans ve num_classes özelliklerini sunar. Örnek sahibi _traits sözlüğü, nominal img_size, fixed_input_size kısıtlaması ve first_conv yolunu kaydeder. Ayrı _model_args sözlüğü, dışa aktarma için inşaat argümanlarını kaydeder. Desteklenen set_input_size() yöntemleri, özellikleri ve yeniden inşaat argümanlarını birlikte günceller.
timm.models.get_model_traits(model) işlevini kullanarak özelliklerin bir kopyasını ve güncel in_chans ile num_classes özniteliklerini inceleyebilirsiniz. Bu sayılar, _traits içinde tekrarlanmak yerine özniteliklerden okunur; bu sayede sınıflandırıcı sıfırlamaları yansıtılır. timm.models.get_model_input_config(model) girdi yapılandırmasını bu özelliklerden çözer ve timm.models.get_model_args(model) yeniden oluşturma argümanlarını döndürür.
Hub dışa aktarma, canlı kaynak yapılandırmasını değiştirmeden, kaydedilen ağırlıkları açıklayan yeni bir yapılandırma yazar. Uyarlanmış model için kullanılan ön işleme adımını iletin:
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)Yerleşik eğitim, doğrulama, çıkarım ve benchmark betikleri, girdi ayarlarını mevcut modele göre çözer. Mevcut resolve_data_config ve resolve_model_data_config yardımcıları, kaynak yapılandırma davranışlarını korur.
Dışa Aktarılan Yapı Argümanları
Fabrika, aktivasyon, normalizasyon ve gömme boyutları gibi inşaat argümanlarını kaydeder. Dışa aktarma, cihaz/veri tipi yerleşimini ve yakalanan eğitim düzenlemelerini hariç tutar: drop_rate, drop_path_rate, drop_block_rate ve *_drop_rate. Bu nedenle yeniden yükleme, çağrıcı yeni değerler sağlamadıkça mimarinin düzenleme varsayılanlarını kullanır. Bilinçli olarak bir oranı korumak istendiğinde, açık dışa aktarma model_args bu oranı muhafaza edebilir.
Callable argümanları güvenilir bir şekilde serialize edilemez. Bir model oluştururken kayıtlı dize adlarını tercih edin veya dışa aktarırken eşdeğer bir ad sağlayın:
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'})Dizilebilir bir ikame olmadan, export, argümanın adını belirten bir hata üretir. Bu argümanın sessizce atılması, ağırlıklar başarıyla yüklense bile farklı bir modelin yeniden oluşturulmasına yol açabilir.
Update on GitHub