Transformers documentation

TAPAS

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 2020-04-05 tarihinde HF papers'ta yayımlanmış ve 2020-12-15 tarihinde Hugging Face Transformers'a katkıda bulunulmuştur.

TAPAS

Genel Bakış

TAPAS modeli, Jonathan Herzig, Paweł Krzysztof Nowak, Thomas Müller, Francesco Piccinno ve Julian Martin Eisenschlos tarafından TAPAS: Weakly Supervised Table Parsing via Pre-training makalesinde önerilmiştir. Tablo verileriyle ilgili soruları yanıtlamak için özel olarak tasarlanmış (ve ön eğitilmiş) BERT tabanlı bir modeldir. BERT'e kıyasla TAPAS, göreli konum gömme (embedding) kullanır ve tablo yapısını kodlayan 7 token türüne sahiptir. TAPAS, İngilizce Wikipedia'dan gelen milyonlarca tablo ve ilgili metinlerden oluşan büyük bir veri setinde, maskeli dil modelleme (MLM) hedefi üzerinde ön eğitilmiştir.

Soru yanıtlama için TAPAS'ın üstünde iki başlık bulunur: bir hücre seçimi başlığı ve (isteğe bağlı olarak) seçilen hücreler arasında toplama işlemlerini (sayma veya toplama gibi) gerçekleştirmek için bir birleştirme başlığı. TAPAS, çeşitli veri kümelerinde ince ayarlanmıştır:

  • SQA (Microsoft tarafından sıralı soru yanıtlama)
  • WTQ (Stanford Üniversitesi tarafından hazırlanan Wiki Tablo Soruları)
  • WikiSQL (Salesforce tarafından).

SQA ve WTQ'da en iyi performansı elde ederken, çok daha basit bir mimariye sahip olmasına rağmen WikiSQL'de SOTA ile karşılaştırılabilir bir performans gösterir.

Makalenin özeti aşağıdaki gibidir:

Tablolar üzerinde doğal dil sorularını yanıtlamak genellikle bir anlamsal ayrıştırma (semantic parsing) görevi olarak görülür. Tam mantıksal formların toplanma maliyetini azaltmak için popüler bir yaklaşım, mantıksal formlar yerine gösterimlere (denotation) dayalı zayıf denetleme (weak supervision) üzerine odaklanır. Ancak zayıf denetlemeden anlamsal ayrıştırıcılar eğitmek zorluklar doğurur ve ayrıca üretilen mantıksal formlar yalnızca gösterimi elde etmeden önce ara bir adım olarak kullanılır. Bu makalede, mantıksal formlar üretmeden tablolar üzerinde soru yanıtlama için TAPAS adlı bir yaklaşım sunuyoruz. TAPAS, zayıf denetlemeden eğitim alır ve gösterimi, tablo hücrelerini seçerek ve bu seçime isteğe bağlı olarak ilgili bir toplama (aggregation) operatörü uygulayarak tahmin eder. TAPAS, tabloları girdi olarak kodlamak için BERT mimarisini genişletir, Wikipedia'dan toplanan metin parçaları ve tabloların etkili bir ortak ön-eğitimiyle başlatılır ve uçtan uca (end-to-end) eğitilir. Üç farklı anlamsal ayrıştırma veri seti üzerinde deneyler yapıyoruz ve TAPAS'ın, SQA'da en iyi doğruluğu 55.1'den 67.2'ye yükselterek ve WIKISQL ile WIKITQ'da en iyi performansla (state-of-the-art) eşit düzeyde çalışarak, daha basit bir model mimarisiyle anlamsal ayrıştırma modellerini geride bıraktığını veya onlarla yarıştığını görüyoruz. Ayrıca, bizim ortamımızda basit olan WIKISQL'den WIKITQ'ya aktarım öğrenmesinin (transfer learning), en iyi performansın 4.2 puan üzerinde, 48.7 doğruluk sağladığını buluyoruz.

Ayrıca yazarlar, TAPAS'ı tablo çıkarımı (table entailment) tanıması için, ince ayar (fine-tuning) öncesinde ara bir adımda öğrenilen, otomatik olarak oluşturulan milyonlarca eğitim örneğinden oluşan dengeli bir veri seti oluşturarak daha fazla ön eğitimden geçirmiştir. TAPAS yazarları bu ek ön eğitime ara ön eğitim (intermediate pre-training) adını vermektedir (TAPAS önce MLM üzerinde, ardından başka bir veri seti üzerinde ön eğitildiği için). Araştırmacılar, ara ön eğitimin SQA üzerindeki performansı daha da artırdığını ve TabFact üzerinde de yeni bir en iyi performansa (state-of-the-art) ulaştığını tespit etmiştir. Tablo çıkarımı (ikili sınıflandırma görevi) için 16k Wikipedia tablosu içeren büyük ölçekli bir veri seti olan TabFact'ta da en iyi performansa ulaşmıştır. Daha fazla ayrıntı için Julian Martin Eisenschlos, Syrine Krichene ve Thomas Müller'in takip makalesine bakınız: Understanding tables with intermediate pre-training.

drawing TAPAS architecture. Taken from the original blog post.

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

Kullanım ipuçları

  • TAPAS, varsayılan olarak göreli konum gömme kullanır (konum gömme, tablonun her hücresinde yeniden başlatılır). Not: Bu, orijinal TAPAS makalesinin yayımlanmasından sonra eklenen bir özelliktir. Yazarlara göre bu, genellikle biraz daha iyi performans sağlar ve gömme havuzunun dolmadan daha uzun dizilerin kodlanmasına olanak tanır. Bu durum, TapasConfig'in reset_position_index_per_cell parametresinde yansıtılır ve bu parametre varsayılan olarak True olarak ayarlanmıştır. hub'da bulunan modellerin varsayılan sürümlerinin tümü göreli konum gömme kullanır. from_pretrained() metodunu çağırırken revision="no_reset" ek argümanını geçirerek mutlak konum gömme kullanan sürümleri de kullanabilirsiniz. Not: Girdilerin soldan değil, sağdan doldurulması (padding) genellikle önerilir.
  • TAPAS, BERT tabanlıdır; bu nedenle örneğin TAPAS-base, BERT-base mimarisine karşılık gelir. Elbette TAPAS-large en iyi performansı sağlayacaktır (makalede raporlanan sonuçlar TAPAS-large modeline aittir). Farklı boyutlardaki modellerin sonuçları orijinal GitHub deposunda gösterilmektedir.
  • TAPAS, SQA üzerinde ince ayar yapılmış kontrol noktalarına sahiptir ve bu kontrol noktaları, sohbet ortamında bir tabloyla ilgili soruları yanıtlama yeteneğine sahiptir. Bu, önceki soruyla ilgili “yaşı kaç?” gibi takip soruları sorabileceğiniz anlamına gelir. Dikkat edin, sohbet ortamında TAPAS’ın ileri geçişi biraz farklıdır: bu durumda, modelin önceki soruya verdiği tahmini labels ile prev_labels token türü kimliklerinin üzerine yazılabilmesi için her tablo-soru çiftini modele tek tek beslemeniz gerekir. Daha fazla bilgi için “Kullanım” bölümüne bakın.
  • TAPAS, BERT ile benzerlik gösterir ve bu nedenle maskeli dil modelleme (MLM) hedefine dayanır. Bu sayede maskeli token tahmininde ve genel olarak NLU'da verimlidir, ancak metin üretimi için en uygun seçenek değildir. Bu açıdan, nedensel dil modelleme (CLM) hedefiyle eğitilen modeller daha iyidir. TAPAS'ın, GPT-2 gibi otoregresif bir metin çözücüyle birleştirilebilmesi için EncoderDecoderModel çerçevesinde bir kodlayıcı olarak kullanılabileceğini unutmayın.

