Transformers documentation

UDOP

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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.*

drawing 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ı) bbox girdisini 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.size

Gö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 generate metodunun 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.

UdopConfig

sınıf transformers.UdopConfig

< >

( 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ılan True) — Modelin bir kodlayıcı/çözücü olarak kullanılıp kullanılmadığı.
  • vocab_size (int, isteğe bağlı, varsayılan 33201) — Modelin sözlük boyutu. input_ids ile temsil edilebilecek farklı token sayısını tanımlar.
  • d_model (int, isteğe bağlı, varsayılan 1024) — Kodlayıcı katmanlarının ve pooler katmanının boyutu.
  • d_kv (int, isteğe bağlı, varsayılan 64) — Dikkat başı başına anahtar, sorgu ve değer projeksiyonlarının boyutu. Projeksiyon katmanının inner_dim değeri num_heads * d_kv olarak tanımlanır.
  • d_ff (int, isteğe bağlı, varsayılan 4096) — MLP temsillerinin boyutu.
  • num_layers (int, isteğe bağlı, varsayılan 24) — Transformer çözücüdeki gizli katman sayısı.
  • num_decoder_layers (int, isteğe bağlı) — Transformer decoder'ındaki gizli katman sayısı. Ayarlanmazsa num_layers ile aynı değer kullanılır.
  • num_heads (int, isteğe bağlı, varsayılan 16) — 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ılan 0.1) — Tüm dropout katmanları için oran.
  • layer_norm_epsilon (float, isteğe bağlı, varsayılan 1e-06) — Katman normalizasyon katmanları tarafından kullanılan epsilon.
  • initializer_factor (float, isteğe bağlı, varsayılan 1.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ılan True) — Modelin son anahtar/değer dikkatlerini (tüm modellerde kullanılmaz) döndürüp döndürmeyeceği. Yalnızca config.is_decoder=True olduğunda veya model yalnızca çözücü tabanlı üretken bir model olduğunda geçerlidir.
  • pad_token_id (int, isteğe bağlı, varsayılan 0) — Sözlükte dolgu için kullanılan token kimliği.
  • eos_token_id (Union[int, list[int]], isteğe bağlı, varsayılan 1) — 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ılan 224) — 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ılan 16) — Her yamanın boyutu (çözünürlüğü).
  • num_channels (int, isteğe bağlı, varsayılan 3) — Giriş kanal sayısı.
  • is_decoder (bool, isteğe bağlı, varsayılan False) — Modelin bir decoder olarak kullanılıp kullanılmadığı. False ise model bir encoder olarak kullanılır.
  • add_cross_attention (bool, isteğe bağlı, varsayılan False) — Modelde çapraz dikkat katmanlarının eklenip eklenmeyeceğini belirtir.
  • tie_word_embeddings (bool, isteğe bağlı, varsayılan True) — Modelin tied_weights_keys eş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

< >

