timm documentation

Modelleri Uyarlayın ve Dışa Aktarın

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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