Kullanım: ince ayar

Burada, kendi veri setinizde TapasForQuestionAnswering modelini nasıl ince ayarlayabileceğinizi açıklıyoruz.

ADIM 1: TAPAS'ı kullanabileceğiniz 3 yoldan birini seçin - ya da deneyin

Temel olarak, TapasForQuestionAnswering için ince ayar yapılabilen 3 farklı yöntem bulunmaktadır; bunlar, Tapas'ın ince ayarının yapıldığı farklı veri setlerine karşılık gelmektedir:

  1. SQA: Bir tabloya ilişkin, sohbet ortamında takip soruları sormakla ilgilendiğinizde kullanılır. Örneğin önce “ilk aktörün adı nedir?” diye sorduysanız, ardından “yaşı kaç?” gibi bir takip sorusu sorabilirsiniz. Burada sorular herhangi bir özetleme (aggregation) içermez (tüm sorular hücre seçimi sorularıdır).
  2. WTQ: Eğer sohbet ortamında soru sormakla değil de, satır sayma, hücre değerlerini toplama veya hücre değerlerinin ortalamasını alma gibi işlemleri içerebilen, bir tabloyla ilgili sorular sormakla ilgileniyorsanız. Bu durumda örneğin “Cristiano Ronaldo’nun kariyerindeki toplam gol sayısı nedir?” diye sorabilirsiniz. Bu durum, modelin yalnızca sorunun cevabını denetim olarak alarak uygun toplama operatörünü (SUM/COUNT/AVERAGE/NONE) kendisinin öğrenmesi gerektiğinden zayıf denetim olarak da adlandırılır.
  3. WikiSQL-supervised: bu veri seti, eğitim sırasında modele doğru birleşim operatörünün verilmesiyle WikiSQL üzerine kuruludur. Buna güçlü denetim de denir. Burada, uygun birleşim operatörünü öğrenmek çok daha kolaydır.

Özetlemek gerekirse:

GörevÖrnek veri setiAçıklama
SohbetSQASohbet tarzı, yalnızca hücre seçimi soruları
Toplama için zayıf denetimWTQSorular birleştirme (aggregation) içerebilir ve model, yalnızca cevabın denetim sinyali olarak verildiği durumda bunu öğrenmek zorundadır.
Toplama için güçlü denetimWikiSQL-gözetimliSorular birleştirme (aggregation) içerebilir ve model, altın (gold) birleştirme operatörü verildiğinde bunu öğrenmelidir.

Hub'dan önceden eğitilmiş bir taban ve rastgele başlatılmış sınıflandırma başlıklarıyla bir model başlatmak aşağıda gösterildiği gibi yapılabilir.

from transformers import TapasConfig, TapasForQuestionAnswering


# for example, the base sized model with default SQA configuration
model = TapasForQuestionAnswering.from_pretrained("google/tapas-base", device_map="auto")

# or, the base sized model with WTQ configuration
config = TapasConfig.from_pretrained("google/tapas-base-finetuned-wtq")
model = TapasForQuestionAnswering.from_pretrained("google/tapas-base", config=config, device_map="auto")

# or, the base sized model with WikiSQL configuration
config = TapasConfig("google-base-finetuned-wikisql-supervised")
model = TapasForQuestionAnswering.from_pretrained("google/tapas-base", config=config, device_map="auto")

Elbette, TAPAS'ın ince ayarının yapıldığı bu üç yöntemden birini takip etmek zorunda değilsiniz. TapasConfig başlatılırken istediğiniz hiperparametreleri tanımlayarak deneyler yapabilir ve ardından bu yapılandırmaya dayalı bir TapasForQuestionAnswering oluşturabilirsiniz. Örneğin, hem konuşma tarzı soruları hem de toplama (aggregation) içerebilecek soruları barındıran bir veri setiniz varsa, bunu şu şekilde yapabilirsiniz. İşte bir örnek:

from transformers import TapasConfig, TapasForQuestionAnswering


# you can initialize the classification heads any way you want (see docs of TapasConfig)
config = TapasConfig(num_aggregation_labels=3, average_logits_per_cell=True)
# initializing the pre-trained base sized model with our custom classification heads
model = TapasForQuestionAnswering.from_pretrained("google/tapas-base", config=config, device_map="auto")

Yapabileceğiniz bir diğer şey de, zaten ince ayarı yapılmış bir kontrol noktasından başlamaktır. Burada dikkat edilmesi gereken nokta, WTQ üzerinde ince ayarı yapılmış kontrol noktasının, biraz kırılgan olan L2-kaybı nedeniyle bazı sorunlara sahip olmasıdır. Daha fazla bilgi için buraya bakın.

HuggingFace hub'da mevcut olan tüm önceden eğitilmiş ve ince ayarlanmış TAPAS kontrol noktalarının listesi için buraya bakın.

ADIM 2: Verilerinizi SQA biçiminde hazırlayın

İkincisi, yukarıda ne seçtiyseniz seçin, veri setinizi SQA biçiminde hazırlamalısınız. Bu biçim, aşağıdaki sütunlara sahip bir TSV/CSV dosyasıdır:

  • id: isteğe bağlı, tablo-soru çiftinin id'si, kayıt tutma amaçlıdır.
  • annotator: isteğe bağlı, tablo-soru çiftini etiketleyen kişinin kimliği, kayıt tutma amaçlıdır.
  • position: Sorunun tabloyla ilgili olarak birinci, ikinci, üçüncü sırada olup olmadığını gösteren tamsayı. Yalnızca konuşma tabanlı kurulumda (SQA) gereklidir. WTQ/WikiSQL denetimli yaklaşım kullanıyorsanız bu sütuna ihtiyacınız yoktur.
  • question: string
  • table_file: string, tabular verileri içeren csv dosyasının adı
  • answer_coordinates: bir veya daha fazla demet listesi (her demet, cevabın bir parçası olan bir hücre koordinatı, yani satır-sütun çiftidir)
  • answer_text: bir veya daha fazla dizeden oluşan liste (her dize, cevabın bir parçası olan bir hücre değeridir)
  • aggregation_label: toplama operatörünün indeksi. Yalnızca toplama için güçlü denetim durumunda (WikiSQL-denetimli durum) gereklidir
  • float_answer: Sorunun, varsa, ondalıklı sayı cevabı (yoksa np.nan). Yalnızca toplanma için zayıf denetim durumunda (WTQ ve WikiSQL gibi) zorunludur.

Tabloların kendisi bir klasörde bulunmalıdır ve her tablo ayrı bir csv dosyası olmalıdır. TAPAS algoritmasının yazarları, diğer veri setlerini (WTQ, WikiSQL) SQA biçimine dönüştürmek için bazı otomatik mantık içeren dönüştürme betikleri kullanmıştır. Yazar bunu burada açıklıyor. HuggingFace'in uygulamasıyla çalışan bu betiğin bir dönüştürmesi burada bulunabilir. İlginç bir şekilde, bu dönüştürme betikleri mükemmel değildir (answer_coordinates ve float_answer alanları answer_text temel alınarak doldurulmaktadır), bu da WTQ ve WikiSQL sonuçlarının aslında iyileştirilebileceği anlamına gelir.

3. ADIM: Verilerinizi TapasTokenizer kullanarak tensörlere dönüştürün

Üçüncüsü, verilerinizi bu TSV/CSV biçiminde (ve tabular verileri içeren ilgili CSV dosyalarıyla) hazırladıysanız, ardından TapasTokenizer kullanarak tablo-soru çiftlerini input_ids, attention_mask, token_type_ids vb. değerlere dönüştürebilirsiniz. Yine, yukarıdaki üç durumdan hangisini seçtiğinize bağlı olarak, TapasForQuestionAnswering ince ayar için farklı girdiler gerektirir:

