Transformers documentation

BROS

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 2021-08-10 tarihinde HF papers'ta yayımlanmış ve 2023-09-15 tarihinde Hugging Face Transformers'a katkıda bulunmuştur.

BROS

Genel Bakış

BROS modeli, Teakgyu Hong, Donghyun Kim, Mingi Ji, Wonseok Hwang, Daehyun Nam, Sungrae Park tarafından BROS: A Pre-trained Language Model Focusing on Text and Layout for Better Key Information Extraction from Documents makalesinde önerilmiştir.

BROS, BERT Relying On Spatiality ifadesinin kısaltmasıdır. Bir token dizisi ve bunların sınır kutularını girdi olarak alıp gizli durumlar dizisi üreten, yalnızca kodlayıcı (encoder-only) bir Transformer modelidir. BROS, mutlak konumsal bilgi yerine göreli konumsal bilgiyi kodlar.

İki amaçla ön eğitilir: BERT'te kullanılan token-masked language modeling (TMLM) amacı ve yeni bir area-masked language modeling (AMLM) amacı. TMLM'de tokenlar rastgele maskelenir ve model, maskelenen tokenları uzamsal bilgiyi ve diğer maskelenmemiş tokenları kullanarak tahmin eder. AMLM, TMLM'nin 2B versiyonudur. TMLM ile aynı bilgiyi kullanarak tahmin yapar, ancak metin tokenlarını rastgele maskeler ve metin bloklarını (alanları) maskeler.

BrosForTokenClassification, BrosModel üzerinde basit bir doğrusal katmana sahiptir. Her token'ın etiketini tahmin eder. BrosSpadeEEForTokenClassification, BrosModel üzerinde initial_token_classifier ve subsequent_token_classifier içerir. initial_token_classifier, her varlığın ilk token'ını tahmin etmek için kullanılır ve subsequent_token_classifier, varlık içindeki sonraki token'ı tahmin etmek için kullanılır. BrosSpadeELForTokenClassification, BrosModel üzerinde bir entity_linker içerir. entity_linker, iki varlık arasındaki ilişkiyi tahmin etmek için kullanılır.

BrosForTokenClassification ve BrosSpadeEEForTokenClassification temelde aynı işi görür. Ancak BrosForTokenClassification, girdi tokenlerinin mükemmel bir şekilde serileştirildiğini varsayar (2B bir uzayda var oldukları için bu çok zorlu bir görevken), BrosSpadeEEForTokenClassification ise bir token'dan sonraki bağlantı tokenlerini tahmin ettiği için serileştirme hatalarını işlerken daha fazla esneklik sağlar.

BrosSpadeELForTokenClassification, varlık içi bağlantı görevini gerçekleştirir. Bu iki varlık arasında bir ilişki varsa, bir varlığın bir token'ından diğer varlığın bir token'ına ilişkiyi tahmin eder.

BROS, açık görsel özelliklere dayanmadan FUNSD, SROIE, CORD ve SciTSR gibi Anahtar Bilgi Çıkarımı (KIE) ölçütlerinde karşılaştırılabilir veya daha iyi sonuçlar elde eder.

Makalenin özeti aşağıdaki gibidir:

