Transformers documentation
UDOP
Bu model 2022-12-05 tarihinde HF papers'ta yayımlanmış ve 2024-03-04 tarihinde Hugging Face Transformers'a katkıda bulunmuştur.
UDOP
Genel Bakış
UDOP modeli, Zineng Tang, Ziyi Yang, Guoxin Wang, Yuwei Fang, Yang Liu, Chenguang Zhu, Michael Zeng, Cha Zhang ve Mohit Bansal tarafından Unifying Vision, Text, and Layout for Universal Document Processing makalesinde önerilmiştir. UDOP, belge görüntüsü sınıflandırma, belge ayrıştırma ve belge görsel soru-cevap gibi belge yapay zekâsı görevleri için T5 tabanlı bir kodlayıcı-çözücü Transformer mimarisi benimser.
Makalenin özeti aşağıdaki gibidir:
Universal Document Processing (UDOP) adını verdiğimiz, metin, görüntü ve yerleşim (layout) modalitelerini belge anlama ve üretimi gibi çeşitli görev formatlarıyla birleştiren temel bir Document AI modeli öneriyoruz. UDOP, metin içeriği ile belge görüntüsü arasındaki uzamsal korelasyondan yararlanarak görüntü, metin ve yerleşim modalitelerini tek bir homojen temsil ile modellemektedir. UDOP, yenilikçi bir Vision-Text-Layout Transformer sayesinde ön eğitimi ve çok alanlı aşağı akış (downstream) görevlerini, istem (prompt) tabanlı bir dizi üretim şemasında birleştirir. UDOP, hem yenilikçi kendiliğinden denetimli (self-supervised) hedefler kullanılarak büyük ölçekli etiketsiz belge korpüslerinde hem de çeşitli etiketli veriler üzerinde ön eğitilir. UDOP ayrıca maskeli görüntü yeniden inşası (masked image reconstruction) yoluyla metin ve yerleşim modalitelerinden belge görüntüleri üretmeyi de öğrenir. Bilgimize göre, bu, Document AI alanında tek bir modelin aynı anda yüksek kaliteli sinirsel belge düzenleme ve içerik özelleştirme başarısına ulaşmasının ilk örneğidir. Yöntemimiz, finans raporları, akademik makaleler ve web siteleri gibi çeşitli veri alanlarında belge anlama ve soru-cevap (QA) dahil olmak üzere 9 Document AI görevinde en iyi performansı (state-of-the-art) ortaya koymaktadır. UDOP, Document Understanding Benchmark (DUE) liderlik tablosunda birinci sırada yer almaktadır.*
UDOP architecture. Taken from the original paper. Kullanım ipuçları
- input_ids'nin yanı sıra UdopForConditionalGeneration, girdi token'larının sınırlayıcı kutuları olan (yani 2B konumları)
bboxgirdisini de bekler. Bunlar, Google'ın Tesseract gibi harici bir OCR motoru kullanılarak elde edilebilir (Python sarmalayıcısı mevcuttur). Her sınırlayıcı kutu (x0, y0, x1, y1) biçiminde olmalıdır; burada (x0, y0) sınırlayıcı kutunun sol üst köşesinin konumuna, (x1, y1) ise sağ alt köşesinin konumuna karşılık gelir. Sınırlayıcı kutuların 0-1000 ölçeğine normalize edilmesi gerektiğini unutmayın. Normalize etmek için aşağıdaki işlevi kullanabilirsiniz:
def normalize_bbox(bbox, width, height):
return [
int(1000 * (bbox[0] / width)),
int(1000 * (bbox[1] / height)),
int(1000 * (bbox[2] / width)),
int(1000 * (bbox[3] / height)),
]Burada width ve height, token'ın bulunduğu orijinal belgenin genişliğine ve yüksekliğine karşılık gelir. Bunlar, örneğin Python Image Library (PIL) kütüphanesi kullanılarak aşağıdaki gibi elde edilebilir:
from PIL import Image
# Document can be a png, jpg, etc. PDFs must be converted to images.
image = Image.open(name_of_your_document).convert("RGB")
width, height = image.sizeGörselleri ve metni model için hazırlamak ve tüm bu işlemleri üstlenmek için UdopProcessor kullanılabilir. Varsayılan olarak bu sınıf, verilen bir belgeden kelime ve kutu (koordinat) listesi çıkarmak için Tesseract motorunu kullanır. İşlevi LayoutLMv3Processor ile eşdeğerdir; bu nedenle, kendi OCR motorunuzu kullanmak istiyorsanız apply_ocr=False veya varsayılan OCR motorunun kullanılmasını istiyorsanız apply_ocr=True parametresini geçmenize olanak tanır. UdopProcessor'ın işlevi aynı olduğu için, olası tüm kullanım senaryoları hakkında LayoutLMv2 kullanım kılavuzuna başvurun.
- Kendi OCR motorunuzu kullanıyorsanız, önerilen seçeneklerden biri satır segmentlerini destekleyen Azure Read API'dir. Segment konum gömme (embedding) kullanımı genellikle daha iyi performans sağlar.
- Çıkarım sırasında, bir belge görüntüsü verildiğinde metni otoregresif olarak üretmek için
generatemetodunun kullanılması önerilir. - Model, hem kendinden denetimli hem de denetimli hedeflerle ön eğitilmiştir. Ön eğitim sırasında kullanılan çeşitli görev önekleri (istifler) kullanılarak, kutudan çıktığı haliyle (out-of-the-box) yetenekler test edilebilir. Örneğin, modele “Question answering. What is the date?” şeklinde istif verilebilir; çünkü “Question answering.”, DocVQA için ön eğitim sırasında kullanılan görev önekidir. Tüm görev önekleri için makaleye (tablo 1) başvurun.
- UdopEncoderModel, yani UDOP'un yalnızca kodlayıcı (encoder) kısmı, LayoutLMv3 benzeri bir Transformer kodlayıcı olarak düşünülebilir ve bu model de ince ayar (fine-tune) yapılabilir. Ayrım (discriminative) görevleri için, modelin üzerine doğrusal bir sınıflandırıcı ekleyip etiketli bir veri setinde ince ayar yapmak yeterlidir.
Bu model nielsr tarafından katkıda bulunmuştur. Orijinal kod burada bulunabilir.
Kaynaklar
UDOP ile başlamanıza yardımcı olmak için resmi Hugging Face ve topluluk (🌎 ile belirtilen) kaynaklarının listesi. Burada yer alacak bir kaynak göndermek isterseniz, bir Pull Request açmaktan çekinmeyin; inceleyeceğiz! Kaynağın, mevcut bir kaynağı tekrarlamak yerine ideal olarak yeni bir şeyi göstermesi beklenir.
- UDOP ile ilgili demo defterleri, özel bir veri setinde UDOP'u ince ayar yapmayı ve çıkarım (inference) yapmayı gösteren burada bulunabilir. 🌎
- Belge soru-cevap görevi kılavuzu
UdopConfig
sınıf transformers.UdopConfig
< 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 = Truevocab_size: int = 33201d_model: int = 1024d_kv: int = 64d_ff: int = 4096num_layers: int = 24num_decoder_layers: int | None = Nonenum_heads: int = 16relative_attention_num_buckets: int = 32relative_attention_max_distance: int = 128relative_bias_args: list[dict] | None = Nonedropout_rate: float | int = 0.1layer_norm_epsilon: float = 1e-06initializer_factor: float = 1.0feed_forward_proj: str = 'relu'use_cache: bool = Truepad_token_id: int | None = 0eos_token_id: int | list[int] | None = 1max_2d_position_embeddings: int = 1024image_size: int | list[int] | tuple[int, int] = 224patch_size: int | list[int] | tuple[int, int] = 16num_channels: int = 3is_decoder: bool = Falseadd_cross_attention: bool = Falsetie_word_embeddings: bool = True )
Parametreler
- is_encoder_decoder (
bool, isteğe bağlı, varsayılanTrue) — Modelin bir kodlayıcı/çözücü olarak kullanılıp kullanılmadığı. - vocab_size (
int, isteğe bağlı, varsayılan33201) — Modelin sözlük boyutu.input_idsile temsil edilebilecek farklı token sayısını tanımlar. - d_model (
int, isteğe bağlı, varsayılan1024) — Kodlayıcı katmanlarının ve pooler katmanının boyutu. - d_kv (
int, isteğe bağlı, varsayılan64) — Dikkat başı başına anahtar, sorgu ve değer projeksiyonlarının boyutu. Projeksiyon katmanınıninner_dimdeğerinum_heads * d_kvolarak tanımlanır. - d_ff (
int, isteğe bağlı, varsayılan4096) — MLP temsillerinin boyutu. - num_layers (
int, isteğe bağlı, varsayılan24) — Transformer çözücüdeki gizli katman sayısı. - num_decoder_layers (
int, isteğe bağlı) — Transformer decoder'ındaki gizli katman sayısı. Ayarlanmazsanum_layersile aynı değer kullanılır. - num_heads (
int, isteğe bağlı, varsayılan16) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı. - relative_attention_num_buckets (
int, isteğe bağlı, varsayılan 32) — Her dikkat katmanı için kullanılacak sepet sayısı. - relative_attention_max_distance (
int, isteğe bağlı, varsayılan 128) — Sepet ayrımı için daha uzun dizilerin maksimum mesafesi. - relative_bias_args (
list[dict], isteğe bağlı, varsayılan[{'type' -- '1d'}, {'type': 'horizontal'}, {'type': 'vertical'}]): Göreceli önyargı katmanları için argümanları içeren sözlük listesi. - dropout_rate (
Union[float, int], isteğe bağlı, varsayılan0.1) — Tüm dropout katmanları için oran. - layer_norm_epsilon (
float, isteğe bağlı, varsayılan1e-06) — Katman normalizasyon katmanları tarafından kullanılan epsilon. - initializer_factor (
float, isteğe bağlı, varsayılan1.0) — Tüm ağırlık matrislerini başlatmak için kullanılan bir çarpan (1 olarak tutulmalıdır, başlatma testleri için dahili olarak kullanılır). - feed_forward_proj (
string, isteğe bağlı, varsayılan"relu") — Kullanılacak feed forward katmanının türü."relu"veya"gated-gelu"değerlerinden biri olmalıdır. Udopv1.1,"gated-gelu"feed forward projeksiyonunu kullanır. Orijinal Udop ise"relu"kullanır. - use_cache (
bool, isteğe bağlı, varsayılanTrue) — Modelin son anahtar/değer dikkatlerini (tüm modellerde kullanılmaz) döndürüp döndürmeyeceği. Yalnızcaconfig.is_decoder=Trueolduğunda veya model yalnızca çözücü tabanlı üretken bir model olduğunda geçerlidir. - pad_token_id (
int, isteğe bağlı, varsayılan0) — Sözlükte dolgu için kullanılan token kimliği. - eos_token_id (
Union[int, list[int]], isteğe bağlı, varsayılan1) — Sözlükte akış sonu için kullanılan token kimliği. - max_2d_position_embeddings (
int, isteğe bağlı, varsayılan 1024) — Göreceli konum kodlaması için maksimum mutlak konum gömme değerleri. - image_size (
Union[int, list[int], tuple[int, int]], isteğe bağlı, varsayılan224) — Her bir görüntünün boyutu (çözünürlüğü). - patch_size (
Union[int, list[int], tuple[int, int]], isteğe bağlı, varsayılan16) — Her yamanın boyutu (çözünürlüğü). - num_channels (
int, isteğe bağlı, varsayılan3) — Giriş kanal sayısı. - is_decoder (
bool, isteğe bağlı, varsayılanFalse) — Modelin bir decoder olarak kullanılıp kullanılmadığı.Falseise model bir encoder olarak kullanılır. - add_cross_attention (
bool, isteğe bağlı, varsayılanFalse) — Modelde çapraz dikkat katmanlarının eklenip eklenmeyeceğini belirtir. - tie_word_embeddings (
bool, isteğe bağlı, varsayılanTrue) — Modelintied_weights_keyseşlemesine göre ağırlık gömme bağlamalarının yapılıp yapılmayacağı.
Bu, bir UdopModel'in yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Udop modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, microsoft/udop-large 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.
UdopTokenizer
sınıf transformers.UdopTokenizer
< source >( vocab: str | list[tuple[str, float]] | None = Noneeos_token = '</s>'sep_token = '</s>'unk_token = '<unk>'pad_token = '<pad>'sep_token_box = [1000, 1000, 1000, 1000]pad_token_box = [0, 0, 0, 0]pad_token_label = -100only_label_first_subword = Trueextra_special_tokens = None**kwargs )
Parametreler
- eos_token (
str, isteğe bağlı, varsayılan olarak"</s>") — Dizi sonu belirteci. Özel belirteçler kullanılarak bir dizi oluşturulduğunda, dizi sonu için kullanılan belirteç bu değildir. Kullanılan belirteç sep_token'dir.Özel jetonlar kullanılarak bir dizi oluşturulduğunda, dizinin sonu için kullanılan jeton bu değildir. Kullanılan jeton
sep_token'dir. - sep_token (
str, isteğe bağlı, varsayılan"</s>") — Ayrıştırıcı belirteci; birden fazla diziden bir dizi oluşturulurken kullanılır, örneğin dizi sınıflandırma için iki dizi veya soru cevaplamada bir metin ve bir soru için. Özel belirteçlerle oluşturulan bir dizinin son belirteci olarak da kullanılır. - unk_token (
str, isteğe bağlı, varsayılan"<unk>") — Bilinmeyen token. Sözlükte yer almayan bir token, bir kimliğe dönüştürülemez ve bunun yerine bu token olarak ayarlanır. - pad_token (
str, isteğe bağlı, varsayılan"<pad>") — Doldurma için kullanılan jeton, örneğin farklı uzunluklardaki dizileri toplu işleme (batching) sırasında. - sep_token_box (
list[int], isteğe bağlı, varsayılan[1000, 1000, 1000, 1000]) — Özel [SEP] token'ı için kullanılacak sınırlayıcı kutu. - pad_token_box (
list[int], isteğe bağlı, varsayılan[0, 0, 0, 0]) — Özel [PAD] token'ı için kullanılacak sınırlayıcı kutu. - pad_token_label (
int, isteğe bağlı, varsayılan -100) — Doldurma (padding) jetonları için kullanılacak etiket. Varsayılan olarak -100'dür; bu, PyTorch'un CrossEntropyLoss sınıfındakiignore_indexdeğeridir. - only_label_first_subword (
bool, isteğe bağlı, varsayılanTrue) — Kelime etiketleri sağlandığında, yalnızca ilk alt kelimenin etiketlenip etiketlenmeyeceğini belirtir. - extra_special_tokens (
list[str], isteğe bağlı, varsayılan["<s>NOTUSED", "</s>NOTUSED"]) — Tokenizör tarafından kullanılan ek özel tokenler.
HuggingFace'in tokenizers kütüphanesiyle desteklenen “fast” bir UDOP tokenizer'ı oluşturun. LayoutXLMTokenizer ve T5Tokenizer'den uyarlanmıştır. BPE tabanlıdır.
Bu tokenizer, ana yöntemlerin çoğunu içeren TokenizersBackend sınıfından devralır. Kullanıcıların bu yöntemlerle ilgili daha fazla bilgi için bu üst sınıfa başvurması gerekir.
build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Parametreler
- token_ids_0 (
list[int]) — Özel jetonların ekleneceği kimlik listesi. - token_ids_1 (
list[int], isteğe bağlı) — Sıra çiftleri için isteğe bağlı ikinci kimlik listesi.
Dönüş değeri
list[int]
Uygun özel jetonlarla girdi kimlikleri listesi.
Sınıflandırma görevleri için bir dizi veya dizi çiftinden model girdilerini birleştirerek ve özel jetonlar ekleyerek oluşturun. Bir XLM-RoBERTa dizisi aşağıdaki formata sahiptir:
- tek dizi:
<s> X </s> - dizi çifti:
<s> A </s></s> B </s>
get_special_tokens_mask
< source >( token_ids_0: list[int]token_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
Parametreler
- token_ids_0 — (muhtemelen zaten biçimlendirilmiş) dizinin kimlik listesi.
- token_ids_1 —
already_has_special_tokens=Trueolduğunda kullanılmaz. Bu durumda None olmalıdır. - already_has_special_tokens — Sıralamanın özel jetonlarla zaten biçimlendirilmiş olup olmadığı.
Dönüş değeri
[0, 1] aralığında tamsayıların bir listesi
özel bir jeton için 1, bir dizi jetonu için 0.
Özel tokenlar eklenmemiş bir token listesinden dizi kimliklerini (sequence ids) alın.
Hızlı tokenizörlerde, veri toplayıcılar (data collators) bu işlemi already_has_special_tokens=True parametresiyle çağırarak, biçimlendirilmiş bir dizinin üzerine bir maske oluşturur. Bu durumda, maskeyi all_special_ids içinde üyelik kontrolü yaparak hesaplarız.
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Sıralama çifti sınıflandırma görevinde kullanılmak üzere, iletilen iki diziden bir maske oluşturun. XLM-RoBERTa, token türü kimliklerini kullanmadığından, sıfırlardan oluşan bir liste döndürülür.
Tokenizör sözlük dosyalarını kaydedin. TokenizersBackend için, tokenizer.json dosyası temel sınıf tarafından kaydedilir. Yalnızca tokenizer.json kullanıldığından bu yöntem boş bir demet döndürür.
UdopProcessor
sınıf transformers.UdopProcessor
< source >( image_processortokenizer )
Bir görüntü işleyiciyi ve bir belirteçleyiciyi tek bir işleyicide birleştiren bir UdopProcessor oluşturur.
UdopProcessor, LayoutLMv3ImageProcessor ve UdopTokenizer işlevlerinin tümünü sunar. Daha fazla bilgi için ~LayoutLMv3ImageProcessor ve ~UdopTokenizer belgelerine bakın.
__call__
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Nonetext: str | list[str] | list[list[str]] = None**kwargs: *<class 'transformers.models.udop.processing_udop.UdopProcessorKwargs'> ) → ~image_processing_base.BatchFeature
Parametreler
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], isteğe bağlı) — Ön işleme yapılacak görüntü. Piksel değerleri 0 ile 255 arasında değişen tek bir görüntü veya görüntü grubu beklenir. Piksel değerleri 0 ile 1 arasında olan görüntüler geçiriliyorsado_rescale=Falseolarak ayarlayın. - text (
Union[str, list[str], list[list[str]]], isteğe bağlı) — Kodlanacak dizi veya dizi grubu. Her dizi bir metin veya metin listesi (önceden tokenize edilmiş metin) olabilir. Önceden tokenize edilmiş bir girdi geçirirseniz, gruplu girdilerle karışıklığı önlemek içinis_split_into_words=Truedeğerini ayarlayın. - return_tensors (
strveya TensorType, isteğe bağlı) — Belirlenirse, belirli bir çerçeveye ait tensörler döndürülür. Kabul edilen değerler şunlardır:'pt': PyTorchtorch.Tensornesnelerini döndürür.'np': NumPynp.ndarraynesnelerini döndürür.
- **kwargs (ProcessingKwargs, isteğe bağlı) — Her modalite (metin, görüntüler, videolar, ses) için ek işleme seçenekleri. Modelle ilgili parametreler yukarıda listelenmiştir; desteklenen argümanların tam listesi için TypedDict sınıfına bakın.
Dönüş değeri
~image_processing_base.BatchFeature
- data (
dict) — call yönteminin döndürdüğü listeler/diziler/tensörler sözlüğü (‘pixel_values’ vb.). - tensor_type (
Union[None, str, TensorType], isteğe bağlı) — Başlatma sırasında PyTorch/Numpy Tensörlerindeki tamsayı listelerini dönüştürmek için burada bir tensor_type verebilirsiniz.
UdopModel
sınıf transformers.UdopModel
< source >( config: UdopConfig )
Parametreler
- config (UdopConfig) — 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.
Üzerinde herhangi bir özel head bulunmayan, ham hidden-state'ler üreten çıplak Udop 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 >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonebbox: dict[str, typing.Any] | None = Nonepixel_values: typing.Optional[torch.Tensor] = Nonevisual_bbox: dict[str, typing.Any] | None = Nonedecoder_input_ids: typing.Optional[torch.Tensor] = Nonedecoder_attention_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqModelOutput or tuple(torch.FloatTensor)
Parametreler
- input_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yok sayılır.Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.
- attention_mask (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri[0, 1]:- 1, maskelenmemiş jetonlar için,
- maskelenmiş jetonlar için 0.
- bbox (
torch.LongTensorşeklinde({0}, 4), isteğe bağlı) — Her giriş dizisinin token'ları için sınırlayıcı kutuları. Seçilen aralık[0, config.max_2d_position_embeddings-1]. Her sınırlayıcı kutu, (x0, y0, x1, y1) biçiminde normalize edilmiş bir versiyon olmalıdır; burada (x0, y0) sınırlayıcı kutunun sol üst köşesinin konumunu, (x1, y1) ise sağ alt köşesinin konumunu temsil eder.sequence_length = token_sequence_length + patch_sequence_length + 1olduğunu unutmayın; burada1, [CLS] token'ı içindir.patch_sequence_lengthiçinpixel_values'e bakın. - 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ğerleri LayoutLMv3ImageProcessor kullanılarak elde edilebilir. Ayrıntılar için LayoutLMv3ImageProcessor.call() bölümüne bakın (UdopProcessor, görüntü işleme için LayoutLMv3ImageProcessor kullanır). - visual_bbox (
torch.LongTensor, şekli(batch_size, patch_sequence_length, 4), isteğe bağlı) — Görseldeki her yamanın sınırlayıcı kutuları. Sağlanmazsa, sınırlayıcı kutular model tarafından oluşturulur. - decoder_input_ids (
torch.LongTensor, şekli(batch_size, target_sequence_length), isteğe bağlı) — Sözlükte decoder giriş dizisi tokenlarının indeksleri. İndeksler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() yöntemlerine bakın. Decoder giriş ID'leri nelerdir? T5,decoder_input_idsüretimi için başlangıç tokenı olarakpad_token_idkullanır.past_key_valueskullanılıyorsa, isteğe bağlı olarak yalnızca sondecoder_input_idsgirdi olarak verilmelidir (bkz.past_key_values). Ön eğitim içindecoder_input_idsnasıl hazırlanır, öğrenmek için T5 Training bölümüne göz atın. - 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. - inputs_embeds (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,input_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır. - encoder_outputs (
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)boyutunda, isteğe bağlı) kodlayıcının (encoder) son katmanının çıktısındaki gizli durumlar (hidden-states) dizisidir. Çözücüde (decoder) çapraz dikkat (cross-attention) için 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şeklinde(batch_size, target_sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,decoder_input_idsgeçirmek yerine gömülü bir temsil doğrudan geçirebilirsiniz. Eğerpast_key_valueskullanılıyorsa, isteğe bağlı olarak yalnızca sondecoder_inputs_embedsgirdi olarak verilmelidir (bkz.past_key_values). Bu, modelin dahili gömme arama matrisine kıyasladecoder_input_idsendekslerini ilgili vektörlere dönüştürme biçimi üzerinde daha fazla kontrol sağlamak istiyorsanız faydalıdır.decoder_input_idsvedecoder_inputs_embedsher ikisi de ayarlanmamışsa,decoder_inputs_embedsinputs_embedsdeğerini alı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).
Dönüş değeri
Seq2SeqModelOutput veya tuple(torch.FloatTensor)
A Seq2SeqModelOutput veya bir torch.FloatTensor tuple'ı (return_dict=False geçirildiğinde veya config.return_dict=False olduğunda), yapılandırma (UdopConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
UdopModel 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.
last_hidden_state (
torch.FloatTensor, şekli(batch_size, sequence_length, hidden_size)) — Modelin decoder'ının son katmanının çıktısındaki gizli durumlar dizisi.past_key_valueskullanılırsa, yalnızca(batch_size, 1, hidden_size)biçimindeki dizilerin son gizli durumu (hidden-state) çıktı olarak verilir.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.FloatTensor), isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.FloatTensor(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 decoder'ın gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
decoder_attentions (
tuple(torch.FloatTensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.FloatTensor(her katman için 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.FloatTensor), 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.FloatTensordemeti.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.FloatTensor, ş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.FloatTensor), isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.FloatTensor(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 kodlayıcının gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
encoder_attentions (
tuple(torch.FloatTensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.FloatTensor(her katman için 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ı.
Örnek:
>>> from transformers import AutoProcessor, AutoModel
>>> from datasets import load_dataset
>>> import torch
>>> # load model and processor
>>> # in this case, we already have performed OCR ourselves
>>> # so we initialize the processor with `apply_ocr=False`
>>> processor = AutoProcessor.from_pretrained("microsoft/udop-large", apply_ocr=False)
>>> model = AutoModel.from_pretrained("microsoft/udop-large")
>>> # load an example image, along with the words and coordinates
>>> # which were extracted using an OCR engine
>>> dataset = load_dataset("nielsr/funsd-layoutlmv3", split="train")
>>> example = dataset[0]
>>> image = example["image"]
>>> words = example["tokens"]
>>> boxes = example["bboxes"]
>>> inputs = processor(image, words, boxes=boxes, return_tensors="pt")
>>> decoder_input_ids = torch.tensor([[model.config.decoder_start_token_id]])
>>> # forward pass
>>> outputs = model(**inputs, decoder_input_ids=decoder_input_ids)
>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 1, 1024]UdopForConditionalGeneration
sınıf transformers.UdopForConditionalGeneration
< source >( config: UdopConfig )
Parametreler
- config (UdopConfig) — 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.
Üzerinde bir dil modelleme başlığı bulunan UDOP kodlayıcı-çözücü Transformer'ı, belge görüntüleri ve isteğe bağlı bir istem (prompt) verildiğinde metin üretmeye olanak tanır.
Bu sınıf, T5ForConditionalGeneration sınıfına dayanmakta olup görsel ve yerleşim (2B) verilerini işleyecek şekilde genişletilmiştir.
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 >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonebbox: dict[str, typing.Any] | None = Nonepixel_values: typing.Optional[torch.Tensor] = Nonevisual_bbox: dict[str, typing.Any] | None = Nonedecoder_input_ids: typing.Optional[torch.Tensor] = Nonedecoder_attention_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqLMOutput or tuple(torch.FloatTensor)
Parametreler
- input_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yok sayılır.Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.
- attention_mask (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri[0, 1]:- 1, maskelenmemiş jetonlar için,
- maskelenmiş jetonlar için 0.
- bbox (
torch.LongTensorşeklinde({0}, 4), isteğe bağlı) — Her giriş dizisinin token'ları için sınırlayıcı kutuları. Seçilen aralık[0, config.max_2d_position_embeddings-1]. Her sınırlayıcı kutu, (x0, y0, x1, y1) biçiminde normalize edilmiş bir versiyon olmalıdır; burada (x0, y0) sınırlayıcı kutunun sol üst köşesinin konumunu, (x1, y1) ise sağ alt köşesinin konumunu temsil eder.sequence_length = token_sequence_length + patch_sequence_length + 1olduğunu unutmayın; burada1, [CLS] token'ı içindir.patch_sequence_lengthiçinpixel_values'e bakın. - 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ğerleri LayoutLMv3ImageProcessor kullanılarak elde edilebilir. Ayrıntılar için LayoutLMv3ImageProcessor.call() bölümüne bakın (UdopProcessor, görüntü işleme için LayoutLMv3ImageProcessor kullanır). - visual_bbox (
torch.LongTensor, şekli(batch_size, patch_sequence_length, 4), isteğe bağlı) — Görseldeki her yamanın sınırlayıcı kutuları. Sağlanmazsa, sınırlayıcı kutular model tarafından oluşturulur. - decoder_input_ids (
torch.LongTensor, şekli(batch_size, target_sequence_length), isteğe bağlı) — Sözlükte decoder giriş dizisi tokenlarının indeksleri. İndeksler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() yöntemlerine bakın. Decoder giriş ID'leri nelerdir? T5,decoder_input_idsüretimi için başlangıç tokenı olarakpad_token_idkullanır.past_key_valueskullanılıyorsa, isteğe bağlı olarak yalnızca sondecoder_input_idsgirdi olarak verilmelidir (bkz.past_key_values). Ön eğitim içindecoder_input_idsnasıl hazırlanır, öğrenmek için T5 Training bölümüne göz atın. - 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. - inputs_embeds (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,input_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır. - encoder_outputs (
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)boyutunda, isteğe bağlı) kodlayıcının (encoder) son katmanının çıktısındaki gizli durumlar (hidden-states) dizisidir. Çözücüde (decoder) çapraz dikkat (cross-attention) için 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şeklinde(batch_size, target_sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,decoder_input_idsgeçirmek yerine gömülü bir temsil doğrudan geçirebilirsiniz. Eğerpast_key_valueskullanılıyorsa, isteğe bağlı olarak yalnızca sondecoder_inputs_embedsgirdi olarak verilmelidir (bkz.past_key_values). Bu, modelin dahili gömme arama matrisine kıyasladecoder_input_idsendekslerini ilgili vektörlere dönüştürme biçimi üzerinde daha fazla kontrol sağlamak istiyorsanız faydalıdır.decoder_input_idsvedecoder_inputs_embedsher ikisi de ayarlanmamışsa,decoder_inputs_embedsinputs_embedsdeğerini alı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). - labels (
torch.LongTensor, şekli(batch_size,), isteğe bağlı) — Dil modelleme kaybını hesaplamak için etiketler. Endeksler[-100, 0, ..., config.vocab_size - 1]aralığında olmalıdır.-100olarak ayarlanan tüm etiketler yok sayılır (maskelenir); kayıp yalnızca[0, ..., config.vocab_size]aralığındaki etiketler için hesaplanır.
Dönüş değeri
Seq2SeqLMOutput veya tuple(torch.FloatTensor)
Bir Seq2SeqLMOutput veya
torch.FloatTensor (eğer return_dict=False geçirildiyse veya config.return_dict=False ise) içeren bir demet, yapılandırmaya (UdopConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
UdopForConditionalGeneration 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.FloatTensor, şekli(1,), opsiyonel,labelssağlandığında döndürülür) — Dil modelleme kaybı.logits (
torch.FloatTensor, ş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.FloatTensor), isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.FloatTensor(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.FloatTensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.FloatTensor(her katman için 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.FloatTensor), 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.FloatTensordemeti.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.FloatTensor, ş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.FloatTensor), isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.FloatTensor(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.FloatTensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.FloatTensor(her katman için 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, UdopForConditionalGeneration
>>> from datasets import load_dataset
>>> # load model and processor
>>> # in this case, we already have performed OCR ourselves
>>> # so we initialize the processor with `apply_ocr=False`
>>> processor = AutoProcessor.from_pretrained("microsoft/udop-large", apply_ocr=False)
>>> model = UdopForConditionalGeneration.from_pretrained("microsoft/udop-large")
>>> # load an example image, along with the words and coordinates
>>> # which were extracted using an OCR engine
>>> dataset = load_dataset("nielsr/funsd-layoutlmv3", split="train")
>>> example = dataset[0]
>>> image = example["image"]
>>> words = example["tokens"]
>>> boxes = example["bboxes"]
>>> # one can use the various task prefixes (prompts) used during pre-training
>>> # e.g. the task prefix for DocVQA is "Question answering. "
>>> question = "Question answering. What is the date on the form?"
>>> encoding = processor(image, question, text_pair=words, boxes=boxes, return_tensors="pt")
>>> # autoregressive generation
>>> predicted_ids = model.generate(**encoding)
>>> print(processor.batch_decode(predicted_ids, skip_special_tokens=True)[0])
9/30/92UdopEncoderModel
sınıf transformers.UdopEncoderModel
< source >( config: UdopConfig )
Parametreler
- config (UdopConfig) — 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.
Üzerinde herhangi bir özel head bulunmayan, ham hidden-state'ler üreten çıplak Udop 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 >( input_ids: typing.Optional[torch.Tensor] = Nonebbox: dict[str, typing.Any] | None = Noneattention_mask: typing.Optional[torch.Tensor] = Nonepixel_values: typing.Optional[torch.Tensor] = Nonevisual_bbox: dict[str, typing.Any] | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithAttentionMask or tuple(torch.FloatTensor)
Parametreler
- input_ids (
torch.LongTensorşeklinde(batch_size, sequence_length)) — Girdi dizisi belirteçlerinin sözlükteki indeksleri. T5, göreli konum gömme (embedding) kullanan bir model olduğundan girdileri hem sağdan hem de soldan dolgu (padding) ile doldurabilirsiniz.Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() yöntemlerine bakın.
Ön eğitim için
input_idsnasıl hazırlanır, daha fazla bilgi için T5 Training sayfasına göz atın. - bbox (
torch.LongTensorşeklinde({0}, 4), isteğe bağlı) — Her giriş dizisinin token'ları için sınırlayıcı kutuları. Seçilen aralık[0, config.max_2d_position_embeddings-1]. Her sınırlayıcı kutu, (x0, y0, x1, y1) biçiminde normalize edilmiş bir versiyon olmalıdır; burada (x0, y0) sınırlayıcı kutunun sol üst köşesinin konumunu, (x1, y1) ise sağ alt köşesinin konumunu temsil eder.sequence_length = token_sequence_length + patch_sequence_length + 1olduğunu unutmayın; burada1, [CLS] token'ı içindir.patch_sequence_lengthiçinpixel_values'e bakın. - attention_mask (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri[0, 1]:- 1, maskelenmemiş jetonlar için,
- maskelenmiş jetonlar için 0.
- 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ğerleri LayoutLMv3ImageProcessor kullanılarak elde edilebilir. Ayrıntılar için LayoutLMv3ImageProcessor.call() bölümüne bakın (UdopProcessor, görüntü işleme için LayoutLMv3ImageProcessor kullanır). - visual_bbox (
torch.LongTensor, şekli(batch_size, patch_sequence_length, 4), isteğe bağlı) — Görseldeki her yamanın sınırlayıcı kutuları. Sağlanmazsa, sınırlayıcı kutular model tarafından oluşturulur. - inputs_embeds (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,input_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır.
Dönüş değeri
BaseModelOutputWithAttentionMask veya tuple(torch.FloatTensor)
BaseModelOutputWithAttentionMask veya torch.FloatTensor bir demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırma (UdopConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
UdopEncoderModel 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.
last_hidden_state (
torch.FloatTensor, şekli(batch_size, sequence_length, hidden_size)) — Modelin son katmanının çıktısındaki gizli durumlar dizisi.past_key_valueskullanılırsa yalnızca(batch_size, 1, hidden_size)şeklindeki dizilerin son gizli durumu üretilir.attention_mask (
torch.FloatTensor, şekli(batch_size, sequence_length), isteğe bağlı) — Modelin ileri geçişinde, dolgu (padding) token indeksleri üzerinde dikkat (attention) işlemi yapılmaması için kullanılan dikkat maskesi.[0, 1]aralığında seçilen maske değerleri:- 1, maskelenmemiş jetonlar için,
- maskelenmiş jetonlar için 0.
past_key_values (
Cache, isteğe bağlı,use_cache=Truegeçirildiğinde veyaconfig.use_cache=Trueolduğunda döndürülür) — Bir Cache örneğidir. Daha fazla ayrıntı için kv cache kılavuzumuza bakın.Ön hesaplanmış gizli durumları (self-attention bloklarındaki anahtar ve değerler ile isteğe bağlı olarak
config.is_encoder_decoder=Truedurumunda cross-attention bloklarındaki anahtar ve değerler) içerir; bunlar sıralı çözümlemeyi hızlandırmak için kullanılabilir (bkz.past_key_valuesgirdisi).hidden_states (
tuple(torch.FloatTensor), isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.FloatTensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir adet + her katmanın çıktısı için birer adet) içeren bir tuple, şekli(batch_size, sequence_length, hidden_size). Modelin her katmanının çıktısındaki gizli durumlar ve isteğe bağlı başlangıç gömme çıktıları.attentions (
tuple(torch.FloatTensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) — Her katman için bir adet,(batch_size, num_heads, sequence_length, sequence_length)biçimindetorch.FloatTensoriçeren bir tuple. Dikkat softmax'ı sonrası dikkat ağırlıkları, kendine dikkat (self-attention) kafalarında ağırlıklı ortalama hesaplamak için kullanılır.cross_attentions (
tuple(torch.FloatTensor), isteğe bağlı,output_attentions=Trueveconfig.add_cross_attention=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) — Her katman için bir adettorch.FloatTensoriçeren,(batch_size, num_heads, sequence_length, sequence_length)biçiminde bir tuple. Dikkat softmax'inden sonra, çapraz dikkat başlıklarında ağırlıklı ortalama hesaplamak için kullanılan, decoder'ın çapraz dikkat katmanının dikkat ağırlıkları.
Örnek:
>>> from transformers import AutoProcessor, UdopEncoderModel
>>> from huggingface_hub import hf_hub_download
>>> from datasets import load_dataset
>>> # load model and processor
>>> # in this case, we already have performed OCR ourselves
>>> # so we initialize the processor with `apply_ocr=False`
>>> processor = AutoProcessor.from_pretrained("microsoft/udop-large", apply_ocr=False)
>>> model = UdopEncoderModel.from_pretrained("microsoft/udop-large")
>>> # load an example image, along with the words and coordinates
>>> # which were extracted using an OCR engine
>>> dataset = load_dataset("nielsr/funsd-layoutlmv3", split="train")
>>> example = dataset[0]
>>> image = example["image"]
>>> words = example["tokens"]
>>> boxes = example["bboxes"]
>>> encoding = processor(image, words, boxes=boxes, return_tensors="pt")
>>> outputs = model(**encoding)
>>> last_hidden_states = outputs.last_hidden_state