GörevZorunlu girdiler
Sohbetinput_ids, attention_mask, token_type_ids, labels
Toplama için zayıf denetiminput_ids, attention_mask, token_type_ids, labels, numeric_values, numeric_values_scale, float_answer
Toplama için güçlü denetiminput ids, attention mask, token type ids, labels, aggregation_labels

TapasTokenizer, TSV dosyasındaki answer_coordinates ve answer_text sütunlarına dayanarak labels, numeric_values ve numeric_values_scale değerlerini oluşturur. float_answer ve aggregation_labels değerleri, 2. adımdaki TSV dosyasında zaten mevcuttur. İşte bir örnek:

from transformers import TapasTokenizer
import pandas as pd

model_name = "google/tapas-base"
tokenizer = TapasTokenizer.from_pretrained(model_name)

data = {"Actors": ["Brad Pitt", "Leonardo Di Caprio", "George Clooney"], "Number of movies": ["87", "53", "69"]}
queries = [
    "What is the name of the first actor?",
    "How many movies has George Clooney played in?",
    "What is the total number of movies?",
]
answer_coordinates = [[(0, 0)], [(2, 1)], [(0, 1), (1, 1), (2, 1)]]
answer_text = [["Brad Pitt"], ["69"], ["209"]]
table = pd.DataFrame.from_dict(data)
inputs = tokenizer(
    table=table,
    queries=queries,
    answer_coordinates=answer_coordinates,
    answer_text=answer_text,
    padding="max_length",
    return_tensors="pt",
)
inputs
{'input_ids': tensor([[ ]]), 'attention_mask': tensor([[...]]), 'token_type_ids': tensor([[[...]]]),
'numeric_values': tensor([[ ]]), 'numeric_values_scale: tensor([[ ]]), labels: tensor([[ ]])}

Not edin ki TapasTokenizer, tablo verisinin sadece metin olmasını bekler. Bir dataframe üzerinde .astype(str) kullanarak veriyi sadece metin verisine dönüştürebilirsiniz. Elbette, bu yalnızca tek bir eğitim örneğinin nasıl kodlanacağını göstermektedir. Batch'ler üzerinde döngü yapmak için bir dataloader oluşturmanız önerilir:

import pandas as pd
import torch


tsv_path = "your_path_to_the_tsv_file"
table_csv_path = "your_path_to_a_directory_containing_all_csv_files"


class TableDataset(torch.utils.data.Dataset):
    def __init__(self, data, tokenizer):
        self.data = data
        self.tokenizer = tokenizer

    def __getitem__(self, idx):
        item = data.iloc[idx]
        table = pd.read_csv(table_csv_path + item.table_file).astype(
            str
        )  # be sure to make your table data text only
        encoding = self.tokenizer(
            table=table,
            queries=item.question,
            answer_coordinates=item.answer_coordinates,
            answer_text=item.answer_text,
            truncation=True,
            padding="max_length",
            return_tensors="pt",
        )
        # remove the batch dimension which the tokenizer adds by default
        encoding = {key: val.squeeze(0) for key, val in encoding.items()}
        # add the float_answer which is also required (weak supervision for aggregation case)
        encoding["float_answer"] = torch.tensor(item.float_answer)
        return encoding

    def __len__(self):
        return len(self.data)


data = pd.read_csv(tsv_path, sep="\t")
train_dataset = TableDataset(data, tokenizer)
train_dataloader = torch.utils.data.DataLoader(train_dataset, batch_size=32)

Burada her tablo-soru çiftinin bağımsız olarak kodlandığına dikkat edin. Veri setiniz sohbet tabanlı değilse bu uygundur. Veri setiniz sohbet tabanlı soruları içeriyorsa (SQA'daki gibi), önce queries, answer_coordinates ve answer_text alanlarını tablo bazında (position dizin sırasına göre) gruplayıp her tabloyu sorularıyla birlikte toplu olarak kodlamalısınız. Bu, prev_labels token türlerinin (TapasTokenizer belgelerine bakın) doğru şekilde ayarlanmasını sağlar. Daha fazla bilgi için bu defterine bakın.

**ADIM 4: Modeli eğitin (ince ayarlayın)

Ardından TapasForQuestionAnswering modelini aşağıdaki gibi ince ayarlayabilirsiniz (burada toplama için zayıf denetim durumu gösterilmektedir):

from transformers import AdamW, TapasConfig, TapasForQuestionAnswering


# this is the default WTQ configuration
config = TapasConfig(
    num_aggregation_labels=4,
    use_answer_as_supervision=True,
    answer_loss_cutoff=0.664694,
    cell_selection_preference=0.207951,
    huber_loss_delta=0.121194,
    init_cell_selection_weights_to_zero=True,
    select_one_column=True,
    allow_empty_column_selection=False,
    temperature=0.0352513,
)
model = TapasForQuestionAnswering.from_pretrained("google/tapas-base", config=config, device_map="auto")

optimizer = AdamW(model.parameters(), lr=5e-5)

model.train()
for epoch in range(2):  # loop over the dataset multiple times
    for batch in train_dataloader:
        # get the inputs;
        input_ids = batch["input_ids"]
        attention_mask = batch["attention_mask"]
        token_type_ids = batch["token_type_ids"]
        labels = batch["labels"]
        numeric_values = batch["numeric_values"]
        numeric_values_scale = batch["numeric_values_scale"]
        float_answer = batch["float_answer"]

        # zero the parameter gradients
        optimizer.zero_grad()

        # forward + backward + optimize
        outputs = model(
            input_ids=input_ids,
            attention_mask=attention_mask,
            token_type_ids=token_type_ids,
            labels=labels,
            numeric_values=numeric_values,
            numeric_values_scale=numeric_values_scale,
            float_answer=float_answer,
        )
        loss = outputs.loss
        loss.backward()
        optimizer.step()

Kullanım: inference

Burada, TapasForQuestionAnswering'i çıkarım (yani yeni veriler üzerinde tahmin yapma) için nasıl kullanabileceğinizi açıklıyoruz. Çıkarım için, logitleri elde etmek üzere modele yalnızca input_ids, attention_mask ve token_type_ids (TapasTokenizer kullanarak elde edilebilir) sağlanmalıdır. Ardından, bu değerleri tahmin edilen koordinatlara ve isteğe bağlı toplama indekslerine dönüştürmek için kullanışlı ~models.tapas.tokenization_tapas.convert_logits_to_predictions yöntemini kullanabilirsiniz.

Ancak, kurulumun sohbet tabanlı olup olmadığına bağlı olarak çıkarımın farklı olduğunu unutmayın. Sohbet dışı bir kurulumda, bir partideki tüm tablo-soru çiftleri üzerinde çıkarım paralel olarak yapılabilir. Bunun bir örneği aşağıdadır:

from transformers import TapasTokenizer, TapasForQuestionAnswering
import pandas as pd

model_name = "google/tapas-base-finetuned-wtq"
model = TapasForQuestionAnswering.from_pretrained(model_name, device_map="auto")
tokenizer = TapasTokenizer.from_pretrained(model_name)

data = {"Actors": ["Brad Pitt", "Leonardo Di Caprio", "George Clooney"], "Number of movies": ["87", "53", "69"]}
queries = [
    "What is the name of the first actor?",
    "How many movies has George Clooney played in?",
    "What is the total number of movies?",
]
table = pd.DataFrame.from_dict(data)
inputs = tokenizer(table=table, queries=queries, padding="max_length", return_tensors="pt").to(model.device)
outputs = model(**inputs)
predicted_answer_coordinates, predicted_aggregation_indices = tokenizer.convert_logits_to_predictions(
    inputs, outputs.logits.detach(), outputs.logits_aggregation.detach()
)

# let's print out the results:
id2aggregation = {0: "NONE", 1: "SUM", 2: "AVERAGE", 3: "COUNT"}
aggregation_predictions_string = [id2aggregation[x] for x in predicted_aggregation_indices]

answers = []
for coordinates in predicted_answer_coordinates:
    if len(coordinates) == 1:
        # only a single cell:
        answers.append(table.iat[coordinates[0]])
    else:
        # multiple cells
        cell_values = []
        for coordinate in coordinates:
            cell_values.append(table.iat[coordinate])
        answers.append(", ".join(cell_values))

display(table)
print("")
for query, answer, predicted_agg in zip(queries, answers, aggregation_predictions_string):
    print(query)
    if predicted_agg == "NONE":
        print("Predicted answer: " + answer)
    else:
        print("Predicted answer: " + predicted_agg + " > " + answer)
What is the name of the first actor?
Predicted answer: Brad Pitt
How many movies has George Clooney played in?
Predicted answer: COUNT > 69
What is the total number of movies?
Predicted answer: SUM > 87, 53, 69

Sohbet tabanlı bir kurulumda, her tablo-soru çifti modele ardışık olarak sağlanmalıdır; böylece prev_labels token türleri, önceki tablo-soru çiftinin tahmin edilen labels değerleriyle üzerine yazılabilir. Yine, daha fazla bilgi bu notebook'ta bulunabilir.

Kaynaklar

TAPAS'a özgü çıktılar

sınıf transformers.models.tapas.modeling_tapas.TableQuestionAnsweringOutput

< >

( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonelogits_aggregation: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor] | None = Noneattentions: tuple[torch.Tensor] | None = None )

Parametreler

  • loss (torch.Tensor, şekli (1,), isteğe bağlı, labels (ve olası olarak answer, aggregation_labels, numeric_values ve numeric_values_scale) sağlandığında döndürülür) — Hiyerarşik hücre seçimi log-olabilirlik kaybının ve (isteğe bağlı olarak) yarı denetimli regresyon kaybının ve (isteğe bağlı olarak) agregasyonlar için denetimli kaybın toplamı olarak toplam kayıp.
  • logits (torch.Tensor, şekli (batch_size, sequence_length)) — Her token için hücre seçimi başlığının tahmin puanları.
  • logits_aggregation (torch.Tensor, isteğe bağlı, şekli (batch_size, num_aggregation_labels)) — Her bir birleştirme operatörü için birleştirme başlığının tahmin puanları.
  • hidden_states (tuple[torch.Tensor], isteğe bağlı, geri döndürülür output_hidden_states=True geçildiğinde veya config.output_hidden_states=True) — şu türden bir demet: 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) ve şekli (batch_size, sequence_length, hidden_size).

    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ı, geri döndürülür output_attentions=True geçildiğinde veya config.output_attentions=True) — şu türden bir demet: torch.Tensor (şeklinde, her katman için bir adet (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.

TapasForQuestionAnswering için çıktı türü.

TapasConfig

sınıf transformers.TapasConfig

< >

( 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 = 1024type_vocab_sizes: list[int] | tuple[int, ...] = (3, 256, 256, 2, 256, 256, 10)initializer_range: float = 0.02layer_norm_eps: float = 1e-12pad_token_id: int | None = 0bos_token_id: int | None = Noneeos_token_id: int | list[int] | None = Nonepositive_label_weight: float = 10.0num_aggregation_labels: int = 0aggregation_loss_weight: float = 1.0use_answer_as_supervision: bool | None = Noneanswer_loss_importance: float = 1.0use_normalized_answer_loss: bool = Falsehuber_loss_delta: float | None = Nonetemperature: float = 1.0aggregation_temperature: float = 1.0use_gumbel_for_cells: bool = Falseuse_gumbel_for_aggregation: bool = Falseaverage_approximation_function: str = 'ratio'cell_selection_preference: float | None = Noneanswer_loss_cutoff: float | int | None = Nonemax_num_rows: int = 64max_num_columns: int = 32average_logits_per_cell: bool = Falseselect_one_column: bool = Trueallow_empty_column_selection: bool = Falseinit_cell_selection_weights_to_zero: bool = Falsereset_position_index_per_cell: bool = Truedisable_per_token_loss: bool = Falseaggregation_labels: dict | None = Noneno_aggregation_label_index: int | None = Noneis_decoder: bool = Falseadd_cross_attention: bool = Falsetie_word_embeddings: bool = True )

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 1024) — Bu modelin kullanılabileceği maksimum dizi uzunluğu.
  • type_vocab_sizes (list[int], isteğe bağlı, varsayılan [3, 256, 256, 2, 256, 256, 10]) — TapasModel çağrılırken geçirilen token_type_ids için sözlük boyutları.
  • 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.
  • bos_token_id (int, isteğe bağlı) — Sözlükte akış başlangıcı için kullanılan token kimliği.
  • eos_token_id (Union[int, list[int]], isteğe bağlı) — Sözlükte akış sonu için kullanılan token kimliği.
  • positive_label_weight (float, isteğe bağlı, varsayılan 10.0) — Pozitif etiketler için ağırlık.
  • num_aggregation_labels (int, isteğe bağlı, varsayılan 0) — Tahmin edilecek birleştirme operatörlerinin sayısı.
  • aggregation_loss_weight (float, isteğe bağlı, varsayılan 1.0) — Toplama kaybı için önem ağırlığı.
  • use_answer_as_supervision (bool, isteğe bağlı) — Toplama örnekleri için tek denetim olarak cevabın kullanılıp kullanılmayacağı.
  • answer_loss_importance (float, isteğe bağlı, varsayılan 1.0) — Regresyon kaybı için önem ağırlığı.
  • use_normalized_answer_loss (bool, isteğe bağlı, varsayılan False) — Cevap kaybının, tahmin edilen ve beklenen değerin maksimumuna bölünerek normalize edilip edilmeyeceğini belirtir.
  • huber_loss_delta (float, isteğe bağlı) — Regresyon kaybını hesaplamak için kullanılan Delta parametresi.
  • temperature (float, isteğe bağlı, varsayılan 1.0) — Hücre logit olasılıklarının çarpıklığını kontrol etmek (VEYA değiştirmek) için kullanılan değer.
  • aggregation_temperature (float, isteğe bağlı, varsayılan 1.0) — Olasılıkların çarpıklığını kontrol etmek için birleştirme logitlerini ölçekler.
  • use_gumbel_for_cells (bool, isteğe bağlı, varsayılan False) — Hücre seçiminde Gumbel-Softmax uygulanıp uygulanmayacağı.
  • use_gumbel_for_aggregation (bool, isteğe bağlı, varsayılan False) — Toplama seçiminde Gumbel-Softmax uygulanıp uygulanmayacağı.
  • average_approximation_function (string, isteğe bağlı, varsayılan "ratio") — Zayıf denetim durumunda hücrelerin beklenen ortalamasını hesaplamak için kullanılan yöntem. "ratio", "first_order" veya "second_order" değerlerinden biri.
  • cell_selection_preference (float, isteğe bağlı) — Belirsiz durumlarda hücre seçimi için tercih. Yalnızca toplanma için zayıf denetim durumunda (WTQ, WikiSQL) geçerlidir. Toplanma olasılıklarının toplam kütlesi (“NONE” operatörü hariç) bu hiperparametreden yüksekse, örnek için toplanma tahmin edilir.
  • answer_loss_cutoff (float, isteğe bağlı) — Cutoff değerinden büyük answer loss'a sahip örnekleri yoksayın.
  • max_num_rows (int, isteğe bağlı, varsayılan 64) — Maksimum satır sayısı.
  • max_num_columns (int, isteğe bağlı, varsayılan 32) — Maksimum sütun sayısı.
  • average_logits_per_cell (bool, isteğe bağlı, varsayılan False) — Logitlerin hücre başına ortalama alınacak olup olmayacağı.
  • select_one_column (bool, isteğe bağlı, varsayılan True) — Modelin yalnızca tek bir sütundan hücre seçmesine kısıtlama getirilip getirilmeyeceğini belirtir.
  • allow_empty_column_selection (bool, isteğe bağlı, varsayılan False) — Hiçbir sütun seçilmemesine izin verilip verilmeyeceğini belirtir.
  • init_cell_selection_weights_to_zero (bool, isteğe bağlı, varsayılan False) — Hücre seçim ağırlıklarının başlangıç olasılıklarının %50 olması için 0'a başlatılıp başlatılmayacağı.
  • reset_position_index_per_cell (bool, isteğe bağlı, varsayılan True) — Konum indekslerinin her hücrede yeniden başlatılıp başlatılmayacağı (yani göreli konum gömme kullanılıp kullanılmayacağı).
  • disable_per_token_loss (bool, isteğe bağlı, varsayılan False) — Hücrelerdeki herhangi bir (güçlü veya zayıf) denetimi devre dışı bırakıp bırakmayacağı.
  • aggregation_labels (dict[int, label], isteğe bağlı) — Sonuçları birleştirmek için kullanılan birleştirme etiketleri. Örneğin, WTQ modellerinin aşağıdaki birleştirme etiketleri vardır: {0: "NONE", 1: "SUM", 2: "AVERAGE", 3: "COUNT"}
  • no_aggregation_label_index (int, opsiyonel) — Eğer agregasyon etiketleri tanımlıysa ve bu etiketlerden biri “No aggregation”ı temsil ediyorsa, bu değer ilgili etiketin indeksine ayarlanmalıdır. Örneğin, WTQ modellerinde “NONE” agregasyon etiketi 0. indekste yer alır, bu nedenle bu modeller için bu değer 0 olarak ayarlanmalıdır.
  • 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 TapasModel'in yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Tapas modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, google/tapas-base-finetuned-sqa 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.

Örnek:

>>> from transformers import TapasModel, TapasConfig

>>> # Initializing a default (SQA) Tapas configuration
>>> configuration = TapasConfig()
>>> # Initializing a model from the configuration
>>> model = TapasModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config

TapasTokenizer

sınıf transformers.TapasTokenizer

< >

( vocab_filedo_lower_case = Truedo_basic_tokenize = Truenever_split = Noneunk_token = '[UNK]'sep_token = '[SEP]'pad_token = '[PAD]'cls_token = '[CLS]'mask_token = '[MASK]'empty_token = '[EMPTY]'tokenize_chinese_chars = Truestrip_accents = Nonecell_trim_length: int = -1max_column_id: int | None = Nonemax_row_id: int | None = Nonestrip_column_names: bool = Falseupdate_answer_coordinates: bool = Falsemin_question_length = Nonemax_question_length = Nonemodel_max_length: int = 512additional_special_tokens: list[str] | None = Noneclean_up_tokenization_spaces = True**kwargs )

Parametreler

  • vocab_file (str) — Sözlüğü içeren dosya.
  • do_lower_case (bool, isteğe bağlı, varsayılan True) — Tokenize sırasında girdinin küçük harfe dönüştürülüp dönüştürülmemesi.
  • do_basic_tokenize (bool, isteğe bağlı, varsayılan True) — WordPiece'ten önce temel tokenizasyonun yapılıp yapılmayacağı.
  • never_split (Iterable, isteğe bağlı) — Tokenizasyon sırasında asla bölünmeyecek tokenların koleksiyonu. Yalnızca do_basic_tokenize=True olduğunda etkilidir.
  • 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.
  • sep_token (str, isteğe bağlı, varsayılan "[SEP]") — Ayracı belirten token; 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 token'larla oluşturulan bir dizinin son token'ı olarak da kullanılı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.
  • cls_token (str, isteğe bağlı, varsayılan "[CLS]") — Dizi sınıflandırması yapılırken (token başına sınıflandırma yerine tüm dizinin sınıflandırılması) kullanılan sınıflandırıcı tokenıdır. Özel tokenlarla oluşturulduğunda dizinin ilk tokenıdır.
  • mask_token (str, isteğe bağlı, varsayılan "[MASK]") — Değerleri maskelemek için kullanılan jeton. Bu, modelin maskeli dil modelleme ile eğitildiğinde kullanılan jetondur. Modelin tahmin etmeye çalışacağı jeton budur.
  • empty_token (str, isteğe bağlı, varsayılan "[EMPTY]") — Tabloda boş hücre değerleri için kullanılan jeton. Boş hücre değerleri "", "n/a", "nan" ve "?" değerlerini içerir.
  • tokenize_chinese_chars (bool, opsiyonel, varsayılan True) — Çin karakterlerinin tokenize edilip edilmeyeceğini belirtir. Japonca için bu ayarın devre dışı bırakılması gerekir (bkz. bu issue).
  • strip_accents (bool, isteğe bağlı) — Tüm aksanların kaldırılıp kaldırılmayacağı. Bu seçenek belirtilmezse, lowercase değeri tarafından belirlenir (orijinal BERT'te olduğu gibi).
  • cell_trim_length (int, isteğe bağlı, varsayılan -1) — > 0 ise: Hücreleri uzunluk bu değere eşit veya daha küçük olacak şekilde kırpın. Ayrıca sonraki hücre kırpma işlemlerini devre dışı bırakır; bu nedenle truncation parametresinin True olarak ayarlanmasıyla kullanılmalıdır.
  • max_column_id (int, isteğe bağlı) — Çıkarılacak en büyük sütun kimliği.
  • max_row_id (int, isteğe bağlı) — Çıkarılacak en büyük satır kimliği.
  • strip_column_names (bool, isteğe bağlı, varsayılan False) — Sütun adları yerine boş dizgiler eklenip eklenmeyeceğini belirtir.
  • update_answer_coordinates (bool, isteğe bağlı, varsayılan False) — Cevap koordinatlarının cevap metninden yeniden hesaplanıp hesaplanmayacağı.
  • min_question_length (int, isteğe bağlı) — Her sorunun token cinsinden minimum uzunluğu (aksi halde atlanır).
  • max_question_length (int, isteğe bağlı) — Her sorunun token cinsinden maksimum uzunluğu (aksi halde atlanır).
  • clean_up_tokenization_spaces (bool, isteğe bağlı, varsayılan True) — Çözümleme sonrası boşlukları temizleyip temizlemeyeceğini belirtir. Temizleme işlemi, ek boşluklar gibi olası artefaktları kaldırmayı içerir.

Bir TAPAS tokenizer'ı oluşturur. WordPiece tabanlıdır. TAPAS modelleri tarafından kullanılacak şekilde bir tabloyu ve bir veya daha fazla ilgili cümleyi düzleştirir.

Bu tokenizer, ana yöntemlerin çoğunu içeren PreTrainedTokenizer sınıfından devralır. Kullanıcıların bu yöntemler hakkında daha fazla bilgi için bu üst sınıfa başvurması gerekir. TapasTokenizer, tablo yapısını kodlamak için birkaç token türü kimliği oluşturur. Daha da spesifik olmak gerekirse, aşağıdaki sırayla 7 token türü kimliği ekler: segment_ids, column_ids, row_ids, prev_labels, column_ranks, inv_column_ranks ve numeric_relations:

  • segment_ids: bir token'ın soruya (0) mı yoksa tabloya (1) mı ait olduğunu belirtir. Özel token'lar ve dolgu için 0.
  • column_ids: bir token'ın tablonun hangi sütununa ait olduğunu belirtir (1'den başlar). Tüm soru token'ları, özel token'lar ve dolgu için 0'dır.
  • row_ids: bir token'ın tablonun hangi satırına ait olduğunu belirtir (1'den başlar). Tüm soru token'ları, özel token'lar ve dolgu için 0'dır. Sütun başlıklarının token'ları da 0'dır.
  • prev_labels: bir token'ın önceki sorunun cevabının (bir parçası) olup olmadığını (1) veya olmadığını (0) belirtir. Konuşma tabanlı bir yapıda (örneğin SQA) faydalıdır.
  • column_ranks: uygunsa, bir tablo jetonunun bir sütuna göre sırasını belirtir. Örneğin, 87, 53 ve 69 değerlerine sahip bir “number of movies” sütununuz varsa, bu jetonların sütun sıraları sırasıyla 3, 1 ve 2'dir. Tüm soru jetonları, özel jetonlar ve dolgu için 0.
  • inv_column_ranks: uygunsa, bir tablo jetonunun bir sütuna göre ters sırasını belirtir. Örneğin, 87, 53 ve 69 değerlerine sahip bir “number of movies” sütununuz varsa, bu jetonların ters sütun sıraları sırasıyla 1, 3 ve 2'dir. Tüm soru jetonları, özel jetonlar ve dolgu için 0.
  • numeric_relations: soru ile tablo belirteçleri arasındaki sayısal ilişkileri belirtir. Tüm soru belirteçleri, özel belirteçler ve dolgu için 0.