Belge görüntülerinden anahtar bilgi çıkarımı (KIE), metinlerin iki boyutlu (2D) uzaydaki bağlamsal ve mekânsal anlamlarını anlamayı gerektirir. Birçok yakın tarihli çalışma, bu görevi belge görüntülerindeki görsel özellikleri metinlerle ve yerleşimleriyle birleştirmeye odaklanan önceden eğitilmiş dil modelleri geliştirerek çözmeye çalışmaktadır. Öte yandan, bu makale sorunu temele dönerek ele alır: metin ve yerleşimin etkili bir şekilde birleştirilmesi. Özellikle, 2D uzaydaki metinlerin göreli konumlarını kodlayan ve alan-maskeleme stratejisiyle etiketlenmemiş belgelerden öğrenen, BROS (BERT Relying On Spatiality) adında bir önceden eğitilmiş dil modeli öneriyoruz. 2D uzaydaki metinleri anlamak için optimize edilmiş bu eğitim şemasıyla, BROS, görsel özelliklere dayanmadan dört KIE kriterinde (FUNSD, SROIE, CORD ve SciTSR) önceki yöntemlere kıyasla karşılaştırılabilir veya daha iyi performans göstermektedir. Bu makale ayrıca KIE görevlerindeki iki gerçek dünya zorluğunu ortaya koymaktadır: (1) yanlış metin sıralamasından kaynaklanan hatanın en aza indirilmesi ve (2) daha az aşağı akış örneğinden verimli öğrenme; ve BROS'un önceki yöntemlere göre üstünlüğünü kanıtlamaktadır.*

Bu model jinho8345 tarafından katkıda bulunmuştur. Orijinal kod burada bulunabilir.

Kullanım ipuçları ve örnekleri

  • forward() input_ids ve bbox (sınır kutusu) gerektirir. Her sınır kutusu (x0, y0, x1, y1) biçiminde olmalıdır (sol üst köşe, sağ alt köşe). Sınır kutularının elde edilmesi harici bir OCR sistemine bağlıdır. x koordinatı belge görüntüsü genişliğine, y koordinatı ise belge görüntüsü yüksekliğine göre normalize edilmelidir.
def expand_and_normalize_bbox(bboxes, doc_width, doc_height):
    # here, bboxes are numpy array

    # Normalize bbox -> 0 ~ 1
    bboxes[:, [0, 2]] = bboxes[:, [0, 2]] / width
    bboxes[:, [1, 3]] = bboxes[:, [1, 3]] / height
  • [~transformers.BrosForTokenClassification.forward, ~transformers.BrosSpadeEEForTokenClassification.forward, ~transformers.BrosSpadeEEForTokenClassification.forward] yalnızca input_ids ve bbox değil, kayıp hesabı için box_first_token_mask da gerektirir. Bu, her kutunun ilk olmayan tokenlarını filtrelemek için kullanılan bir maskedir. Bu maskeyi, kelimelerden input_ids oluştururken sınırlayıcı kutuların başlangıç token indekslerini kaydederek elde edebilirsiniz. box_first_token_mask aşağıdaki kodla oluşturulabilir,
def make_box_first_token_mask(bboxes, words, tokenizer, max_seq_length=512):

    box_first_token_mask = np.zeros(max_seq_length, dtype=np.bool_)

    # encode(tokenize) each word from words (list[str])
    input_ids_list: list[list[int]] = [tokenizer.encode(e, add_special_tokens=False) for e in words]

    # get the length of each box
    tokens_length_list: list[int] = [len(l) for l in input_ids_list]

    box_end_token_indices = np.array(list(itertools.accumulate(tokens_length_list)))
    box_start_token_indices = box_end_token_indices - np.array(tokens_length_list)

    # filter out the indices that are out of max_seq_length
    box_end_token_indices = box_end_token_indices[box_end_token_indices < max_seq_length - 1]
    if len(box_start_token_indices) > len(box_end_token_indices):
        box_start_token_indices = box_start_token_indices[: len(box_end_token_indices)]

    # set box_start_token_indices to True
    box_first_token_mask[box_start_token_indices] = True

    return box_first_token_mask

Kaynaklar

  • Demo betikleri burada bulunabilir.

BrosConfig

sınıf transformers.BrosConfig

< >

( 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 = 0is_encoder_decoder: bool = Falseid2label: 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 = Nonevocab_size: int = 30522hidden_size: int = 768num_hidden_layers: int = 12num_attention_heads: int = 12intermediate_size: int = 3072hidden_act: str = 'gelu'hidden_dropout_prob: float | int = 0.1attention_probs_dropout_prob: float | int = 0.1max_position_embeddings: int = 512type_vocab_size: int = 2initializer_range: float = 0.02layer_norm_eps: float = 1e-12pad_token_id: int | None = 0dim_bbox: int = 8bbox_scale: float = 100.0n_relations: int = 1classifier_dropout_prob: float | int = 0.1is_decoder: bool = Falseadd_cross_attention: bool = False )