( 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ındaki ignore_index değeridir.
  • only_label_first_subword (bool, isteğe bağlı, varsayılan True) — 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

< >

( 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

< >

( 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=True olduğ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

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]

Parametreler

  • token_ids_0 (list[int]) — 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]

Sıfırlar listesi.

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.

save_vocabulary

< >

( save_directory: strfilename_prefix: str | None = None )

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

< >

( image_processortokenizer )

Parametreler

  • image_processor (LayoutLMv3ImageProcessor) — Görsel işleyici zorunlu bir girdidir.
  • tokenizer (UdopTokenizer) — Tokenizer zorunlu bir girdidir.

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__

< >

( 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çiriliyorsa do_rescale=False olarak 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çin is_split_into_words=True değerini ayarlayın.
  • return_tensors (str veya 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': PyTorch torch.Tensor nesnelerini döndürür.
    • 'np': NumPy np.ndarray nesnelerini 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

< >

( 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

< >

( 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.

    Girdi kimlikleri nelerdir?

  • 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.

    Dikkat maskeleri nedir?

  • 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 + 1 olduğunu unutmayın; burada 1, [CLS] token'ı içindir. patch_sequence_length için pixel_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ı olarak pad_token_id kullanır. past_key_values kullanılıyorsa, isteğe bağlı olarak yalnızca son decoder_input_ids girdi olarak verilmelidir (bkz. past_key_values). Ön eğitim için decoder_input_ids nası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_ids iç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_ids yerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu, input_ids dizinlerini 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 Tuple last_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 genellikle past_key_values değerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülen use_cache=True veya config.use_cache=True.

    Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın. past_key_values geçirilmezse, varsayılan olarak DynamicCache başlatılır.

    Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.

    past_key_values kullanılıyorsa, kullanıcının tüm input_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_ids geçirmek yerine gömülü bir temsil doğrudan geçirebilirsiniz. Eğer past_key_values kullanılıyorsa, isteğe bağlı olarak yalnızca son decoder_inputs_embeds girdi olarak verilmelidir (bkz. past_key_values). Bu, modelin dahili gömme arama matrisine kıyasla decoder_input_ids endekslerini ilgili vektörlere dönüştürme biçimi üzerinde daha fazla kontrol sağlamak istiyorsanız faydalıdır.

    decoder_input_ids ve decoder_inputs_embeds her ikisi de ayarlanmamışsa, decoder_inputs_embeds inputs_embeds değerini alır.

  • use_cache (bool, isteğe bağlı) — True olarak ayarlanırsa, past_key_values anahtar 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_values kullanı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=True geçirildiğinde veya config.use_cache=True olduğ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_values girdisi) 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=True geçirildiğinde veya config.output_hidden_states=True olduğ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=True geçirildiğinde veya config.output_attentions=True olduğ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=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — (batch_size, num_heads, sequence_length, sequence_length) biçiminde, her katman için bir adet içeren torch.FloatTensor demeti.

    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=True geçirildiğinde veya config.output_hidden_states=True olduğ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=True geçirildiğinde veya config.output_attentions=True olduğ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

< >

( 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

< >

( 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.

    Girdi kimlikleri nelerdir?

  • 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.

    Dikkat maskeleri nedir?

  • 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 + 1 olduğunu unutmayın; burada 1, [CLS] token'ı içindir. patch_sequence_length için pixel_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ı olarak pad_token_id kullanır. past_key_values kullanılıyorsa, isteğe bağlı olarak yalnızca son decoder_input_ids girdi olarak verilmelidir (bkz. past_key_values). Ön eğitim için decoder_input_ids nası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_ids iç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_ids yerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu, input_ids dizinlerini 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 Tuple last_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 genellikle past_key_values değerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülen use_cache=True veya config.use_cache=True.

    Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın. past_key_values geçirilmezse, varsayılan olarak DynamicCache başlatılır.

    Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.

    past_key_values kullanılıyorsa, kullanıcının tüm input_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_ids geçirmek yerine gömülü bir temsil doğrudan geçirebilirsiniz. Eğer past_key_values kullanılıyorsa, isteğe bağlı olarak yalnızca son decoder_inputs_embeds girdi olarak verilmelidir (bkz. past_key_values). Bu, modelin dahili gömme arama matrisine kıyasla decoder_input_ids endekslerini ilgili vektörlere dönüştürme biçimi üzerinde daha fazla kontrol sağlamak istiyorsanız faydalıdır.

    decoder_input_ids ve decoder_inputs_embeds her ikisi de ayarlanmamışsa, decoder_inputs_embeds inputs_embeds değerini alır.

  • use_cache (bool, isteğe bağlı) — True olarak ayarlanırsa, past_key_values anahtar 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. -100 olarak 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, labels sağ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=True geçirildiğinde veya config.use_cache=True olduğ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_values girdisi) 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=True geçirildiğinde veya config.output_hidden_states=True olduğ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=True geçirildiğinde veya config.output_attentions=True olduğ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=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — (batch_size, num_heads, sequence_length, sequence_length) biçiminde, her katman için bir adet içeren torch.FloatTensor demeti.

    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=True geçirildiğinde veya config.output_hidden_states=True olduğ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=True geçirildiğinde veya config.output_attentions=True olduğ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/92

UdopEncoderModel

sınıf transformers.UdopEncoderModel

< >

( 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

< >

( 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_ids nası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 + 1 olduğunu unutmayın; burada 1, [CLS] token'ı içindir. patch_sequence_length için pixel_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.

    Dikkat maskeleri nedir?

  • 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_ids yerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu, input_ids dizinlerini 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_values kullanı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=True geçirildiğinde veya config.use_cache=True olduğ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=True durumunda 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_values girdisi).

  • hidden_states (tuple(torch.FloatTensor), isteğe bağlı, output_hidden_states=True geçirildiğinde veya config.output_hidden_states=True olduğ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=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — Her katman için bir adet, (batch_size, num_heads, sequence_length, sequence_length) biçiminde torch.FloatTensor iç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=True ve config.add_cross_attention=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — Her katman için bir adet torch.FloatTensor iç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
Update on GitHub