TapasTokenizer, bir tablo ve ilişkili cümleler üzerinde uçtan uca tokenizasyon çalıştırır: noktalama işareti bölme ve wordpiece.

__call__

< >

( table: typing.Union[ForwardRef('pd.DataFrame'), str, list[str], NoneType]queries: str | list[str] | list[int] | list[list[str]] | list[list[int]] | None = Noneanswer_coordinates: list[tuple] | list[list[tuple]] | None = Noneanswer_text: list[str] | list[list[str]] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.models.tapas.tokenization_tapas.TapasTruncationStrategy = Falsemax_length: int | None = Nonepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = True**kwargs )

Parametreler

  • table (pd.DataFrame veya str veya list[str]) — Tabular veri içeren tablo. Not: Tüm hücre değerleri metin olmalıdır. Bir Pandas dataframe'i string'e dönüştürmek için .astype(str) kullanın. Bir string veya string listesi geçirildiğinde, bunlar boş bir tablo ile sorgular olarak yorumlanır (genel tokenizer testlerini desteklemek için).
  • queries (str veya list[str]) — Kodlanacak bir tabloyla ilgili soru veya soru grubu. Bir grup söz konusuysa, tüm soruların aynı tabloya atıfta bulunması gerekir.
  • answer_coordinates (list[Tuple] veya list[list[Tuple]], isteğe bağlı) — Toplumdaki her tablo-soru çiftinin cevap koordinatları. Yalnızca tek bir tablo-soru çifti sağlanıyorsa, answer_coordinates tek bir liste olmalı ve bu liste bir veya daha fazla tuple içermelidir. Her tuple bir (row_index, column_index) çifti olmalıdır. İlk veri satırının (sütun başlık satırı değil) indeksi 0'dır. İlk sütunun indeksi 0'dır. Bir tablo-soru çiftleri toplumu sağlanıyorsa, answer_coordinates tuple listelerinin bir listesi olmalıdır (her liste tek bir tablo-soru çiftine karşılık gelir).
  • answer_text (list[str] veya list[list[str]], isteğe bağlı) — Toplumdaki her tablo-soru çiftinin cevap metni. Yalnızca tek bir tablo-soru çifti sağlanıyorsa, answer_text tek bir liste olmalı ve bu listede bir veya daha fazla string bulunmalıdır. Her string, ilgili bir cevap koordinatının cevap metni olmalıdır. Bir tablo-soru çiftleri toplumu sağlanıyorsa, answer_coordinates stringlerden oluşan bir listeler listesi olmalıdır (her liste tek bir tablo-soru çiftine karşılık gelir).
  • add_special_tokens (bool, isteğe bağlı, varsayılan True) — Dizilerin, modele özel özel jetonlarla kodlanıp kodlanmayacağı.
  • padding (bool, str veya PaddingStrategy, isteğe bağlı, varsayılan olarak False) — Dolgu işlemini etkinleştirir ve kontrol eder. Aşağıdaki değerleri kabul eder:
    • True veya 'longest': Toplu işlemdeki en uzun dizinin uzunluğuna kadar dolgu yapılır (yalnızca tek bir dizi sağlandıysa dolgu yapılmaz).
    • 'max_length': max_length argümanı ile belirtilen maksimum uzunluğa veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum giriş uzunluğuna kadar doldurur.
    • False veya 'do_not_pad' (varsayılan): Dolgu yok (yani, farklı uzunluklarda diziler içeren bir parti çıktı olarak üretilebilir).
  • truncation (bool, str veya TapasTruncationStrategy, isteğe bağlı, varsayılan olarak False) — Kesmeyi (truncation) etkinleştirir ve kontrol eder. Aşağıdaki değerleri kabul eder:
    • True veya 'drop_rows_to_fit': Satırları, max_length argümanı ile belirtilen maksimum uzunluğa veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum giriş uzunluğuna kısaltır. Bu işlem satır satır gerçekleştirilir ve tablodan satırlar kaldırılır.
    • False veya 'do_not_truncate' (varsayılan): Kesme yapılmaz (yani, modelin kabul edebileceği maksimum giriş boyutundan daha uzun dizi uzunluklarına sahip bir çıktı partisi üretilebilir).
  • max_length (int, isteğe bağlı) — Bir kesme/doldurma parametresi tarafından kullanılacak maksimum uzunluğu kontrol eder.

    Eğer ayarlanmazsa veya None olarak ayarlanırsa, kırpma/dolgu parametrelerinden biri tarafından bir maksimum uzunluk gerekiyorsa, bu, önceden tanımlanmış modelin maksimum uzunluğunu kullanır. Modelin belirli bir maksimum giriş uzunluğu yoksa (XLNet gibi), maksimum uzunluğa kırpma/dolgu devre dışı bırakılır.

  • is_split_into_words (bool, isteğe bağlı, varsayılan False) — Girdinin zaten önceden tokenize edilip edilmediğini (örneğin, kelimelere ayrılmış olup olmadığını) belirtir. True olarak ayarlanırsa, tokenizer, girdinin zaten kelimelere ayrılmış olduğunu (örneğin, boşluklara göre bölünerek) ve bunları tokenize edeceğini varsayar. Bu, NER veya token sınıflandırma için faydalıdır.
  • pad_to_multiple_of (int, isteğe bağlı) — Belirlenirse, diziyi verilen değerin katına kadar doldurur. Bu, hesaplama yeteneği >= 7.5 (Volta) olan NVIDIA donanımlarında Tensor Cores kullanımını etkinleştirmek için özellikle faydalıdır.
  • return_tensors (str veya TensorType, isteğe bağlı) — Belirlenirse, Python tamsayı listesi yerine 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.

