Transformers documentation
Görüntü Kodlayıcı Çözücü Modelleri
Bu model 2021-09-21 tarihinde HF papers'ta yayımlandı ve 2021-10-13 tarihinde Hugging Face Transformers'a katkıda bulunuldu.
Görüntü Kodlayıcı Çözücü Modelleri
Genel Bakış
VisionEncoderDecoderModel, herhangi bir önceden eğitilmiş Transformer tabanlı görme modelini kodlayıcı (ör. ViT, BEiT, DeiT, Swin) ve herhangi bir önceden eğitilmiş dil modelini çözücü (ör. RoBERTa, GPT2, BERT, DistilBERT) olarak kullanarak görüntüden metne modelini başlatmak için kullanılabilir.
Görüntüden metin dizisine modelin önceden eğitilmiş denetim noktalarıyla başlatılmasının etkinliği, Minghao Li, Tengchao Lv, Lei Cui, Yijuan Lu, Dinei Florencio, Cha Zhang, Zhoujun Li ve Furu Wei tarafından yazılan TrOCR: Transformer-based Optical Character Recognition with Pre-trained Models makalesinde (örneğin) gösterilmiştir.
Böyle bir VisionEncoderDecoderModel eğitildikten/ince ayarlandıktan sonra, diğer modeller gibi kaydedilebilir/yüklenebilir (daha fazla bilgi için aşağıdaki örnekleri inceleyin).
Örnek bir uygulama, görüntü açıklama (image captioning) işlemidir; bu işlemde kodlayıcı (encoder) görüntüyü kodlamak için kullanılır ve ardından otoregresif bir dil modeli açıklamayı üretir. Bir diğer örnek ise optik karakter tanımadır (OCR). VisionEncoderDecoderModel sınıfının bir örneği olan TrOCR modeline bakınız.
Model yapılandırmalarından VisionEncoderDecoderModel'i rastgele başlatma
VisionEncoderDecoderModel, bir encoder ve bir decoder yapılandırmasından rastgele başlatılabilir. Aşağıdaki örnekte, encoder için varsayılan ViTModel yapılandırmasını ve decoder için varsayılan BertForCausalLM yapılandırmasını kullanarak bunu nasıl yapacağımızı gösteriyoruz.
from transformers import BertConfig, VisionEncoderDecoderConfig, VisionEncoderDecoderModel, ViTConfig
config_encoder = ViTConfig()
config_decoder = BertConfig()
config = VisionEncoderDecoderConfig.from_encoder_decoder_configs(config_encoder, config_decoder)
model = VisionEncoderDecoderModel(config=config)Önceden eğitilmiş bir encoder ve önceden eğitilmiş bir decoder'dan VisionEncoderDecoderModel'in başlatılması
VisionEncoderDecoderModel, önceden eğitilmiş bir kodlayıcı kontrol noktası ve önceden eğitilmiş bir çözücü kontrol noktasından başlatılabilir. Dikkat edin, herhangi bir önceden eğitilmiş Transformer tabanlı görme modeli, örneğin Swin, kodlayıcı olarak kullanılabilir ve hem önceden eğitilmiş otomatik kodlama modelleri, örneğin BERT, hem de önceden eğitilmiş nedensel dil modelleri, örneğin GPT2, ayrıca diziden-diziye modellerin önceden eğitilmiş çözücü kısmı, örneğin BART'ın çözücüsü, çözücü olarak kullanılabilir.
Çözücü olarak hangi mimariyi seçtiğinize bağlı olarak, çapraz dikkat katmanları rastgele başlatılabilir.
Önceden eğitilmiş bir kodlayıcı ve çözücü kontrol noktasından VisionEncoderDecoderModel'i başlatmak, Warm-starting-encoder-decoder blog yazısında gösterildiği gibi, modelin bir aşağı akış görevinde ince ayar gerektirir.
Bunu yapmak için, VisionEncoderDecoderModel sınıfı bir VisionEncoderDecoderModel.from_encoder_decoder_pretrained() yöntemi sağlar.
from transformers import VisionEncoderDecoderModel
model = VisionEncoderDecoderModel.from_encoder_decoder_pretrained(
"microsoft/swin-base-patch4-window7-224-in22k", "google-bert/bert-base-uncased"
)Mevcut bir VisionEncoderDecoderModel kontrol noktasını yükleyip çıkarım yapmak
VisionEncoderDecoderModel sınıfının ince ayarlanmış denetim noktalarını yüklemek için, VisionEncoderDecoderModel, Transformers'taki diğer tüm model mimarileri gibi from_pretrained(...) yöntemini sağlar.
Çıkarım yapmak için, metni otoregresif olarak üretmeye olanak tanıyan generate metodu kullanılır. Bu metot, açgözlü, demet arama ve çok terimli örneklem gibi çeşitli çözümleme biçimlerini destekler.
import requests
from PIL import Image
from transformers import GPT2TokenizerFast, ViTImageProcessor, VisionEncoderDecoderModel
# load a fine-tuned image captioning model and corresponding tokenizer and image processor
model = VisionEncoderDecoderModel.from_pretrained("nlpconnect/vit-gpt2-image-captioning", device_map="auto")
tokenizer = GPT2TokenizerFast.from_pretrained("nlpconnect/vit-gpt2-image-captioning")
image_processor = ViTImageProcessor.from_pretrained("nlpconnect/vit-gpt2-image-captioning")
# let's perform inference on an image
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
pixel_values = image_processor(image, return_tensors="pt").to(model.device).pixel_values
# autoregressively generate caption (uses greedy decoding by default)
generated_ids = model.generate(pixel_values)
generated_text = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(generated_text)
a cat laying on a blanket next to a cat laying on a bedEğitim
Model oluşturulduktan sonra, (görsel, metin) çiftlerinden oluşan bir veri kümesinde BART, T5 veya herhangi bir diğer kodlayıcı-çözücü modeli gibi ince ayar yapılabilir.
Görüldüğü üzere, modelin bir kayıp (loss) hesaplaması için yalnızca 2 girdi gereklidir: pixel_values (bunlar görsellerdir) ve labels (bunlar, kodlanmış hedef dizinin input_ids değerleridir).
from datasets import load_dataset
from transformers import BertTokenizer, VisionEncoderDecoderModel, ViTImageProcessor
image_processor = ViTImageProcessor.from_pretrained("google/vit-base-patch16-224-in21k")
tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-uncased")
model = VisionEncoderDecoderModel.from_encoder_decoder_pretrained(
"google/vit-base-patch16-224-in21k", "google-bert/bert-base-uncased"
)
model.config.decoder_start_token_id = tokenizer.cls_token_id
model.config.pad_token_id = tokenizer.pad_token_id
dataset = load_dataset("huggingface/cats-image")
image = dataset["test"]["image"][0]
pixel_values = image_processor(image, return_tensors="pt").to(model.device).pixel_values
labels = tokenizer(
"an image of two cats chilling on a couch",
return_tensors="pt",
).input_ids
# the forward function automatically creates the correct decoder_input_ids
loss = model(pixel_values=pixel_values, labels=labels).lossBu model nielsr tarafından katkıda bulunmuştur.
VisionEncoderDecoderConfig
sınıf transformers.VisionEncoderDecoderConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0id2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneis_encoder_decoder: bool = Trueencoder: transformers.configuration_utils.PreTrainedConfig | dict | None = Nonedecoder: transformers.configuration_utils.PreTrainedConfig | dict | None = None )
Parametreler
- is_encoder_decoder (
bool, isteğe bağlı, varsayılanTrue) — Modelin bir kodlayıcı/çözücü olarak kullanılıp kullanılmadığı. - encoder (
Union[~configuration_utils.PreTrainedConfig, dict], isteğe bağlı) — Encoder omurgasının yapılandırma nesnesi veya sözlüğü. - decoder (
Union[~configuration_utils.PreTrainedConfig, dict], isteğe bağlı) — Decoder iskeletinin yapılandırma nesnesi veya sözlüğü.
Bu, bir Vision Encoder DecoderModel'in yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Vision Encoder Decoder modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, None ile benzer bir yapılandırmaya yol açar.
Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.
Örnekler:
>>> from transformers import BertConfig, ViTConfig, VisionEncoderDecoderConfig, VisionEncoderDecoderModel
>>> # Initializing a ViT & BERT style configuration
>>> config_encoder = ViTConfig()
>>> config_decoder = BertConfig()
>>> config = VisionEncoderDecoderConfig(encoder=config_encoder, decoder=config_decoder)
>>> # Initializing a ViTBert model (with random weights) from a ViT & google-bert/bert-base-uncased style configurations
>>> model = VisionEncoderDecoderModel(config=config)
>>> # Accessing the model configuration
>>> config_encoder = model.config.encoder
>>> config_decoder = model.config.decoder
>>> # set decoder config to causal lm
>>> config_decoder.is_decoder = True
>>> config_decoder.add_cross_attention = True
>>> # Saving the model, including its configuration
>>> model.save_pretrained("my-model")
>>> # loading model and config from pretrained folder
>>> encoder_decoder_config = VisionEncoderDecoderConfig.from_pretrained("my-model")
>>> model = VisionEncoderDecoderModel.from_pretrained("my-model", config=encoder_decoder_config)from_encoder_decoder_configs
< source >( encoder_config: PreTrainedConfigdecoder_config: PreTrainedConfig**kwargs ) → VisionEncoderDecoderConfig
Dönüş değeri
Bir yapılandırma nesnesi örneği
Önceden eğitilmiş bir kodlayıcı model yapılandırması ve kodlayıcı model yapılandırmasından bir VisionEncoderDecoderConfig (veya türetilmiş bir sınıf) örnekleyin.
VisionEncoderDecoderModel
sınıf transformers.VisionEncoderDecoderModel
< source >( config: transformers.configuration_utils.PreTrainedConfig | None = Noneencoder: transformers.modeling_utils.PreTrainedModel | None = Nonedecoder: transformers.modeling_utils.PreTrainedModel | None = None )
Parametreler
- config (PreTrainedConfig, opsiyonel) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.
- encoder (
PreTrainedModel, opsiyonel) — Kullanılacak kodlayıcı modeli. - decoder (
PreTrainedModel, opsiyonel) — Kullanılacak decoder modeli.
Üzerinde herhangi bir özel başlık olmadan ham gizli durumları (hidden-states) üreten çıplak Vision Encoder Decoder Model.
Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.
forward
< source >( pixel_values: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Noneencoder_outputs: tuple[torch.Tensor] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → Seq2SeqLMOutput or tuple(torch.Tensor)
Parametreler
- pixel_values (
torch.Tensor, şekli(batch_size, num_channels, image_size, image_size), isteğe bağlı) — Girdi görüntülerine karşılık gelen tensörler. Piksel değerleriimage_processor_classkullanılarak elde edilebilir. Ayrıntılar içinimage_processor_class.__call__bölümüne bakın (processor_class, görüntü işleme içinimage_processor_classkullanır). - decoder_input_ids (
torch.LongTensorşeklinde(batch_size, target_sequence_length), isteğe bağlı) — Sözlükteki decoder giriş dizisi tokenlarının indeksleri. İndeksler, PreTrainedTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() yöntemlerine bakın. Giriş ID'leri nelerdir? past_key_values kullanılıyorsa, isteğe bağlı olarak yalnızca son decoder_input_ids girdisi yeterlidir (bkz. past_key_values). Eğitim sırasında decoder_input_ids, model tarafından etiketlerin sağa kaydırılması, -100 değerlerinin pad_token_id ile değiştirilmesi ve bunların başına decoder_start_token_id eklenerek otomatik olarak oluşturulur.Dizinler PreTrainedTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() yöntemlerine bakın.
past_key_valueskullanılıyorsa, isteğe bağlı olarak yalnızca sondecoder_input_idsgirdi olarak verilebilir (bkz.past_key_values).Eğitim için
decoder_input_ids, model tarafındanlabelssağa kaydırılarak, -100 değerleripad_token_idile değiştirilerek ve başlarınadecoder_start_token_ideklenerek otomatik olarak oluşturulur. - decoder_attention_mask (
torch.BoolTensor, şekli(batch_size, target_sequence_length), isteğe bağlı) — Varsayılan davranış:decoder_input_idsiçindeki pad tokenlarını yok sayan bir tensör oluşturur. Varsayılan olarak nedensel maske de kullanılır. - encoder_outputs (
tuple[torch.Tensor], isteğe bağlı) — (last_hidden_state, isteğe bağlı:hidden_states, isteğe bağlı:attentions) içeren bir tuplelast_hidden_state,(batch_size, sequence_length, hidden_size)biçiminde, isteğe bağlı) kodlayıcının son katmanının çıktısındaki gizli durumlar dizisidir. Dekodlayıcının çapraz dikkat (cross-attention) mekanizmasında kullanılır. - past_key_values (
~cache_utils.Cache, isteğe bağlı) — Sıralı çözümlemeyi hızlandırmak için kullanılabilen önceden hesaplanmış gizli durumlar (self-attention ve cross-attention bloklarındaki anahtar ve değerler). Bu genelliklepast_key_valuesdeğerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülenuse_cache=Trueveyaconfig.use_cache=True.Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın.
past_key_valuesgeçirilmezse, varsayılan olarak DynamicCache başlatılır.Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.
past_key_valueskullanılıyorsa, kullanıcının tüminput_ids(şekli(batch_size, sequence_length)) yerine, bu modele geçmiş anahtar değer durumları verilmemiş olan, işlenmemişinput_ids(şekli(batch_size, unprocessed_length)) girmesi beklenir. - decoder_inputs_embeds (
torch.Tensor, şekli(batch_size, target_sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,decoder_input_idsyerine doğrudan gömülü bir temsil geçmeyi tercih edebilirsiniz. Bu,decoder_input_idsindekslerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisine kıyasla daha fazla kontrol sahibi olmak istiyorsanız faydalıdır. - labels (
torch.LongTensor, şekli(batch_size, sequence_length), isteğe bağlı) — Dekoder için maskeli dil modelleme kaybını hesaplamak üzere kullanılan etiketler. İndeksler[-100, 0, ..., config.vocab_size]aralığında olmalıdır (input_idsdokümantasyonuna bakınız). İndeksleri-100olarak ayarlanan tokenlar yok sayılır (maskelenir); kayıp yalnızca etiketleri[0, ..., config.vocab_size]aralığında olan tokenlar için hesaplanır. - use_cache (
bool, isteğe bağlı) —Trueolarak ayarlanırsa,past_key_valuesanahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz.past_key_values). - output_attentions (
bool, isteğe bağlı) — Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakiattentionsbölümüne bakın. - output_hidden_states (
bool, isteğe bağlı) — Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakihidden_statesbölümüne bakın. - return_dict (
bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi?
Dönüş değeri
Seq2SeqLMOutput veya tuple(torch.Tensor)
Bir Seq2SeqLMOutput veya bir torch.Tensor demeti (return_dict=False geçirildiğinde veya config.return_dict=False olduğunda), yapılandırmaya (VisionEncoderDecoderConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
VisionEncoderDecoderModel forward metodu, __call__ özel metodunu geçersiz kılar.
İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine
Moduleörneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.
loss (
torch.Tensor, şekli(1,), isteğe bağlı,labelssağlandığında döndürülür) — Dil modelleme kaybı.logits (
torch.Tensor, şekli(batch_size, sequence_length, config.vocab_size)) — Dil modelleme başlığının tahmin puanları (SoftMax öncesi her sözlük jetonu için puanlar).past_key_values (
EncoderDecoderCache, isteğe bağlı,use_cache=Truegeçirildiğinde veyaconfig.use_cache=Trueolduğunda döndürülür) — Bir EncoderDecoderCache örneğidir. Daha fazla ayrıntı için kv önbellek kılavuzumuza bakın.Sıralı çözümlemeyi hızlandırmak için (bkz.
past_key_valuesgirdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki ve cross-attention bloklarındaki anahtar ve değerler) içerir.decoder_hidden_states (
tuple(torch.Tensor), isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)biçiminde bir demet.Her katmanın çıktısında ve başlangıç gömme çıktılarında dekodlayıcının gizli durumları.
decoder_attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, sequence_length).Dikkat ağırlıkları, dikkat softmax'ından sonra, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan dekoderin
cross_attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —(batch_size, num_heads, sequence_length, sequence_length)biçiminde, her katman için bir adet içerentorch.Tensordemeti.Dekoderin çapraz dikkat katmanının dikkat ağırlıkları, dikkat softmax'ından sonra, çapraz dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
encoder_last_hidden_state (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) — Modelin kodlayıcısının son katmanının çıktısındaki gizli durumlar dizisi.encoder_hidden_states (
tuple(torch.Tensor), isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)biçiminde bir demet.Her katmanın çıktısında ve başlangıç gömme çıktılarında kodlayıcının gizli durumları.
encoder_attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, sequence_length).Dikkat yumuşatma (attention softmax) sonrasında, öz-dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan kodlayıcının dikkat ağırlıkları.
Örnekler:
>>> from transformers import AutoProcessor, VisionEncoderDecoderModel
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> from PIL import Image
>>> import torch
>>> processor = AutoProcessor.from_pretrained("microsoft/trocr-base-handwritten")
>>> model = VisionEncoderDecoderModel.from_pretrained("microsoft/trocr-base-handwritten")
>>> # load image from the IAM dataset
>>> url = "https://fki.tic.heia-fr.ch/static/img/a01-122-02.jpg"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read())).convert("RGB")
>>> # training
>>> model.config.decoder_start_token_id = processor.tokenizer.eos_token_id
>>> model.config.pad_token_id = processor.tokenizer.pad_token_id
>>> model.config.vocab_size = model.config.decoder.vocab_size
>>> pixel_values = processor(image, return_tensors="pt").pixel_values
>>> text = "hello world"
>>> labels = processor.tokenizer(text, return_tensors="pt").input_ids
>>> outputs = model(pixel_values=pixel_values, labels=labels)
>>> loss = outputs.loss
>>> # inference (generation)
>>> generated_ids = model.generate(pixel_values)
>>> generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]from_encoder_decoder_pretrained
< source >( encoder_pretrained_model_name_or_path: str | None = Nonedecoder_pretrained_model_name_or_path: str | None = None*model_args**kwargs )
Parametreler
- encoder_pretrained_model_name_or_path (
str, isteğe bağlı) — Görsel kodlayıcıyı başlatmak için gerekli bilgiler. Aşağıdakilerden biri olabilir:- Bir dize, huggingface.co'daki bir model deposunda barındırılan önceden eğitilmiş bir modelin model kimliği. Bir örnek
google/vit-base-patch16-224-in21k'dir. ./my_model_directory/gibi, save_pretrained() kullanılarak kaydedilen model ağırlıklarını içeren bir dizin yoluna işaret eder.
- Bir dize, huggingface.co'daki bir model deposunda barındırılan önceden eğitilmiş bir modelin model kimliği. Bir örnek
- decoder_pretrained_model_name_or_path (
str, isteğe bağlı, varsayılan olarakNone) — Metin çözücüsünü başlatmak için gerekli bilgiler. Şu seçeneklerden biri olabilir:- Bir dize, huggingface.co'daki bir model deposunda barındırılan önceden eğitilmiş bir modelin model kimliği.
./my_model_directory/gibi, save_pretrained() kullanılarak kaydedilen model ağırlıklarını içeren bir dizin yoluna işaret eder.
- model_args (kalan konumsal argümanlar, isteğe bağlı) —
Tüm kalan konumsal argümanlar, alttaki modelin
__init__yöntemine aktarılır. - kwargs (kalan anahtar kelime argümanları sözlüğü, isteğe bağlı) —
Yükleme işleminden sonra yapılandırma nesnesini güncellemek ve modeli başlatmak için kullanılabilir (ör.,
output_attentions=True).- Kodlayıcı yapılandırmasını güncellemek için her yapılandırma parametresine encoder_ önekini kullanın.
- Dekoder yapılandırmasını güncellemek için her yapılandırma parametresine decoder_ önekini kullanın.
- Ana model yapılandırmasını güncellemek için her yapılandırma parametresi için bir önek kullanmayın.
configsağlanıp sağlanmadığına veya otomatik olarak yüklenip yüklenmediğine göre farklı davranır.
Kütüphanenin bir veya iki temel sınıfından, önceden eğitilmiş model kontrol noktalarından bir kodlayıcı ve bir çözücü örnekleyin.
Model, varsayılan olarak model.eval() kullanılarak değerlendirme moduna ayarlanır (Dropout modülleri devre dışı bırakılır). Modeli eğitmek için önce model.train() ile eğitim moduna geri almanız gerekir.
Örnek:
>>> from transformers import VisionEncoderDecoderModel
>>> # initialize a vit-bert from a pretrained ViT and a pretrained BERT model. Note that the cross-attention layers will be randomly initialized
>>> model = VisionEncoderDecoderModel.from_encoder_decoder_pretrained(
... "google/vit-base-patch16-224-in21k", "google-bert/bert-base-uncased"
... )
>>> # saving model after fine-tuning
>>> model.save_pretrained("./vit-bert")
>>> # load fine-tuned model
>>> model = VisionEncoderDecoderModel.from_pretrained("./vit-bert")