Parametreler

  • vocab_size (int, isteğe bağlı, varsayılan 30522) — Modelin sözlük boyutu. input_ids tarafından temsil edilebilecek farklı token sayısını tanımlar.
  • hidden_size (int, isteğe bağlı, varsayılan 768) — Gizli temsillerin boyutu.
  • num_hidden_layers (int, isteğe bağlı, varsayılan 12) — Transformer çözücüdeki gizli katman sayısı.
  • num_attention_heads (int, isteğe bağlı, varsayılan 12) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.
  • intermediate_size (int, isteğe bağlı, varsayılan 3072) — MLP temsillerinin boyutu.
  • hidden_act (str, isteğe bağlı, varsayılan gelu) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, "gelu", "relu", "silu" vb.
  • hidden_dropout_prob (Union[float, int], isteğe bağlı, varsayılan 0.1) — Gömme, kodlayıcı ve havuzlayıcıdaki tüm tam bağlı katmanlar için dropout olasılığı.
  • attention_probs_dropout_prob (Union[float, int], isteğe bağlı, varsayılan 0.1) — Dikkat olasılıkları için dropout oranı.
  • max_position_embeddings (int, isteğe bağlı, varsayılan 512) — Bu modelin kullanılabileceği en uzun dizi uzunluğu.
  • type_vocab_size (int, isteğe bağlı, varsayılan 2) — token_type_ids için sözlük boyutu.
  • initializer_range (float, isteğe bağlı, varsayılan 0.02) — Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.
  • layer_norm_eps (float, isteğe bağlı, varsayılan 1e-12) — Katman normalizasyon katmanları tarafından kullanılan epsilon.
  • pad_token_id (int, isteğe bağlı, varsayılan 0) — Sözlükte dolgu için kullanılan token kimliği.
  • dim_bbox (int, isteğe bağlı, varsayılan 8) — Sınır kutusu koordinatlarının boyutu. (x0, y1, x1, y0, x1, y1, x0, y1)
  • bbox_scale (float, isteğe bağlı, varsayılan 100.0) — Sınır kutusu koordinatlarının ölçek çarpanı.
  • n_relations (int, isteğe bağlı, varsayılan 1) — SpadeEE(varlık çıkarımı), SpadeEL(varlık bağlama) başı için ilişkilerin sayısı.
  • classifier_dropout_prob (Union[float, int], isteğe bağlı, varsayılan 0.1) — Sınıflandırıcı için dropout oranı.
  • 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.

Bu, bir BrosModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Bros modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılanlarla bir yapılandırma örneği oluşturmak, jinho8345/bros-base-uncased modelinin yapılandırmasına benzer bir yapılandırma üretir.

Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.

Örnekler:

>>> from transformers import BrosConfig, BrosModel

>>> # Initializing a BROS jinho8345/bros-base-uncased style configuration
>>> configuration = BrosConfig()

>>> # Initializing a model from the jinho8345/bros-base-uncased style configuration
>>> model = BrosModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

BrosProcessor

sınıf transformers.BrosProcessor

< >

( tokenizer = None**kwargs )

Parametreler

  • tokenizer (BertTokenizer) — Tokenizer zorunlu bir girdidir.

Bir tokenizer'ı tek bir işlemciye sararak BrosProcessor oluşturur.