Bir tabloyla ilgili bir veya birden fazla diziyi belirteçlere ayırmak ve modele hazırlamak için kullanılan ana yöntem.

convert_logits_to_predictions

< >

( datalogitslogits_agg = Nonecell_classification_threshold = 0.5 ) → tuple comprising various elements depending on the inputs

Parametreler

  • data (dict) — Özellikleri gerçek değerlere eşleyen sözlük. TapasTokenizer kullanılarak oluşturulmalıdır.
  • logits (torch.Tensor, şekli (batch_size, sequence_length)) — Token düzeyindeki logitleri içeren tensör.
  • logits_agg (torch.Tensor, şekli (batch_size, num_aggregation_labels), isteğe bağlı) — Toplama (aggregation) logitlerini içeren tensör.
  • cell_classification_threshold (float, isteğe bağlı, varsayılan 0.5) — Hücre seçimi için kullanılacak eşik. Olasılığı bu eşiğin üzerinde olan tüm tablo hücreleri seçilir.

Dönüş değeri

Girişlere bağlı olarak çeşitli öğelerden oluşan tuple

  • predicted_answer_coordinates (list[list[[tuple]], uzunluğu batch_size): Listeler listesi olarak tahmin edilen cevap koordinatları. Listenin her öğesi, batch içindeki tek bir örneğin tahmin edilen cevap koordinatlarını, tuple listesi olarak içerir. Her tuple bir hücredir, yani (satır indeksi, sütun indeksi).
  • predicted_aggregation_indices (list[int]uzunluğu batch_size, isteğe bağlı, logits_aggregation sağlandığında döndürülür): Aggregation head'in tahmini aggregation operatörü indeksleri.

TapasForQuestionAnswering logits'ini gerçek tahmin edilen cevap koordinatlarına ve isteğe bağlı toplama indekslerine dönüştürür.

Bu fonksiyonun dayandığı orijinal uygulama burada bulunabilir.

save_vocabulary

< >

( save_directory: strfilename_prefix: str | None = None )

TapasModel

sınıf transformers.TapasModel

< >

( config: TapasConfigadd_pooling_layer = True )

Parametreler

  • config (TapasConfig) — 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 Tapas 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.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutputWithPooling or tuple(torch.Tensor)

Parametreler

  • input_ids (torch.LongTensor ş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?

  • token_type_ids (torch.LongTensor şeklinde (batch_size, sequence_length, 7), isteğe bağlı) — Tablo yapısını kodlayan token dizinleri. Dizinler AutoTokenizer. kullanılarak elde edilebilir. Daha fazla bilgi için bu sınıfa bakın.

    Token type ID'leri nelerdir?

  • position_ids (torch.LongTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Girdi dizisindeki her token'ın konum gömme (position embeddings) içindeki konum indeksleri. reset_position_index_per_cell parametresi için olarak ayarlanırsa True, göreli konum gömme (relative position embeddings) kullanılacaktır. Seçilen aralık: [0, config.max_position_embeddings - 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.
  • output_attentions (bool, isteğe bağlı) — Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki attentions bölümüne bakın.
  • output_hidden_states (bool, isteğe bağlı) — Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki hidden_states bölümüne bakın.
  • return_dict (bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi?

Dönüş değeri

BaseModelOutputWithPooling veya tuple(torch.Tensor)

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

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

Örnekler:

>>> from transformers import AutoTokenizer, TapasModel
>>> import pandas as pd

>>> tokenizer = AutoTokenizer.from_pretrained("google/tapas-base")
>>> model = TapasModel.from_pretrained("google/tapas-base")

>>> data = {
...     "Actors": ["Brad Pitt", "Leonardo Di Caprio", "George Clooney"],
...     "Age": ["56", "45", "59"],
...     "Number of movies": ["87", "53", "69"],
... }
>>> table = pd.DataFrame.from_dict(data)
>>> queries = ["How many movies has George Clooney played in?", "How old is Brad Pitt?"]

>>> inputs = tokenizer(table=table, queries=queries, padding="max_length", return_tensors="pt")
>>> outputs = model(**inputs)

>>> last_hidden_states = outputs.last_hidden_state

TapasForMaskedLM

sınıf transformers.TapasForMaskedLM

< >

( config: TapasConfig )

Parametreler

  • config (TapasConfig) — 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 language modeling başlığı bulunan Tapas Modeli.”

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.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → MaskedLMOutput or tuple(torch.Tensor)

Parametreler

  • input_ids (torch.LongTensor ş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?

  • token_type_ids (torch.LongTensor şeklinde (batch_size, sequence_length, 7), isteğe bağlı) — Tablo yapısını kodlayan token dizinleri. Dizinler AutoTokenizer. kullanılarak elde edilebilir. Daha fazla bilgi için bu sınıfa bakın.

    Token type ID'leri nelerdir?

  • position_ids (torch.LongTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Girdi dizisindeki her token'ın konum gömme (position embeddings) içindeki konum indeksleri. reset_position_index_per_cell parametresi için olarak ayarlanırsa True, göreli konum gömme (relative position embeddings) kullanılacaktır. Seçilen aralık: [0, config.max_position_embeddings - 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.
  • labels (torch.LongTensor, şekli (batch_size, sequence_length), isteğe bağlı) — Maskeli dil modelleme kaybını hesaplamak için etiketler. Endeksler [-100, 0, ..., config.vocab_size] aralığında olmalıdır (bkz. input_ids docstring). Endeksleri -100 olarak ayarlanan jetonlar yok sayılır (maskelenir), kayıp yalnızca etiketleri [0, ..., config.vocab_size] aralığında olan jetonlar için hesaplanır.
  • output_attentions (bool, isteğe bağlı) — Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki attentions bölümüne bakın.
  • output_hidden_states (bool, isteğe bağlı) — Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki hidden_states bölümüne bakın.
  • return_dict (bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi?

Dönüş değeri

MaskedLMOutput veya tuple(torch.Tensor)

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

TapasForMaskedLM 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) — Maskeli dil modelleme (MLM) kaybı.

  • logits (torch.Tensor, şekli (batch_size, sequence_length, config.vocab_size)) — Dil modelleme başlığının tahmin puanları (SoftMax öncesi her sözlük jetonu için puanlar).

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

>>> from transformers import AutoTokenizer, TapasForMaskedLM
>>> import pandas as pd

>>> tokenizer = AutoTokenizer.from_pretrained("google/tapas-base")
>>> model = TapasForMaskedLM.from_pretrained("google/tapas-base")

>>> data = {
...     "Actors": ["Brad Pitt", "Leonardo Di Caprio", "George Clooney"],
...     "Age": ["56", "45", "59"],
...     "Number of movies": ["87", "53", "69"],
... }
>>> table = pd.DataFrame.from_dict(data)

>>> inputs = tokenizer(
...     table=table, queries="How many [MASK] has George [MASK] played in?", return_tensors="pt"
... )
>>> labels = tokenizer(
...     table=table, queries="How many movies has George Clooney played in?", return_tensors="pt"
... )["input_ids"]

>>> outputs = model(**inputs, labels=labels)
>>> logits = outputs.logits

TapasForSequenceClassification

sınıf transformers.TapasForSequenceClassification

< >

( config: TapasConfig )

Parametreler

  • config (TapasConfig) — 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 dizi sınıflandırma başlığı (toplanmış çıktının üzerinde doğrusal bir katman) bulunan Tapas Modeli, örneğin TabFact (Chen et al., 2020) gibi tablo çıkarım 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.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → SequenceClassifierOutput or tuple(torch.Tensor)

Parametreler

  • input_ids (torch.LongTensor ş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?

  • token_type_ids (torch.LongTensor şeklinde (batch_size, sequence_length, 7), isteğe bağlı) — Tablo yapısını kodlayan token dizinleri. Dizinler AutoTokenizer. kullanılarak elde edilebilir. Daha fazla bilgi için bu sınıfa bakın.

    Token type ID'leri nelerdir?

  • position_ids (torch.LongTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Girdi dizisindeki her token'ın konum gömme (position embeddings) içindeki konum indeksleri. reset_position_index_per_cell parametresi için olarak ayarlanırsa True, göreli konum gömme (relative position embeddings) kullanılacaktır. Seçilen aralık: [0, config.max_position_embeddings - 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,), isteğe bağlı) — Sınıflandırma/geri dönüş kaybını hesaplamak için etiketler. Endeksler [0, ..., config.num_labels - 1] aralığında olmalıdır. config.num_labels == 1 ise bir geri dönüş kaybı (Ortalama Kare kaybı) hesaplanır; config.num_labels > 1 ise bir sınıflandırma kaybı (Çapraz Entropi) hesaplanır. Not: bu, orijinal uygulamada “classification_class_index” olarak adlandırılır.
  • output_attentions (bool, isteğe bağlı) — Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki attentions bölümüne bakın.
  • output_hidden_states (bool, isteğe bağlı) — Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki hidden_states bölümüne bakın.
  • return_dict (bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi?

Dönüş değeri

SequenceClassifierOutput veya tuple(torch.Tensor)

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

TapasForSequenceClassification 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 (config.num_labels==1 ise regresyon) kaybı.

  • logits (torch.Tensor, şekli (batch_size, config.num_labels)) — Sınıflandırma (veya config.num_labels==1 ise regresyon) 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:

>>> from transformers import AutoTokenizer, TapasForSequenceClassification
>>> import torch
>>> import pandas as pd

>>> tokenizer = AutoTokenizer.from_pretrained("google/tapas-base-finetuned-tabfact")
>>> model = TapasForSequenceClassification.from_pretrained("google/tapas-base-finetuned-tabfact")

>>> data = {
...     "Actors": ["Brad Pitt", "Leonardo Di Caprio", "George Clooney"],
...     "Age": ["56", "45", "59"],
...     "Number of movies": ["87", "53", "69"],
... }
>>> table = pd.DataFrame.from_dict(data)
>>> queries = [
...     "There is only one actor who is 45 years old",
...     "There are 3 actors which played in more than 60 movies",
... ]

>>> inputs = tokenizer(table=table, queries=queries, padding="max_length", return_tensors="pt")
>>> labels = torch.tensor([1, 0])  # 1 means entailed, 0 means refuted

>>> outputs = model(**inputs, labels=labels)
>>> loss = outputs.loss
>>> logits = outputs.logits

TapasForQuestionAnswering

sınıf transformers.TapasForQuestionAnswering

< >

( config: TapasConfig )

Parametreler

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

Tablolar üzerinde soru-cevap görevleri için bir hücre seçimi başlığı ve isteğe bağlı bir birleştirme başlığına sahip Tapas Modeli (gizli durum çıktısının üzerine, logits ve isteğe bağlı logits_aggregation hesaplamak için doğrusal katmanlar), örneğin SQA, WTQ veya WikiSQL ile denetimli görevler 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.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonetable_mask: typing.Optional[torch.LongTensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneaggregation_labels: typing.Optional[torch.LongTensor] = Nonefloat_answer: typing.Optional[torch.Tensor] = Nonenumeric_values: typing.Optional[torch.Tensor] = Nonenumeric_values_scale: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → TableQuestionAnsweringOutput or tuple(torch.Tensor)

Parametreler

  • input_ids (torch.LongTensor ş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?

  • token_type_ids (torch.LongTensor şeklinde (batch_size, sequence_length, 7), isteğe bağlı) — Tablo yapısını kodlayan token dizinleri. Dizinler AutoTokenizer. kullanılarak elde edilebilir. Daha fazla bilgi için bu sınıfa bakın.

    Token type ID'leri nelerdir?

  • position_ids (torch.LongTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Girdi dizisindeki her token'ın konum gömme (position embeddings) içindeki konum indeksleri. reset_position_index_per_cell parametresi için olarak ayarlanırsa True, göreli konum gömme (relative position embeddings) kullanılacaktır. Seçilen aralık: [0, config.max_position_embeddings - 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.
  • table_mask (torch.LongTensor, şekli (batch_size, seq_length), isteğe bağlı) — Tablo için maske. Hangi token'ların tabloya ait olduğunu (1) belirtir. Soru token'ları, tablo başlıkları ve doldurma (padding) 0'dır.
  • labels (torch.LongTensor şeklinde (batch_size, seq_length), isteğe bağlı) — Hiyerarşik hücre seçimi kaybını hesaplamak için token başına etiketler. Bu, tablodaki cevabın konumlarını kodlar. Şu şekilde elde edilebilir: AutoTokenizer.
    • cevabın parçası olan jetonlar için 1,
    • Cevabın parçası olmayan jetonlar için 0.
  • aggregation_labels (torch.LongTensor, şekli (batch_size, ), isteğe bağlı) — Toplama kaybını hesaplamak için batch'teki her örnek için toplama fonksiyonu indeksi. İndisler [0, ..., config.num_aggregation_labels - 1] aralığında olmalıdır. Yalnızca toplama için güçlü denetim (WikiSQL-supervised) durumunda gereklidir.
  • float_answer (torch.Tensor, şekli (batch_size, ), isteğe bağlı) — Batch'teki her örnek için float cevabı. Hücre seçimi soruları için float(‘nan’) olarak ayarlayın. Yalnızca zayıf denetim (WTQ) durumunda, toplam maskenin ve regresyon kaybının hesaplanması için gereklidir.
  • numeric_values (torch.Tensor, şekli (batch_size, seq_length), isteğe bağlı) — Her token'ın sayısal değeri; sayısal olmayan token'lar için NaN. AutoTokenizer kullanılarak elde edilebilir. Yalnızca, regresyon kaybını hesaplamak için agregasyonda zayıf denetim (WTQ) durumunda gereklidir.
  • numeric_values_scale (torch.Tensor, şekli (batch_size, seq_length), isteğe bağlı) — Her token'ın sayısal değerlerinin ölçeği. AutoTokenizer kullanılarak elde edilebilir. Yalnızca, regresyon kaybını hesaplamak için agregasyonda zayıf denetim (WTQ) durumunda gereklidir.
  • output_attentions (bool, isteğe bağlı) — Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki attentions bölümüne bakın.
  • output_hidden_states (bool, isteğe bağlı) — Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki hidden_states bölümüne bakın.
  • return_dict (bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi?

Dönüş değeri

TableQuestionAnsweringOutput veya tuple(torch.Tensor)

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

TapasForQuestionAnswering 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 (ve olası olarak answer, aggregation_labels, numeric_values ve numeric_values_scale sağlandığında) döndürülür) — Hiyerarşik hücre seçimi log-olabilirlik kaybının ve (isteğe bağlı olarak) yarı denetimli regresyon kaybının ve (isteğe bağlı olarak) agregasyonlar için denetimli kaybın toplamı olarak toplam kayıp.

  • logits (torch.Tensor, şekli (batch_size, sequence_length)) — Her token için hücre seçimi başlığının tahmin puanları.

  • logits_aggregation (torch.Tensor, isteğe bağlı, şekli (batch_size, num_aggregation_labels)) — Her birleştirme operatörü için birleştirme başlığının tahmin puanları.

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

>>> from transformers import AutoTokenizer, TapasForQuestionAnswering
>>> import pandas as pd

>>> tokenizer = AutoTokenizer.from_pretrained("google/tapas-base-finetuned-wtq")
>>> model = TapasForQuestionAnswering.from_pretrained("google/tapas-base-finetuned-wtq")

>>> data = {
...     "Actors": ["Brad Pitt", "Leonardo Di Caprio", "George Clooney"],
...     "Age": ["56", "45", "59"],
...     "Number of movies": ["87", "53", "69"],
... }
>>> table = pd.DataFrame.from_dict(data)
>>> queries = ["How many movies has George Clooney played in?", "How old is Brad Pitt?"]

>>> inputs = tokenizer(table=table, queries=queries, padding="max_length", return_tensors="pt")
>>> outputs = model(**inputs)

>>> logits = outputs.logits
>>> logits_aggregation = outputs.logits_aggregation
Update on GitHub