BrosProcessor, BertTokenizer'in tüm işlevlerini sunar. Daha fazla bilgi için ~BertTokenizer'a 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 = Nonevideos: typing.Union[list['PIL.Image.Image'], numpy.ndarray, ForwardRef('torch.Tensor'), list[numpy.ndarray], list['torch.Tensor'], list[list['PIL.Image.Image']], list[list[numpy.ndarray]], list[list['torch.Tensor']], transformers.video_utils.URL, list[transformers.video_utils.URL], list[list[transformers.video_utils.URL]], transformers.video_utils.Path, list[transformers.video_utils.Path], list[list[transformers.video_utils.Path]], NoneType] = Noneaudio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor'], NoneType] = None**kwargs: *<class 'transformers.processing_utils.ProcessingKwargs'> )

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.
  • videos (Union[list[PIL.Image.Image], numpy.ndarray, torch.Tensor, list[numpy.ndarray], list[torch.Tensor], list[list[PIL.Image.Image]], list[list[numpy.ndarray]], list[list[torch.Tensor]], ~video_utils.URL, list[~video_utils.URL], list[list[~video_utils.URL]], ~video_utils.Path, list[~video_utils.Path], list[list[~video_utils.Path]]], isteğe bağlı) — Ön işleme yapılacak video. Piksel değerleri 0 ile 255 arasında değişen tek bir video veya video partisi beklenir. Piksel değerleri 0 ile 1 arasında olan videoları geçiriyorsanız do_rescale=False olarak ayarlayın.
  • audio (Union[numpy.ndarray, torch.Tensor, collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence[torch.Tensor]], isteğe bağlı) — Hazırlanacak ses veya sesler partisi. Her ses, bir NumPy dizisi veya PyTorch tensörü olabilir. NumPy dizisi/PyTorch tensörü durumunda, her sesin şekli (C, T) olmalıdır; burada C kanal sayısı, T ise sesin örnek uzunluğudur.
  • 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.

BrosModel

sınıf transformers.BrosModel

< >

( config: BrosConfigadd_pooling_layer = True )

Parametreler

  • config (BrosConfig) — 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.
  • add_pooling_layer (bool, isteğe bağlı, varsayılan True) — Bir havuzlama katmanı eklenip eklenmeyeceği

Üzerinde herhangi bir özel head olmadan ham hidden-state'ler üreten çıplak Bros 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: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPoolingAndCrossAttentions or tuple(torch.Tensor)

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?

  • bbox ('torch.Tensor', şekli ‘(batch_size, num_boxes, 4)’) — Girdi dizisindeki her token için sınırlayıcı kutu koordinatları. Her sınırlayıcı kutu, dört değerden oluşan bir listedir (x1, y1, x2, y2); burada (x1, y1) sınırlayıcı kutunun sol üst köşesini, (x2, y2) ise sağ alt köşesini belirtir.
  • 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?

  • token_type_ids (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Girdilerin ilk ve ikinci bölümlerini belirtmek için segment token dizinleri. Dizinler [0, 1]:
    • 0, sentence A belirteci ile eşleşir,
    • 1, sentence B belirteçlerine karşılık gelir.

    Token type ID'leri nelerdir?

  • position_ids (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı [0, config.n_positions - 1].

    Pozisyon kimlikleri nedir?

  • 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_hidden_states (torch.Tensor, şekli (batch_size, sequence_length, hidden_size), isteğe bağlı) — Encoder'ın son katmanının çıktısındaki gizli durumlar dizisi. Model bir decoder olarak yapılandırılmışsa çapraz dikkat (cross-attention) için kullanılır.
  • encoder_attention_mask (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Giriş verisindeki dolgu (padding) jetonlarının indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Model bir decoder olarak yapılandırılmışsa bu maske çapraz dikkat (cross-attention) işleminde kullanılır. Maske değerleri [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.

Dönüş değeri

BaseModelOutputWithPoolingAndCrossAttentions veya tuple(torch.Tensor)

A BaseModelOutputWithPoolingAndCrossAttentions veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (BrosConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

BrosModel 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.Tensor, şekli (batch_size, sequence_length, hidden_size)) — Modelin son katmanının çıktısındaki gizli durumlar dizisi.

  • pooler_output (torch.Tensor, şekli (batch_size, hidden_size)) — Sıranın ilk token'ının (sınıflandırma token'ı) son katman gizli durumu, yardımcı ön eğitim görevi için kullanılan katmanlar üzerinden ek işlemden geçirildikten sonraki hali. Örneğin BERT ailesi modelleri için, bu, sınıflandırma token'ının doğrusal bir katman ve tanh aktivasyon fonksiyonu üzerinden işlenmesinden sonra döndürülen değerdir. Doğrusal katman ağırlıkları, ön eğitim sırasında bir sonraki cümle tahmini (sınıflandırma) hedefinden eğitilir.

  • hidden_states (tuple(torch.Tensor), 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.Tensor (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.

  • attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

  • cross_attentions (tuple(torch.Tensor), 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) — (batch_size, num_heads, sequence_length, sequence_length) biçiminde, her katman için bir adet içeren torch.Tensor 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.

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

    Sıralı çözümlemeyi hızlandırmak için (bkz. past_key_values girdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki anahtar ve değerler ve isteğe bağlı olarak config.is_encoder_decoder=True ise cross-attention bloklarındaki anahtar ve değerler) içerir.

Örnekler:

>>> import torch
>>> from transformers import BrosProcessor, BrosModel

>>> processor = BrosProcessor.from_pretrained("jinho8345/bros-base-uncased")

>>> model = BrosModel.from_pretrained("jinho8345/bros-base-uncased")

>>> encoding = processor("Hello, my dog is cute", add_special_tokens=False, return_tensors="pt")
>>> bbox = torch.tensor([[[0, 0, 1, 1]]]).repeat(1, encoding["input_ids"].shape[-1], 1)
>>> encoding["bbox"] = bbox

>>> outputs = model(**encoding)
>>> last_hidden_states = outputs.last_hidden_state

BrosForTokenClassification

sınıf transformers.BrosForTokenClassification

< >

( config: BrosConfig )

Parametreler

  • config (BrosConfig) — 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 token sınıflandırma başlığı bulunan (gizli durumlar çıktısının üzerine eklenmiş doğrusal bir katman) Bros transformer'ı, örneğin Adlandırılmış Varlık Tanıma (NER) görevleri için.

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: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonebbox_first_token_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → TokenClassifierOutput or tuple(torch.Tensor)

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?

  • bbox ('torch.Tensor', şekli ‘(batch_size, num_boxes, 4)’) — Girdi dizisindeki her token için sınırlayıcı kutu koordinatları. Her sınırlayıcı kutu, dört değerden oluşan bir listedir (x1, y1, x2, y2); burada (x1, y1) sınırlayıcı kutunun sol üst köşesini, (x2, y2) ise sağ alt köşesini belirtir.
  • 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_first_token_mask (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Her sınırlayıcı kutunun ilk token'ını belirtmek için maske. Maske değerleri [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.
  • token_type_ids (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Girdilerin ilk ve ikinci bölümlerini belirtmek için segment token dizinleri. Dizinler [0, 1]:
    • 0, sentence A belirteci ile eşleşir,
    • 1, sentence B belirteçlerine karşılık gelir.

    Token type ID'leri nelerdir?

  • position_ids (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı [0, config.n_positions - 1].

    Pozisyon kimlikleri nedir?

  • 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.
  • labels (torch.LongTensor, şekli (batch_size, sequence_length), isteğe bağlı) — Token sınıflandırma kaybını hesaplamak için etiketler. Endeksler [0, ..., config.num_labels - 1] aralığında olmalıdır.

Dönüş değeri

TokenClassifierOutput veya tuple(torch.Tensor)

Bir TokenClassifierOutput veya torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (BrosConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

BrosForTokenClassification forward metodu, __call__ özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine Module örneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

  • loss (torch.Tensor, şekli (1,), isteğe bağlı, labels sağlandığında döndürülür) — Sınıflandırma kaybı.

  • logits (torch.Tensor, şekli (batch_size, sequence_length, config.num_labels)) — Sınıflandırma puanları (SoftMax öncesi).

  • hidden_states (tuple(torch.Tensor), 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.Tensor (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.

  • attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

Örnekler:

>>> import torch
>>> from transformers import BrosProcessor, BrosForTokenClassification

>>> processor = BrosProcessor.from_pretrained("jinho8345/bros-base-uncased")

>>> model = BrosForTokenClassification.from_pretrained("jinho8345/bros-base-uncased")

>>> encoding = processor("Hello, my dog is cute", add_special_tokens=False, return_tensors="pt")
>>> bbox = torch.tensor([[[0, 0, 1, 1]]]).repeat(1, encoding["input_ids"].shape[-1], 1)
>>> encoding["bbox"] = bbox

>>> outputs = model(**encoding)

BrosSpadeEEForTokenClassification

sınıf transformers.BrosSpadeEEForTokenClassification

< >

( config: BrosConfig )

Parametreler

  • config (BrosConfig) — 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.

Üstünde bir token sınıflandırma kafası bulunan Bros Modeli (hidden-states çıktısının üzerinde initial_token_layers ve subsequent_token_layer) örneğin Adlandırılmış Varlık Tanıma (NER) görevleri için. initial_token_classifier, her varlığın ilk token'ını tahmin etmek için kullanılır ve subsequent_token_classifier, bir varlık içindeki sonraki token'ları tahmin etmek için kullanılır. BrosForTokenClassification ile karşılaştırıldığında, bu model bir token'dan sonraki token'ı tahmin ettiği için seri hale getirme hatalarına karşı daha dayanıklıdır.

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: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonebbox_first_token_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneinitial_token_labels: typing.Optional[torch.Tensor] = Nonesubsequent_token_labels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BrosSpadeOutput or tuple(torch.Tensor)

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?

  • bbox ('torch.Tensor', şekli ‘(batch_size, num_boxes, 4)’) — Girdi dizisindeki her token için sınırlayıcı kutu koordinatları. Her sınırlayıcı kutu, dört değerden oluşan bir listedir (x1, y1, x2, y2); burada (x1, y1) sınırlayıcı kutunun sol üst köşesini, (x2, y2) ise sağ alt köşesini belirtir.
  • 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_first_token_mask (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Her sınırlayıcı kutunun ilk token'ını belirtmek için maske. Maske değerleri [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.
  • token_type_ids (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Girdilerin ilk ve ikinci bölümlerini belirtmek için segment token dizinleri. Dizinler [0, 1]:
    • 0, sentence A belirteci ile eşleşir,
    • 1, sentence B belirteçlerine karşılık gelir.

    Token type ID'leri nelerdir?

  • position_ids (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı [0, config.n_positions - 1].

    Pozisyon kimlikleri nedir?

  • 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.
  • initial_token_labels (torch.LongTensor, şekli (batch_size, sequence_length), isteğe bağlı) — Başlangıç token sınıflandırması için etiketler.
  • subsequent_token_labels (torch.LongTensor, şekli (batch_size, sequence_length), isteğe bağlı) — Sonraki token sınıflandırması için etiketler.

Dönüş değeri

BrosSpadeOutput veya tuple(torch.Tensor)

BrosSpadeOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (BrosConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

BrosSpadeEEForTokenClassification forward metodu, __call__ özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine Module örneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

  • loss (torch.Tensor, şekli (1,), isteğe bağlı, labels sağlandığında döndürülür) — Sınıflandırma kaybı.

  • initial_token_logits (torch.Tensor, şekli (batch_size, sequence_length, config.num_labels)) — Varlık başlangıç tokenleri için sınıflandırma puanları (SoftMax öncesi).

  • subsequent_token_logits (torch.Tensor, şekli (batch_size, sequence_length, sequence_length+1)) — Varlık dizisi jetonları için sınıflandırma puanları (SoftMax öncesi).

  • hidden_states (tuple[torch.Tensor], 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.Tensor (gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.

  • attentions (tuple[torch.Tensor], isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

Örnekler:

>>> import torch
>>> from transformers import BrosProcessor, BrosSpadeEEForTokenClassification

>>> processor = BrosProcessor.from_pretrained("jinho8345/bros-base-uncased")

>>> model = BrosSpadeEEForTokenClassification.from_pretrained("jinho8345/bros-base-uncased")

>>> encoding = processor("Hello, my dog is cute", add_special_tokens=False, return_tensors="pt")
>>> bbox = torch.tensor([[[0, 0, 1, 1]]]).repeat(1, encoding["input_ids"].shape[-1], 1)
>>> encoding["bbox"] = bbox

>>> outputs = model(**encoding)

BrosSpadeELForTokenClassification

sınıf transformers.BrosSpadeELForTokenClassification

< >

( config: BrosConfig )

Parametreler

  • config (BrosConfig) — 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.

Üstünde bir token sınıflandırma başlığı (gizli durum çıktısının üstünde bir entity_linker katmanı) bulunan Bros Modeli, örneğin Entity-Linking için. entity_linker, varlık içi bağlantıları (bir varlıktan diğer bir varlığa) tahmin etmek için kullanılır.

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: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonebbox_first_token_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → TokenClassifierOutput or tuple(torch.Tensor)

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?

  • bbox ('torch.Tensor', şekli ‘(batch_size, num_boxes, 4)’) — Girdi dizisindeki her token için sınırlayıcı kutu koordinatları. Her sınırlayıcı kutu, dört değerden oluşan bir listedir (x1, y1, x2, y2); burada (x1, y1) sınırlayıcı kutunun sol üst köşesini, (x2, y2) ise sağ alt köşesini belirtir.
  • 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_first_token_mask (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Her sınırlayıcı kutunun ilk token'ını belirtmek için maske. Maske değerleri [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.
  • token_type_ids (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Girdilerin ilk ve ikinci bölümlerini belirtmek için segment token dizinleri. Dizinler [0, 1]:
    • 0, sentence A belirteci ile eşleşir,
    • 1, sentence B belirteçlerine karşılık gelir.

    Token type ID'leri nelerdir?

  • position_ids (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı [0, config.n_positions - 1].

    Pozisyon kimlikleri nedir?

  • 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.
  • labels (torch.LongTensor, şekli (batch_size, sequence_length), isteğe bağlı) — Token sınıflandırma kaybını hesaplamak için etiketler. Endeksler [0, ..., config.num_labels - 1] aralığında olmalıdır.

Dönüş değeri

TokenClassifierOutput veya tuple(torch.Tensor)

Bir TokenClassifierOutput veya torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (BrosConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

BrosSpadeELForTokenClassification forward metodu, __call__ özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine Module örneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

  • loss (torch.Tensor, şekli (1,), isteğe bağlı, labels sağlandığında döndürülür) — Sınıflandırma kaybı.

  • logits (torch.Tensor, şekli (batch_size, sequence_length, config.num_labels)) — Sınıflandırma puanları (SoftMax öncesi).

  • hidden_states (tuple(torch.Tensor), 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.Tensor (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.

  • attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

Örnekler:

>>> import torch
>>> from transformers import BrosProcessor, BrosSpadeELForTokenClassification

>>> processor = BrosProcessor.from_pretrained("jinho8345/bros-base-uncased")

>>> model = BrosSpadeELForTokenClassification.from_pretrained("jinho8345/bros-base-uncased")

>>> encoding = processor("Hello, my dog is cute", add_special_tokens=False, return_tensors="pt")
>>> bbox = torch.tensor([[[0, 0, 1, 1]]]).repeat(1, encoding["input_ids"].shape[-1], 1)
>>> encoding["bbox"] = bbox

>>> outputs = model(**encoding)
Update on GitHub