Transformers documentation
LayoutLMV2
Model ini dipublikasikan di HF papers pada 2020-12-29 dan disumbangkan ke Hugging Face Transformers pada 2021-08-30.
LayoutLMV2
Ikhtisar
Model LayoutLMV2 diusulkan dalam LayoutLMv2: Multi-modal Pre-training for Visually-Rich Document Understanding oleh Yang Xu, Yiheng Xu, Tengchao Lv, Lei Cui, Furu Wei, Guoxin Wang, Yijuan Lu, Dinei Florencio, Cha Zhang, Wanxiang Che, Min Zhang, Lidong Zhou. LayoutLMV2 meningkatkan LayoutLM untuk memperoleh hasil state-of-the-art di berbagai benchmark pemahaman gambar dokumen:
- ekstraksi informasi dari dokumen hasil pindaian: dataset FUNSD (kumpulan 199 formulir anotasi yang berisi lebih dari 30.000 kata), dataset CORD (kumpulan 800 struk untuk pelatihan, 100 untuk validasi, dan 100 untuk pengujian), dataset SROIE (kumpulan 626 struk untuk pelatihan dan 347 struk untuk pengujian) dan dataset Kleister-NDA (kumpulan perjanjian kerahasiaan dari basis data EDGAR, termasuk 254 dokumen untuk pelatihan, 83 dokumen untuk validasi, dan 203 dokumen untuk pengujian).
- klasifikasi dokumen: dataset RVL-CDIP (kumpulan 400.000 gambar yang termasuk ke dalam salah satu dari 16 kelas).
- visual question answering dokumen: dataset DocVQA (kumpulan 50.000 pertanyaan yang didefinisikan pada 12.000+ gambar dokumen).
Abstrak dari makalah tersebut adalah sebagai berikut:
Pre-training teks dan tata letak telah terbukti efektif dalam berbagai tugas pemahaman dokumen yang kaya secara visual berkat arsitektur modelnya yang efektif serta keunggulan dari dokumen pindai/digital berskala besar tanpa label. Dalam makalah ini, kami memperkenalkan LayoutLMv2 dengan melakukan pre-training teks, tata letak, dan gambar dalam kerangka kerja multi-modal, di mana arsitektur model dan tugas pre-training baru dimanfaatkan. Secara spesifik, LayoutLMv2 tidak hanya menggunakan tugas pemodelan visual-bahasa yang ter-masker yang sudah ada, tetapi juga tugas penyelarasan teks-gambar dan pencocokan teks-gambar yang baru pada tahap pre-training, di mana interaksi lintas-modalitas dipelajari dengan lebih baik. Sementara itu, model ini juga mengintegrasikan mekanisme self-attention yang sadar spasial ke dalam arsitektur Transformer, sehingga model dapat sepenuhnya memahami hubungan posisi relatif di antara blok teks yang berbeda. Hasil eksperimen menunjukkan bahwa LayoutLMv2 melampaui baseline yang kuat dan mencapai hasil state-of-the-art baru pada berbagai tugas pemahaman dokumen yang kaya secara visual, termasuk FUNSD (0.7895 -> 0.8420), CORD (0.9493 -> 0.9601), SROIE (0.9524 -> 0.9781), Kleister-NDA (0.834 -> 0.852), RVL-CDIP (0.9443 -> 0.9564), dan DocVQA (0.7295 -> 0.8672). Model LayoutLMv2 yang telah di-pre-train tersedia secara publik di this https URL.
LayoutLMv2 bergantung pada detectron2, torchvision dan tesseract. Jalankan
berikut untuk menginstalnya:
python -m pip install 'git+https://github.com/facebookresearch/detectron2.git'
python -m pip install torchvision tesseract(Jika Anda mengembangkan untuk LayoutLMv2, perhatikan bahwa menjalankan doctests juga memerlukan instalasi paket-paket ini.)
Tips penggunaan
- Perbedaan utama antara LayoutLMv1 dan LayoutLMv2 adalah bahwa yang terakhir mengintegrasikan visual embeddings selama pre-training (sedangkan LayoutLMv1 hanya menambahkan visual embeddings selama fine-tuning).
- LayoutLMv2 menambahkan bias perhatian relatif 1D serta bias perhatian spasial 2D ke skor perhatian pada lapisan self-attention. Detailnya dapat ditemukan di halaman 5 makalah.
- Notebook demo tentang cara menggunakan model LayoutLMv2 pada RVL-CDIP, FUNSD, DocVQA, dan CORD dapat ditemukan di sini.
- LayoutLMv2 menggunakan paket Detectron2 dari Facebook AI untuk tulang punggung visualnya. Lihat tautan ini untuk instruksi instalasi.
- Selain
input_ids, forward() mengharapkan 2 input tambahan, yaituimagedanbbox. Inputimagesesuai dengan gambar dokumen asli tempat token teks tersebut muncul. Model mengharapkan setiap gambar dokumen berukuran 224x224. Ini berarti jika Anda memiliki batch gambar dokumen,imageharus berupa tensor dengan bentuk (batch_size, 3, 224, 224). Ini bisa berupatorch.TensoratauDetectron2.structures.ImageList. Anda tidak perlu menormalisasi channel, karena hal ini dilakukan oleh model. Penting untuk dicatat bahwa visual backbone mengharapkan channel BGR alih-alih RGB, karena semua model di Detectron2 dilatih sebelumnya menggunakan format BGR. Inputbboxadalah kotak pembatas (yaitu posisi 2D) dari token teks input. Ini identik dengan LayoutLMModel. Kotak pembatas ini dapat diperoleh menggunakan mesin OCR eksternal seperti Tesseract dari Google (ada wrapper Python yang tersedia). Setiap kotak pembatas harus dalam format (x0, y0, x1, y1), di mana (x0, y0) sesuai dengan posisi sudut kiri atas pada kotak pembatas, dan (x1, y1) merepresentasikan posisi sudut kanan bawah. Perhatikan bahwa kotak pembatas terlebih dahulu perlu dinormalisasi ke skala 0-1000. Untuk menormalisasi, Anda dapat menggunakan fungsi berikut:
def normalize_bbox(bbox, width, height):
return [
int(1000 * (bbox[0] / width)),
int(1000 * (bbox[1] / height)),
int(1000 * (bbox[2] / width)),
int(1000 * (bbox[3] / height)),
]Di sini, width dan height sesuai dengan lebar dan tinggi dokumen asli tempat token tersebut muncul (sebelum gambar di-resize). Nilai-nilai tersebut dapat diperoleh, misalnya, menggunakan pustaka Python Image Library (PIL) sebagai berikut:
from PIL import Image
image = Image.open(
"name_of_your_document - can be a png, jpg, etc. of your documents (PDFs must be converted to images)."
)
width, height = image.sizeNamun, model ini menyertakan LayoutLMv2Processor yang benar-benar baru, yang dapat digunakan untuk langsung menyiapkan data untuk model (termasuk penerapan OCR di baliknya). Informasi lebih lanjut dapat ditemukan di bagian “Penggunaan” di bawah.
- Secara internal, LayoutLMv2Model akan mengirimkan input
imagemelalui visual backbone-nya untuk mendapatkan peta fitur dengan resolusi lebih rendah, yang bentuknya sama dengan atributimage_feature_pool_shapedari LayoutLMv2Config. Peta fitur ini kemudian diratakan (flattened) untuk mendapatkan urutan token gambar. Karena ukuran peta fitur secara default adalah 7x7, maka diperoleh 49 token gambar. Token-token ini kemudian digabungkan (concatenated) dengan token teks, dan dikirimkan melalui encoder Transformer. Artinya, last hidden states dari model akan memiliki panjang 512 + 49 = 561, jika Anda melakukan padding pada token teks hingga panjang maksimum. Secara lebih umum, last hidden states akan memiliki bentukseq_length+image_feature_pool_shape[0]*config.image_feature_pool_shape[1]. - Saat memanggil from_pretrained(), peringatan akan dicetak dengan daftar panjang nama parameter yang tidak diinisialisasi. Ini bukan masalah, karena parameter tersebut adalah statistik batch normalization, yang akan memiliki nilai saat fine-tuning pada dataset kustom.
- Jika Anda ingin melatih model dalam lingkungan terdistribusi, pastikan untuk memanggil
synchronize_batch_normpada model agar lapisan normalisasi batch dari tulang punggung visual tersinkronkan dengan benar.
Selain itu, ada LayoutXLM, yaitu versi multibahasa dari LayoutLMv2. Informasi lebih lanjut dapat ditemukan di halaman dokumentasi LayoutXLM.
Sumber daya
Daftar sumber resmi Hugging Face dan komunitas (ditandai dengan 🌎) untuk membantu Anda memulai dengan LayoutLMv2. Jika Anda tertarik untuk mengirimkan sumber agar disertakan di sini, silakan buka Pull Request dan kami akan meninjaunya! Sumber tersebut sebaiknya mendemonstrasikan sesuatu yang baru, bukan menduplikasi sumber yang sudah ada.
- Notebook tentang cara melakukan finetuning LayoutLMv2 untuk klasifikasi teks pada dataset RVL-CDIP.
- Lihat juga: Panduan tugas klasifikasi teks
- Notebook tentang cara melakukan finetuning LayoutLMv2 untuk question-answering pada dataset DocVQA.
- Lihat juga: Panduan tugas question answering
- Lihat juga: Panduan tugas menjawab pertanyaan dokumen
- Notebook tentang cara melakukan finetuning LayoutLMv2 untuk token-classification pada dataset CORD.
- Notebook tentang cara melakukan finetuning LayoutLMv2 untuk token-classification pada dataset FUNSD.
- Lihat juga: Panduan tugas klasifikasi token
Penggunaan: LayoutLMv2Processor
Cara termudah untuk menyiapkan data untuk model adalah dengan menggunakan LayoutLMv2Processor, yang secara internal menggabungkan image processor (LayoutLMv2ImageProcessor) dan tokenizer (LayoutLMv2Tokenizer atau LayoutLMv2TokenizerFast). Image processor menangani modalitas gambar, sedangkan tokenizer menangani modalitas teks. Processor menggabungkan keduanya, yang ideal untuk model multi-modal seperti LayoutLMv2. Perhatikan bahwa Anda masih dapat menggunakan keduanya secara terpisah, jika Anda hanya ingin menangani satu modalitas.
from transformers import LayoutLMv2ImageProcessor, LayoutLMv2Processor, LayoutLMv2TokenizerFast
image_processor = LayoutLMv2ImageProcessor() # apply_ocr is set to True by default
tokenizer = LayoutLMv2TokenizerFast.from_pretrained("microsoft/layoutlmv2-base-uncased")
processor = LayoutLMv2Processor(image_processor, tokenizer)Singkatnya, seseorang dapat memberikan gambar dokumen (dan mungkin data tambahan) ke LayoutLMv2Processor, dan ia akan membuat input yang diharapkan oleh model. Secara internal, prosesor pertama kali menggunakan LayoutLMv2ImageProcessor untuk menerapkan OCR pada gambar guna mendapatkan daftar kata dan kotak pembatas yang dinormalisasi, serta untuk mengubah ukuran gambar ke ukuran tertentu agar mendapatkan input image. Kata-kata dan kotak pembatas yang dinormalisasi tersebut kemudian diberikan ke LayoutLMv2Tokenizer atau LayoutLMv2TokenizerFast, yang mengubahnya menjadi input_ids, attention_mask, token_type_ids, bbox pada tingkat token. Secara opsional, seseorang dapat memberikan label kata ke prosesor, yang kemudian diubah menjadi labels pada tingkat token.
LayoutLMv2Processor menggunakan PyTesseract, sebuah wrapper Python untuk mesin OCR Tesseract dari Google, di baliknya. Perhatikan bahwa Anda tetap dapat menggunakan mesin OCR pilihan Anda sendiri, dan menyediakan kata-kata serta kotak ternormalisasi sendiri. Hal ini memerlukan inisialisasi LayoutLMv2ImageProcessor dengan apply_ocr diatur ke False.
Secara total, terdapat 5 kasus penggunaan yang didukung oleh prosesor. Di bawah ini, kami mencantumkan semuanya. Perhatikan bahwa masing-masing kasus penggunaan ini berfungsi untuk input berbatch maupun non-berbatch (kami mengilustrasikannya untuk input non-berbatch).
Kasus penggunaan 1: klasifikasi gambar dokumen (pelatihan, inferensi) + klasifikasi token (inferensi), apply_ocr = True
Ini adalah kasus paling sederhana, di mana prosesor (sebenarnya pemroses gambar) akan melakukan OCR pada gambar untuk mendapatkan kata-kata dan kotak pembatas yang dinormalisasi.
from PIL import Image
from transformers import LayoutLMv2Processor
processor = LayoutLMv2Processor.from_pretrained("microsoft/layoutlmv2-base-uncased")
image = Image.open(
"name_of_your_document - can be a png, jpg, etc. of your documents (PDFs must be converted to images)."
).convert("RGB")
encoding = processor(
image, return_tensors="pt"
) # you can also add all tokenizer parameters here such as padding, truncation
print(encoding.keys())
# dict_keys(['input_ids', 'token_type_ids', 'attention_mask', 'bbox', 'image'])Kasus penggunaan 2: klasifikasi gambar dokumen (pelatihan, inferensi) + klasifikasi token (inferensi), apply_ocr=False
Jika seseorang ingin melakukan OCR sendiri, mereka dapat menginisialisasi image processor dengan apply_ocr diatur ke False. Dalam hal itu, mereka harus menyediakan kata-kata dan bounding box (ternormalisasi) yang sesuai sendiri ke
processor.
from PIL import Image
from transformers import LayoutLMv2Processor
processor = LayoutLMv2Processor.from_pretrained("microsoft/layoutlmv2-base-uncased", revision="no_ocr")
image = Image.open(
"name_of_your_document - can be a png, jpg, etc. of your documents (PDFs must be converted to images)."
).convert("RGB")
words = ["hello", "world"]
boxes = [[1, 2, 3, 4], [5, 6, 7, 8]] # make sure to normalize your bounding boxes
encoding = processor(image, words, boxes=boxes, return_tensors="pt").to(model.device)
print(encoding.keys())
# dict_keys(['input_ids', 'token_type_ids', 'attention_mask', 'bbox', 'image'])Kasus penggunaan 3: klasifikasi token (pelatihan), apply_ocr=False
Untuk tugas klasifikasi token (seperti FUNSD, CORD, SROIE, Kleister-NDA), Anda juga dapat menyediakan label kata yang sesuai untuk melatih model. Prosesor kemudian akan mengonversi label ini menjadi labels pada tingkat token. Secara default, prosesornya hanya akan memberi label pada wordpiece pertama dari sebuah kata, dan memberi label -100 pada wordpiece sisanya, yang merupakan ignore_index dari CrossEntropyLoss PyTorch. Jika Anda ingin semua wordpiece dari sebuah kata diberi label, Anda dapat menginisialisasi tokenizer dengan only_label_first_subword yang diatur ke False.
from PIL import Image
from transformers import LayoutLMv2Processor
processor = LayoutLMv2Processor.from_pretrained("microsoft/layoutlmv2-base-uncased", revision="no_ocr")
image = Image.open(
"name_of_your_document - can be a png, jpg, etc. of your documents (PDFs must be converted to images)."
).convert("RGB")
words = ["hello", "world"]
boxes = [[1, 2, 3, 4], [5, 6, 7, 8]] # make sure to normalize your bounding boxes
word_labels = [1, 2]
encoding = processor(image, words, boxes=boxes, word_labels=word_labels, return_tensors="pt").to(model.device)
print(encoding.keys())
# dict_keys(['input_ids', 'token_type_ids', 'attention_mask', 'bbox', 'labels', 'image'])Kasus penggunaan 4: visual question answering (inferensi), apply_ocr=True
Untuk tugas visual question answering (seperti DocVQA), Anda dapat memberikan pertanyaan ke processor. Secara default, processor akan menerapkan OCR pada gambar, dan membuat [CLS] question tokens [SEP] word tokens [SEP].
from PIL import Image
from transformers import LayoutLMv2Processor
processor = LayoutLMv2Processor.from_pretrained("microsoft/layoutlmv2-base-uncased")
image = Image.open(
"name_of_your_document - can be a png, jpg, etc. of your documents (PDFs must be converted to images)."
).convert("RGB")
question = "What's his name?"
encoding = processor(image, question, return_tensors="pt").to(model.device)
print(encoding.keys())
# dict_keys(['input_ids', 'token_type_ids', 'attention_mask', 'bbox', 'image'])Kasus penggunaan 5: visual question answering (inferensi), apply_ocr=False
Untuk tugas visual question answering (seperti DocVQA), Anda dapat memberikan pertanyaan ke processor. Jika Anda ingin melakukan OCR sendiri, Anda dapat memberikan kata-kata dan bounding box (ternormalisasi) Anda sendiri ke processor.
from PIL import Image
from transformers import LayoutLMv2Processor
processor = LayoutLMv2Processor.from_pretrained("microsoft/layoutlmv2-base-uncased", revision="no_ocr")
image = Image.open(
"name_of_your_document - can be a png, jpg, etc. of your documents (PDFs must be converted to images)."
).convert("RGB")
question = "What's his name?"
words = ["hello", "world"]
boxes = [[1, 2, 3, 4], [5, 6, 7, 8]] # make sure to normalize your bounding boxes
encoding = processor(image, question, words, boxes=boxes, return_tensors="pt").to(model.device)
print(encoding.keys())
# dict_keys(['input_ids', 'token_type_ids', 'attention_mask', 'bbox', 'image'])LayoutLMv2Config
kelas transformers.LayoutLMv2Config
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 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 = 0max_2d_position_embeddings: int = 1024max_rel_pos: int = 128rel_pos_bins: int = 32fast_qkv: bool = Truemax_rel_2d_pos: int = 256rel_2d_pos_bins: int = 64convert_sync_batchnorm: bool = Trueimage_feature_pool_shape: list[int] | tuple[int, ...] = (7, 7, 256)coordinate_size: int = 128shape_size: int = 128has_relative_attention_bias: bool = Truehas_spatial_attention_bias: bool = Truehas_visual_segment_embedding: bool = Falsedetectron2_config_args: dict | None = None )
Parameter
- vocab_size (
int, opsional, default30522) — Ukuran kosakata model. Menentukan jumlah token berbeda yang dapat direpresentasikan olehinput_ids. - hidden_size (
int, opsional, default768) — Dimensi dari representasi tersembunyi. - num_hidden_layers (
int, opsional, default12) — Jumlah lapisan tersembunyi dalam decoder Transformer. - num_attention_heads (
int, opsional, default12) — Jumlah attention head untuk setiap lapisan attention di decoder Transformer. - intermediate_size (
int, opsional, default3072) — Dimensi representasi MLP. - hidden_act (
str, opsional, defaultnyagelu) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya,"gelu","relu","silu", dan sebagainya. - hidden_dropout_prob (
Union[float, int], opsional, default0.1) — Probabilitas dropout untuk semua lapisan fully connected di embeddings, encoder, dan pooler. - attention_probs_dropout_prob (
Union[float, int], opsional, default0.1) — Rasio dropout untuk probabilitas perhatian. - max_position_embeddings (
int, opsional, default512) — Panjang maksimum urutan yang mungkin digunakan dengan model ini. - type_vocab_size (
int, opsional, default2) — Ukuran kosakata daritoken_type_ids. - initializer_range (
float, opsional, defaultnya0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot. - layer_norm_eps (
float, opsional, defaultnya1e-12) — Epsilon yang digunakan oleh lapisan normalisasi lapisan. - pad_token_id (
int, opsional, default0) — ID token yang digunakan untuk padding dalam kosakata. - max_2d_position_embeddings (
int, opsional, default 1024) — Nilai maksimum yang mungkin digunakan oleh 2D position embedding. Biasanya, atur nilai ini menjadi sesuatu yang besar sebagai antisipasi (misalnya, 1024). - max_rel_pos (
int, opsional, default 128) — Jumlah maksimum posisi relatif yang digunakan dalam mekanisme self-attention. - rel_pos_bins (
int, opsional, default 32) — Jumlah bin posisi relatif yang akan digunakan dalam mekanisme self-attention. - fast_qkv (
bool, opsional, defaultTrue) — Apakah akan menggunakan satu matriks untuk queries, keys, dan values pada lapisan self-attention. - max_rel_2d_pos (
int, opsional, defaultnya 256) — Jumlah maksimum posisi relatif 2D dalam mekanisme self-attention. - rel_2d_pos_bins (
int, opsional, default 64) — Jumlah bin posisi relatif 2D dalam mekanisme self-attention. - convert_sync_batchnorm (
bool, opsional, defaultTrue) — Apakah akan mengkonversi lapisan batch normalization menjadi lapisan synchronized batch normalization. - image_feature_pool_shape (
list[int], opsional, defaultnya[7, 7, 256]) — Bentuk dari peta fitur yang telah di-rata-rata (average-pooled). - coordinate_size (
int, opsional, default 128) — Dimensi dari embedding koordinat. - shape_size (
int, opsional, default 128) — Dimensi dari embedding lebar dan tinggi. - has_relative_attention_bias (
bool, opsional, defaultTrue) — Apakah akan menggunakan relative attention bias dalam mekanisme self-attention. - has_spatial_attention_bias (
bool, opsional, defaultTrue) — Apakah akan menggunakan bias perhatian spasial dalam mekanisme self-attention. - has_visual_segment_embedding (
bool, opsional, defaultFalse) — Apakah akan menambahkan embedding segmen visual. - detectron2_config_args (
dict, opsional) — Kamus yang berisi argumen konfigurasi dari visual backbone Detectron2. Lihat file ini untuk detail mengenai nilai default.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari LayoutLMv2Model. Kelas ini digunakan untuk membuat instans model Layoutlmv2 berdasarkan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari microsoft/layoutlmv2-base-uncased
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
Contoh:
>>> from transformers import LayoutLMv2Config, LayoutLMv2Model
>>> # Initializing a LayoutLMv2 microsoft/layoutlmv2-base-uncased style configuration
>>> configuration = LayoutLMv2Config()
>>> # Initializing a model (with random weights) from the microsoft/layoutlmv2-base-uncased style configuration
>>> model = LayoutLMv2Model(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configLayoutLMv2ImageProcessor
kelas transformers.LayoutLMv2ImageProcessor
< source >( **kwargs: *<class 'transformers.models.layoutlmv2.image_processing_layoutlmv2.LayoutLMv2ImageProcessorKwargs'> )
Parameter
- do_convert_rgb (
bool, kwargs, opsional) — Apakah akan mengonversi gambar ke RGB. - do_resize (
bool, kwargs, opsional, defaultTrue) — Apakah akan mengubah ukuran gambar. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, defaultnya{'height' -- 224, 'width': 224}): Menggambarkan dimensi input maksimum untuk model. - default_to_square (
bool, kwargs, opsional, defaultnyaTrue) — Apakah akan menggunakan gambar persegi sebagai default saat melakukan resize, jika size berupa int. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Ukuran gambar keluaran setelah menerapkancenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, defaultnya2) — Filter resampling yang digunakan jika mengubah ukuran gambar. Ini bisa berupa salah satu enumPILImageResampling. Hanya berpengaruh jikado_resizediatur keTrue. - do_rescale (
bool, kwargs, opsional) — Apakah akan melakukan penskalaan ulang pada gambar. - rescale_factor (
float, kwargs, opsional, defaultNone) — Faktor rescale untuk menskalakan ulang gambar jikado_rescalediatur keTrue. - do_normalize (
bool, kwargs, opsional) — Apakah akan menormalisasi gambar. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, opsional) — Rata-rata gambar yang digunakan untuk normalisasi. Hanya berpengaruh jikado_normalizediatur keTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opsional) — Standar deviasi gambar yang digunakan untuk normalisasi. Hanya berpengaruh jikado_normalizediatur keTrue. - do_pad (
bool, kwargs, opsional) — Apakah akan melakukan padding pada gambar. Padding dilakukan ke ukuran terbesar dalam batch atau ke ukuran persegi tetap per gambar. Strategi padding yang tepat bergantung pada model. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Ukuran dalam{"height": int, "width" int}untuk melakukan padding pada gambar. Harus lebih besar dari ukuran gambar mana pun yang disediakan untuk pra-pemrosesan. Jikapad_sizetidak disediakan, gambar akan di-pad hingga tinggi dan lebar terbesar dalam batch. Diterapkan hanya ketikado_pad=True. - do_center_crop (
bool, kwargs, opsional) — Apakah akan melakukan center crop pada gambar. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opsional) — HanyaChannelDimension.FIRSTyang didukung. Ditambahkan untuk kompatibilitas dengan prosesor lambat. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opsional) — Format dimensi channel untuk gambar input. Jika tidak diset, format dimensi channel akan disimpulkan dari gambar input. Bisa berupa salah satu dari:"channels_first"atauChannelDimension.FIRST: gambar dalam format (num_channels, height, width)."channels_last"atauChannelDimension.LAST: gambar dalam format (height, width, num_channels)."none"atauChannelDimension.NONE: gambar dalam format (height, width).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — Perangkat untuk memproses video. Jika tidak disetel, perangkat akan disimpulkan dari video input. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Mengembalikan tensor bertumpuk jika diset ke'pt', selain itu mengembalikan daftar tensor. - disable_grouping (
bool, kwargs, opsional) — Apakah akan menonaktifkan pengelompokan gambar berdasarkan ukuran untuk memprosesnya secara individual dan bukan dalam batch. Jika None, akan diatur ke True jika gambar berada di CPU, dan False selain itu. Pilihan ini didasarkan pada pengamatan empiris, seperti yang dijelaskan di sini: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, opsional) — Jumlah token gambar yang akan digunakan untuk setiap gambar dalam input. Ditambahkan untuk kompatibilitas mundur, tetapi ini seharusnya diatur sebagai atribut prosesor pada model-model mendatang. - apply_ocr (
bool, kwargs, opsional, defaultself.apply_ocr) — Apakah akan menerapkan mesin Tesseract OCR untuk mendapatkan kata + kotak pembatas yang dinormalisasi. Dapat ditimpa oleh parameterapply_ocrpada metodepreprocess. - ocr_lang (
str, kwargs, opsional) — Bahasa, yang ditentukan oleh kode ISO-nya, yang akan digunakan oleh mesin Tesseract OCR. Secara default, bahasa Inggris digunakan. Dapat ditimpa oleh parameterocr_langpada metodepreprocess. - tesseract_config (
str, kwargs, opsional) — Bendera konfigurasi kustom tambahan apa pun yang diteruskan ke parameterconfigsaat memanggil Tesseract. Contoh: ‘—psm 6’. Dapat ditimpa oleh parametertesseract_configpada metodepreprocess.
Membangun pemroses gambar LayoutLMv2ImageProcessor.
praproses
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]**kwargs: *<class 'transformers.models.layoutlmv2.image_processing_layoutlmv2.LayoutLMv2ImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature
Parameter
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — Gambar yang akan dipreprocess. Mengharapkan satu gambar atau batch gambar dengan nilai piksel berkisar dari 0 hingga 255. Jika mengirimkan gambar dengan nilai piksel antara 0 dan 1, aturdo_rescale=False. - do_convert_rgb (
bool, kwargs, opsional) — Apakah akan mengonversi gambar ke RGB. - do_resize (
bool, kwargs, opsional) — Apakah akan mengubah ukuran gambar. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Menggambarkan dimensi input maksimum untuk model. - default_to_square (
bool, kwargs, opsional) — Apakah akan menggunakan gambar persegi sebagai default saat mengubah ukuran, jika size berupa int. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Ukuran gambar keluaran setelah menerapkancenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Filter resampling yang digunakan jika mengubah ukuran gambar. Ini dapat berupa salah satu enumPILImageResampling. Hanya berpengaruh jikado_resizediatur keTrue. - do_rescale (
bool, kwargs, opsional) — Apakah akan melakukan penskalaan ulang pada gambar. - rescale_factor (
float, kwargs, opsional) — Faktor rescale untuk menskalakan ulang gambar jikado_rescalediatur keTrue. - do_normalize (
bool, kwargs, opsional) — Apakah akan menormalisasi gambar. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, opsional) — Rata-rata gambar yang digunakan untuk normalisasi. Hanya berpengaruh jikado_normalizediatur keTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opsional) — Standar deviasi gambar yang digunakan untuk normalisasi. Hanya berpengaruh jikado_normalizediatur keTrue. - do_pad (
bool, kwargs, opsional) — Apakah akan melakukan padding pada gambar. Padding dilakukan ke ukuran terbesar dalam batch atau ke ukuran persegi tetap per gambar. Strategi padding yang tepat bergantung pada model. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Ukuran dalam{"height": int, "width" int}untuk melakukan padding pada gambar. Harus lebih besar dari ukuran gambar mana pun yang disediakan untuk pra-pemrosesan. Jikapad_sizetidak disediakan, gambar akan di-pad hingga tinggi dan lebar terbesar dalam batch. Diterapkan hanya ketikado_pad=True. - do_center_crop (
bool, kwargs, opsional) — Apakah akan melakukan center crop pada gambar. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opsional) — HanyaChannelDimension.FIRSTyang didukung. Ditambahkan untuk kompatibilitas dengan prosesor lambat. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opsional) — Format dimensi channel untuk gambar input. Jika tidak diset, format dimensi channel akan disimpulkan dari gambar input. Bisa berupa salah satu dari:"channels_first"atauChannelDimension.FIRST: gambar dalam format (num_channels, height, width)."channels_last"atauChannelDimension.LAST: gambar dalam format (height, width, num_channels)."none"atauChannelDimension.NONE: gambar dalam format (height, width).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — Perangkat untuk memproses video. Jika tidak disetel, perangkat akan disimpulkan dari video input. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Mengembalikan tensor bertumpuk jika diset ke'pt', selain itu mengembalikan daftar tensor. - disable_grouping (
bool, kwargs, opsional) — Apakah akan menonaktifkan pengelompokan gambar berdasarkan ukuran untuk memprosesnya secara individual dan bukan dalam batch. Jika None, akan diatur ke True jika gambar berada di CPU, dan False selain itu. Pilihan ini didasarkan pada pengamatan empiris, seperti yang dijelaskan di sini: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, opsional) — Jumlah token gambar yang akan digunakan untuk setiap gambar dalam input. Ditambahkan untuk kompatibilitas mundur, tetapi ini seharusnya diatur sebagai atribut prosesor pada model-model mendatang. - apply_ocr (
bool, kwargs, opsional, defaultself.apply_ocr) — Apakah akan menerapkan mesin Tesseract OCR untuk mendapatkan kata + kotak pembatas yang dinormalisasi. Dapat ditimpa oleh parameterapply_ocrpada metodepreprocess. - ocr_lang (
str, kwargs, opsional) — Bahasa, yang ditentukan oleh kode ISO-nya, yang akan digunakan oleh mesin Tesseract OCR. Secara default, bahasa Inggris digunakan. Dapat ditimpa oleh parameterocr_langpada metodepreprocess. - tesseract_config (
str, kwargs, opsional) — Bendera konfigurasi kustom tambahan apa pun yang diteruskan ke parameterconfigsaat memanggil Tesseract. Contoh: ‘—psm 6’. Dapat ditimpa oleh parametertesseract_configpada metodepreprocess.
Mengembalikan
~image_processing_base.BatchFeature
- data (
dict) — Kamus berisi daftar/array/tensor yang dikembalikan oleh metode call (‘pixel_values’, dll.). - tensor_type (
Union[None, str, TensorType], opsional) — Anda dapat memberikan tensor_type di sini untuk mengonversi daftar bilangan bulat menjadi Tensor PyTorch/Numpy saat inisialisasi.
LayoutLMv2ImageProcessorPil
kelas transformers.LayoutLMv2ImageProcessorPil
< source >( **kwargs: *<class 'transformers.models.layoutlmv2.image_processing_pil_layoutlmv2.LayoutLMv2ImageProcessorKwargs'> )
Parameter
- do_convert_rgb (
bool, kwargs, opsional) — Apakah akan mengonversi gambar ke RGB. - do_resize (
bool, kwargs, opsional, defaultTrue) — Apakah akan mengubah ukuran gambar. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, defaultnya{'height' -- 224, 'width': 224}): Menggambarkan dimensi input maksimum untuk model. - default_to_square (
bool, kwargs, opsional, defaultnyaTrue) — Apakah akan menggunakan gambar persegi sebagai default saat melakukan resize, jika size berupa int. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Ukuran gambar keluaran setelah menerapkancenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, defaultnya2) — Filter resampling yang digunakan jika mengubah ukuran gambar. Ini bisa berupa salah satu enumPILImageResampling. Hanya berpengaruh jikado_resizediatur keTrue. - do_rescale (
bool, kwargs, opsional) — Apakah akan melakukan penskalaan ulang pada gambar. - rescale_factor (
float, kwargs, opsional, defaultNone) — Faktor rescale untuk menskalakan ulang gambar jikado_rescalediatur keTrue. - do_normalize (
bool, kwargs, opsional) — Apakah akan menormalisasi gambar. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, opsional) — Rata-rata gambar yang digunakan untuk normalisasi. Hanya berpengaruh jikado_normalizediatur keTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opsional) — Standar deviasi gambar yang digunakan untuk normalisasi. Hanya berpengaruh jikado_normalizediatur keTrue. - do_pad (
bool, kwargs, opsional) — Apakah akan melakukan padding pada gambar. Padding dilakukan ke ukuran terbesar dalam batch atau ke ukuran persegi tetap per gambar. Strategi padding yang tepat bergantung pada model. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Ukuran dalam{"height": int, "width" int}untuk melakukan padding pada gambar. Harus lebih besar dari ukuran gambar mana pun yang disediakan untuk pra-pemrosesan. Jikapad_sizetidak disediakan, gambar akan di-pad hingga tinggi dan lebar terbesar dalam batch. Diterapkan hanya ketikado_pad=True. - do_center_crop (
bool, kwargs, opsional) — Apakah akan melakukan center crop pada gambar. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opsional) — HanyaChannelDimension.FIRSTyang didukung. Ditambahkan untuk kompatibilitas dengan prosesor lambat. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opsional) — Format dimensi channel untuk gambar input. Jika tidak diset, format dimensi channel akan disimpulkan dari gambar input. Bisa berupa salah satu dari:"channels_first"atauChannelDimension.FIRST: gambar dalam format (num_channels, height, width)."channels_last"atauChannelDimension.LAST: gambar dalam format (height, width, num_channels)."none"atauChannelDimension.NONE: gambar dalam format (height, width).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — Perangkat untuk memproses video. Jika tidak disetel, perangkat akan disimpulkan dari video input. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Mengembalikan tensor bertumpuk jika diset ke'pt', selain itu mengembalikan daftar tensor. - disable_grouping (
bool, kwargs, opsional) — Apakah akan menonaktifkan pengelompokan gambar berdasarkan ukuran untuk memprosesnya secara individual dan bukan dalam batch. Jika None, akan diatur ke True jika gambar berada di CPU, dan False selain itu. Pilihan ini didasarkan pada pengamatan empiris, seperti yang dijelaskan di sini: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, opsional) — Jumlah token gambar yang akan digunakan untuk setiap gambar dalam input. Ditambahkan untuk kompatibilitas mundur, tetapi ini seharusnya diatur sebagai atribut prosesor pada model-model mendatang. - apply_ocr (
bool, kwargs, opsional, defaultself.apply_ocr) — Apakah akan menerapkan mesin Tesseract OCR untuk mendapatkan kata + kotak pembatas yang dinormalisasi. Dapat ditimpa oleh parameterapply_ocrpada metodepreprocess. - ocr_lang (
str, kwargs, opsional) — Bahasa, yang ditentukan oleh kode ISO-nya, yang akan digunakan oleh mesin Tesseract OCR. Secara default, bahasa Inggris digunakan. Dapat ditimpa oleh parameterocr_langpada metodepreprocess. - tesseract_config (
str, kwargs, opsional) — Bendera konfigurasi kustom tambahan apa pun yang diteruskan ke parameterconfigsaat memanggil Tesseract. Contoh: ‘—psm 6’. Dapat ditimpa oleh parametertesseract_configpada metodepreprocess.
Membangun pemroses gambar LayoutLMv2ImageProcessor.
praproses
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]**kwargs: *<class 'transformers.models.layoutlmv2.image_processing_pil_layoutlmv2.LayoutLMv2ImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature
Parameter
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — Gambar yang akan dipreprocess. Mengharapkan satu gambar atau batch gambar dengan nilai piksel berkisar dari 0 hingga 255. Jika mengirimkan gambar dengan nilai piksel antara 0 dan 1, aturdo_rescale=False. - do_convert_rgb (
bool, kwargs, opsional) — Apakah akan mengonversi gambar ke RGB. - do_resize (
bool, kwargs, opsional) — Apakah akan mengubah ukuran gambar. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Menggambarkan dimensi input maksimum untuk model. - default_to_square (
bool, kwargs, opsional) — Apakah akan menggunakan gambar persegi sebagai default saat mengubah ukuran, jika size berupa int. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Ukuran gambar keluaran setelah menerapkancenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Filter resampling yang digunakan jika mengubah ukuran gambar. Ini dapat berupa salah satu enumPILImageResampling. Hanya berpengaruh jikado_resizediatur keTrue. - do_rescale (
bool, kwargs, opsional) — Apakah akan melakukan penskalaan ulang pada gambar. - rescale_factor (
float, kwargs, opsional) — Faktor rescale untuk menskalakan ulang gambar jikado_rescalediatur keTrue. - do_normalize (
bool, kwargs, opsional) — Apakah akan menormalisasi gambar. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, opsional) — Rata-rata gambar yang digunakan untuk normalisasi. Hanya berpengaruh jikado_normalizediatur keTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opsional) — Standar deviasi gambar yang digunakan untuk normalisasi. Hanya berpengaruh jikado_normalizediatur keTrue. - do_pad (
bool, kwargs, opsional) — Apakah akan melakukan padding pada gambar. Padding dilakukan ke ukuran terbesar dalam batch atau ke ukuran persegi tetap per gambar. Strategi padding yang tepat bergantung pada model. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Ukuran dalam{"height": int, "width" int}untuk melakukan padding pada gambar. Harus lebih besar dari ukuran gambar mana pun yang disediakan untuk pra-pemrosesan. Jikapad_sizetidak disediakan, gambar akan di-pad hingga tinggi dan lebar terbesar dalam batch. Diterapkan hanya ketikado_pad=True. - do_center_crop (
bool, kwargs, opsional) — Apakah akan melakukan center crop pada gambar. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opsional) — HanyaChannelDimension.FIRSTyang didukung. Ditambahkan untuk kompatibilitas dengan prosesor lambat. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opsional) — Format dimensi channel untuk gambar input. Jika tidak diset, format dimensi channel akan disimpulkan dari gambar input. Bisa berupa salah satu dari:"channels_first"atauChannelDimension.FIRST: gambar dalam format (num_channels, height, width)."channels_last"atauChannelDimension.LAST: gambar dalam format (height, width, num_channels)."none"atauChannelDimension.NONE: gambar dalam format (height, width).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — Perangkat untuk memproses video. Jika tidak disetel, perangkat akan disimpulkan dari video input. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Mengembalikan tensor bertumpuk jika diset ke'pt', selain itu mengembalikan daftar tensor. - disable_grouping (
bool, kwargs, opsional) — Apakah akan menonaktifkan pengelompokan gambar berdasarkan ukuran untuk memprosesnya secara individual dan bukan dalam batch. Jika None, akan diatur ke True jika gambar berada di CPU, dan False selain itu. Pilihan ini didasarkan pada pengamatan empiris, seperti yang dijelaskan di sini: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, opsional) — Jumlah token gambar yang akan digunakan untuk setiap gambar dalam input. Ditambahkan untuk kompatibilitas mundur, tetapi ini seharusnya diatur sebagai atribut prosesor pada model-model mendatang. - apply_ocr (
bool, kwargs, opsional, defaultself.apply_ocr) — Apakah akan menerapkan mesin Tesseract OCR untuk mendapatkan kata + kotak pembatas yang dinormalisasi. Dapat ditimpa oleh parameterapply_ocrpada metodepreprocess. - ocr_lang (
str, kwargs, opsional) — Bahasa, yang ditentukan oleh kode ISO-nya, yang akan digunakan oleh mesin Tesseract OCR. Secara default, bahasa Inggris digunakan. Dapat ditimpa oleh parameterocr_langpada metodepreprocess. - tesseract_config (
str, kwargs, opsional) — Bendera konfigurasi kustom tambahan apa pun yang diteruskan ke parameterconfigsaat memanggil Tesseract. Contoh: ‘—psm 6’. Dapat ditimpa oleh parametertesseract_configpada metodepreprocess.
Mengembalikan
~image_processing_base.BatchFeature
- data (
dict) — Kamus berisi daftar/array/tensor yang dikembalikan oleh metode call (‘pixel_values’, dll.). - tensor_type (
Union[None, str, TensorType], opsional) — Anda dapat memberikan tensor_type di sini untuk mengonversi daftar bilangan bulat menjadi Tensor PyTorch/Numpy saat inisialisasi.
LayoutLMv2Tokenizer
kelas transformers.LayoutLMv2Tokenizer
< source >( vocab: str | dict[str, int] | None = Nonedo_lower_case = Trueunk_token = '[UNK]'sep_token = '[SEP]'pad_token = '[PAD]'cls_token = '[CLS]'mask_token = '[MASK]'cls_token_box = [0, 0, 0, 0]sep_token_box = [1000, 1000, 1000, 1000]pad_token_box = [0, 0, 0, 0]pad_token_label = -100only_label_first_subword = Truetokenize_chinese_chars = Truestrip_accents = Nonemodel_max_length = 512**kwargs )
Parameter
- vocab_file (
str) — File yang berisi kosakata. - do_lower_case (
bool, opsional, defaultTrue) — Apakah akan mengubah input menjadi huruf kecil saat melakukan tokenisasi. - unk_token (
str, opsional, default"[UNK]") — Token yang tidak diketahui. Token yang tidak ada dalam kosakata tidak dapat dikonversi menjadi ID dan akan diset sebagai token ini sebagai gantinya. - sep_token (
str, opsional, default"[SEP]") — Token pemisah, yang digunakan saat membangun urutan dari beberapa urutan, misalnya dua urutan untuk klasifikasi urutan atau untuk teks dan pertanyaan untuk penjawaban pertanyaan. Token ini juga digunakan sebagai token terakhir dari urutan yang dibangun dengan token khusus. - pad_token (
str, opsional, defaultnya"[PAD]") — Token yang digunakan untuk padding, misalnya saat membatching urutan dengan panjang yang berbeda. - cls_token (
str, opsional, default"[CLS]") — Token klasifikator yang digunakan saat melakukan klasifikasi sekuens (klasifikasi seluruh sekuens, bukan klasifikasi per-token). Token ini merupakan token pertama dari sekuens ketika dibangun dengan token khusus. - mask_token (
str, opsional, default"[MASK]") — Token yang digunakan untuk memask nilai. Ini adalah token yang digunakan saat melatih model ini dengan masked language modeling. Ini adalah token yang akan diprediksi oleh model. - cls_token_box (
List[int], opsional, default[0, 0, 0, 0]) — Bounding box yang digunakan untuk token khusus [CLS]. - sep_token_box (
List[int], opsional, default[1000, 1000, 1000, 1000]) — Bounding box yang digunakan untuk token khusus [SEP]. - pad_token_box (
List[int], opsional, default[0, 0, 0, 0]) — Bounding box yang digunakan untuk token khusus [PAD]. - pad_token_label (
int, opsional, default -100) — Label yang digunakan untuk token padding. Defaultnya adalah -100, yang merupakanignore_indexdari CrossEntropyLoss PyTorch. - only_label_first_subword (
bool, opsional, defaultnyaTrue) — Apakah hanya subword pertama yang diberi label, jika label kata disediakan. - tokenize_chinese_chars (
bool, opsional, defaultTrue) — Apakah akan melakukan tokenisasi karakter Tionghoa. Opsi ini sebaiknya dinonaktifkan untuk bahasa Jepang (lihat masalah ini). - strip_accents (
bool, opsional) — Apakah akan menghapus semua aksen. Jika opsi ini tidak ditentukan, maka nilainya akan ditentukan oleh nilailowercase(seperti pada LayoutLMv2 asli).
Konstruksi tokenizer LayoutLMv2 “cepat” (didukung oleh pustaka tokenizers HuggingFace). Berbasis WordPiece.
Tokenizer ini mewarisi dari PreTrainedTokenizerFast yang berisi sebagian besar metode utama. Pengguna sebaiknya merujuk ke superclass ini untuk informasi lebih lanjut mengenai metode-metode tersebut.
__call__
< source >( text: str | list[str] | list[list[str]]text_pair: list[str] | list[list[str]] | None = Noneboxes: list[list[int]] | list[list[list[int]]] | None = Noneword_labels: list[int] | list[list[int]] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0pad_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 )
Parameter
- text (
str,List[str],List[List[str]]) — Sequens atau batch dari sequens yang akan dienkod. Setiap sequens dapat berupa string, daftar string (kata-kata dari satu contoh atau pertanyaan dari batch contoh) atau daftar dari daftar string (batch kata). - text_pair (
List[str],List[List[str]]) — Urutan atau batch dari urutan yang akan dienkod. Setiap urutan harus berupa daftar string (string yang sudah dipretokenisasi). - boxes (
List[List[int]],List[List[List[int]]]) — Kotak pembatas tingkat kata. Setiap kotak pembatas harus dinormalisasi ke skala 0-1000. - word_labels (
List[int],List[List[int]], opsional) — Label integer tingkat kata (untuk tugas klasifikasi token seperti FUNSD, CORD). - add_special_tokens (
bool, opsional, defaultTrue) — Apakah akan mengkodekan urutan dengan token khusus yang relatif terhadap modelnya. - padding (
bool,stratau PaddingStrategy, opsional, defaultnyaFalse) — Mengaktifkan dan mengontrol padding. Menerima nilai-nilai berikut:Trueatau'longest': Pad hingga urutan terpanjang dalam batch (atau tanpa padding jika hanya satu urutan yang diberikan).'max_length': Pad hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan.Falseatau'do_not_pad'(default): Tidak ada padding (yaitu, dapat menghasilkan batch dengan urutan yang panjangnya berbeda).
- truncation (
bool,stratau TruncationStrategy, opsional, defaultnyaFalse) — Mengaktifkan dan mengontrol pemotongan. Menerima nilai-nilai berikut:Trueatau'longest_first': Memotong hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan. Ini akan memotong per token, dengan menghapus satu token dari urutan terpanjang dalam pasangan jika sepasang urutan (atau batch pasangan) diberikan.'only_first': Potong hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan. Ini hanya akan memotong urutan pertama dari sebuah pasangan jika sepasang urutan (atau batch dari pasangan) diberikan.'only_second': Potong hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan. Ini hanya akan memotong urutan kedua dari sebuah pasangan jika sepasang urutan (atau batch dari pasangan) diberikan.Falseatau'do_not_truncate'(default): Tidak ada pemotongan (yaitu, dapat menghasilkan batch dengan panjang sekuens yang lebih besar dari ukuran input maksimum yang diizinkan model).
- max_length (
int, opsional) — Mengontrol panjang maksimum yang digunakan oleh salah satu parameter truncation/padding.Jika tidak disetel atau disetel ke
None, ini akan menggunakan panjang maksimum model yang telah didefinisikan sebelumnya jika panjang maksimum diperlukan oleh salah satu parameter truncation/padding. Jika model tidak memiliki panjang input maksimum yang spesifik (seperti XLNet), truncation/padding ke panjang maksimum akan dinonaktifkan. - stride (
int, opsional, default 0) — Jika diatur ke sebuah angka bersama denganmax_length, token yang meluap yang dikembalikan saatreturn_overflowing_tokens=Trueakan berisi beberapa token dari akhir urutan terpotong yang dikembalikan untuk menyediakan beberapa tumpang tindih antara urutan terpotong dan urutan yang meluap. Nilai argumen ini menentukan jumlah token yang tumpang tindih. - pad_to_multiple_of (
int, opsional) — Jika diset, akan melakukan padding pada urutan hingga menjadi kelipatan dari nilai yang diberikan. Ini sangat berguna untuk memungkinkan penggunaan Tensor Cores pada perangkat keras NVIDIA dengan kemampuan komputasi>= 7.5(Volta). - return_token_type_ids (
bool, opsional) — Apakah akan mengembalikan token type ID. Jika dibiarkan pada nilai default, akan mengembalikan token type ID sesuai dengan default tokenizer tertentu, yang ditentukan olehreturn_outputsatribut. - return_attention_mask (
bool, opsional) — Apakah akan mengembalikan attention mask. Jika dibiarkan pada nilai default, akan mengembalikan attention mask sesuai dengan default tokenizer tertentu, yang didefinisikan olehreturn_outputsatribut. - return_overflowing_tokens (
bool, opsional, defaultFalse) — Apakah akan mengembalikan urutan token yang meluap. Jika sepasang urutan id input (atau batch dari pasangan) diberikan dengantruncation_strategy = longest_firstatauTrue, error akan dilemparkan alih-alih mengembalikan token yang meluap. - return_special_tokens_mask (
bool, opsional, defaultFalse) — Apakah akan mengembalikan informasi mask token khusus. - return_offsets_mapping (
bool, opsional, defaultnyaFalse) — Apakah akan mengembalikan(char_start, char_end)untuk setiap token.Ini hanya tersedia pada fast tokenizer yang mewarisi dari PreTrainedTokenizerFast, jika menggunakan tokenizer Python, metode ini akan memicu
NotImplementedError. - return_length (
bool, opsional, defaultFalse) — Apakah akan mengembalikan panjang dari input yang dikodekan. - verbose (
bool, opsional, defaultnyaTrue) — Apakah akan mencetak lebih banyak informasi dan peringatan. - **kwargs — diteruskan ke metode
self.tokenize()
Metode utama untuk melakukan tokenisasi dan persiapan satu atau beberapa urutan atau satu atau beberapa pasangan urutan dengan kotak pembatas (bounding boxes) yang dinormalisasi pada tingkat kata dan label opsional untuk model.
LayoutLMv2Processor
kelas transformers.LayoutLMv2Processor
< source >( image_processor = Nonetokenizer = None**kwargs )
Membangun LayoutLMv2Processor yang membungkus image processor dan tokenizer menjadi satu processor.
LayoutLMv2Processor menyediakan semua fungsionalitas dari LayoutLMv2ImageProcessor dan LayoutLMv2Tokenizer. Lihat ~LayoutLMv2ImageProcessor dan ~LayoutLMv2Tokenizer untuk informasi lebih lanjut.
__call__
< source >( imagestext: str | list[str] | list[list[str]] = Nonetext_pair: list[str] | list[list[str]] | None = Noneboxes: list[list[int]] | list[list[list[int]]] | None = Noneword_labels: list[int] | list[list[int]] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy = Falsemax_length: int | None = Nonestride: int = 0pad_to_multiple_of: int | 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 = Truereturn_tensors: str | transformers.utils.generic.TensorType | None = None**kwargs ) → ~tokenization_utils_base.BatchEncoding
Parameter
- images (`
) -- Image to preprocess. Expects a single or batch of images with pixel values ranging from 0 to 255. If passing in images with pixel values between 0 and 1, setdo_rescale=False`. - text (
Union[str, list[str], list[list[str]]], opsional) — Sequens atau batch dari sequens yang akan dienkod. Setiap sequens dapat berupa string atau daftar string (string yang sudah dipretokenisasi). Jika Anda memasukkan input yang sudah dipretokenisasi, aturis_split_into_words=Trueuntuk menghindari ambiguitas dengan input yang di-batch. - text_pair (
str, list[str] or list[int], opsional) — Urutan kedua opsional untuk dikodekan. Ini bisa berupa string, daftar string (string yang ditokenisasi menggunakan metodetokenize) atau daftar bilangan bulat (id string yang ditokenisasi menggunakan metodeconvert_tokens_to_ids). - boxes (
list[list[int]] or list[list[list[int]]], opsional) — Kotak pembatas tingkat kata. Setiap kotak pembatas harus dinormalisasi ke skala 0-1000. - word_labels (
list[int] or list[list[int]], opsional) — Label integer tingkat kata (untuk tugas klasifikasi token seperti FUNSD, CORD). - add_special_tokens (
bool, opsional, defaultTrue) — Apakah akan menambahkan token khusus saat meng-encode urutan. Ini akan menggunakan fungsiPretrainedTokenizerBase.build_inputs_with_special_tokensyang mendasarinya, yang mendefinisikan token mana yang ditambahkan secara otomatis ke input ids. Ini berguna jika Anda ingin menambahkan tokenbosataueossecara otomatis. - padding (bool, str atau PaddingStrategy, opsional, defaultnya
False) — Mengaktifkan dan mengontrol padding. Menerima nilai-nilai berikut:Trueatau'longest': Pad hingga urutan terpanjang dalam batch (atau tanpa padding jika hanya satu urutan yang diberikan).'max_length': Pad hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan.Falseatau'do_not_pad'(default): Tidak ada padding (yaitu, dapat menghasilkan batch dengan urutan yang panjangnya berbeda).
- truncation (bool, str atau TruncationStrategy, opsional, defaultnya
False) — Mengaktifkan dan mengontrol pemotongan. Menerima nilai-nilai berikut:Trueatau'longest_first': Memotong hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan. Ini akan memotong per token, dengan menghapus satu token dari urutan terpanjang dalam pasangan jika sepasang urutan (atau batch pasangan) diberikan.'only_first': Potong hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan. Ini hanya akan memotong urutan pertama dari sebuah pasangan jika sepasang urutan (atau batch dari pasangan) diberikan.'only_second': Potong hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan. Ini hanya akan memotong urutan kedua dari sebuah pasangan jika sepasang urutan (atau batch dari pasangan) diberikan.Falseatau'do_not_truncate'(default): Tidak ada pemotongan (yaitu, dapat menghasilkan batch dengan panjang sekuens yang lebih besar dari ukuran input maksimum yang diizinkan model).
- max_length (
int, opsional) — Mengontrol panjang maksimum yang digunakan oleh salah satu parameter truncation/padding.Jika tidak disetel atau disetel ke
None, ini akan menggunakan panjang maksimum model yang telah didefinisikan sebelumnya jika panjang maksimum diperlukan oleh salah satu parameter truncation/padding. Jika model tidak memiliki panjang input maksimum yang spesifik (seperti XLNet), truncation/padding ke panjang maksimum akan dinonaktifkan. - stride (
int, opsional, default0) — Jika diatur ke sebuah angka bersama denganmax_length, token yang meluap yang dikembalikan saatreturn_overflowing_tokens=Trueakan berisi beberapa token dari akhir urutan terpotong yang dikembalikan untuk menyediakan beberapa tumpang tindih antara urutan terpotong dan urutan yang meluap. Nilai argumen ini menentukan jumlah token yang tumpang tindih. - pad_to_multiple_of (
int, optional) — If set will pad the sequence to a multiple of the provided value. Requirespaddingto be activated. This is especially useful to enable using Tensor Cores on NVIDIA hardware with compute capability>= 7.5(Volta). - return_token_type_ids (
bool, opsional) — Apakah akan mengembalikan token type ID. Jika dibiarkan pada nilai default, akan mengembalikan token type ID sesuai dengan default tokenizer tertentu, yang ditentukan olehreturn_outputsatribut. - return_attention_mask (
bool, opsional) — Apakah akan mengembalikan attention mask. Jika dibiarkan pada nilai default, akan mengembalikan attention mask sesuai dengan default tokenizer tertentu, yang didefinisikan olehreturn_outputsatribut. - return_overflowing_tokens (
bool, opsional, defaultFalse) — Apakah akan mengembalikan urutan token yang meluap. Jika sepasang urutan id input (atau batch dari pasangan) diberikan dengantruncation_strategy = longest_firstatauTrue, error akan dilemparkan alih-alih mengembalikan token yang meluap. - return_special_tokens_mask (
bool, opsional, defaultFalse) — Apakah akan mengembalikan informasi mask token khusus. - return_offsets_mapping (
bool, opsional, defaultnyaFalse) — Apakah akan mengembalikan(char_start, char_end)untuk setiap token.Ini hanya tersedia pada fast tokenizer yang mewarisi dari PreTrainedTokenizerFast, jika menggunakan tokenizer Python, metode ini akan memicu
NotImplementedError. - return_length (
bool, opsional, defaultFalse) — Apakah akan mengembalikan panjang dari input yang dikodekan. - verbose (
bool, opsional, defaultnyaTrue) — Apakah akan mencetak lebih banyak informasi dan peringatan. - return_tensors (
Union[str, ~utils.generic.TensorType], opsional) — Jika diatur, akan mengembalikan tensor dari framework tertentu. Nilai yang dapat diterima adalah:'pt': Mengembalikan objek PyTorchtorch.Tensor.'np': Mengembalikan objek NumPynp.ndarray.
Mengembalikan
~tokenization_utils_base.BatchEncoding
- data (
dict, opsional) — Kamus berisi daftar/array/tensor yang dikembalikan oleh metode__call__/encode_plus/batch_encode_plus(‘input_ids’, ‘attention_mask’, dll.). - encoding (
tokenizers.EncodingatauSequence[tokenizers.Encoding], opsional) — Jika tokenizer adalah fast tokenizer yang menghasilkan informasi tambahan seperti pemetaan dari ruang kata/karakter ke ruang token, instancetokenizers.Encodingatau daftar instance (untuk batch) menyimpan informasi ini. - tensor_type (
Union[None, str, TensorType], opsional) — Anda dapat memberikan tensor_type di sini untuk mengonversi daftar bilangan bulat menjadi Tensor PyTorch/Numpy saat inisialisasi. - prepend_batch_axis (
bool, opsional, defaultFalse) — Apakah akan menambahkan sumbu batch saat mengonversi ke tensor (lihattensor_typedi atas). Perhatikan bahwa parameter ini berpengaruh jika parametertensor_typedisetel, tidak berpengaruh jika tidak. - n_sequences (
int, opsional) — Jumlah urutan input yang direpresentasikan oleh setiap encoding (Noneuntuk tidak diketahui,1untuk satu urutan, dan2untuk sepasang urutan).
LayoutLMv2Model
kelas transformers.LayoutLMv2Model
< source >( config: LayoutLMv2Config )
Parameter
- config (LayoutLMv2Config) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model Layoutlmv2 polos yang menghasilkan hidden-states mentah tanpa head spesifik di atasnya.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Nonebbox: typing.Optional[torch.LongTensor] = Noneimage: typing.Optional[torch.Tensor] = 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] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)
Parameter
- input_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- bbox (
torch.LongTensordengan bentuk((batch_size, sequence_length), 4), opsional) — Kotak pembatas (bounding box) untuk setiap token dalam urutan input. Dipilih dalam rentang[0, config.max_2d_position_embeddings-1]. Setiap kotak pembatas harus berupa versi ternormalisasi dalam format (x0, y0, x1, y1), di mana (x0, y0) sesuai dengan posisi sudut kiri atas pada kotak pembatas, dan (x1, y1) merepresentasikan posisi sudut kanan bawah. - image (
torch.Tensordengan bentuk(batch_size, num_channels, height, width)ataudetectron.structures.ImageListyangtensorsmemiliki bentuk(batch_size, num_channels, height, width)) — Batch gambar dokumen. - attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- token_type_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks token segmen untuk menunjukkan bagian pertama dan kedua dari input. Indeks dipilih dari[0, 1]:- 0 sesuai dengan token sentence A,
- 1 sesuai dengan token sentence B.
- position_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model.
Mengembalikan
BaseModelOutputWithPooling atau tuple(torch.Tensor)
A BaseModelOutputWithPooling atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (LayoutLMv2Config) dan input.
Metode forward dari LayoutLMv2Model menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
last_hidden_state (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size)) — Urutan hidden-states pada keluaran lapisan terakhir model.pooler_output (
torch.Tensordengan bentuk(batch_size, hidden_size)) — Hidden-state lapisan terakhir dari token pertama dalam urutan (token klasifikasi) setelah diproses lebih lanjut melalui lapisan yang digunakan untuk tugas pra-pelatihan tambahan. Misalnya, untuk keluarga model BERT, ini mengembalikan token klasifikasi setelah diproses melalui lapisan linear dan fungsi aktivasi tanh. Bobot lapisan linear dilatih dari tujuan prediksi kalimat berikutnya (klasifikasi) selama pra-pelatihan.hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
Contoh:
>>> from transformers import AutoProcessor, LayoutLMv2Model, set_seed
>>> from PIL import Image
>>> import torch
>>> from datasets import load_dataset
>>> set_seed(0)
>>> processor = AutoProcessor.from_pretrained("microsoft/layoutlmv2-base-uncased")
>>> model = LayoutLMv2Model.from_pretrained("microsoft/layoutlmv2-base-uncased")
>>> dataset = load_dataset("hf-internal-testing/fixtures_docvqa")
>>> image = dataset["test"][0]["image"]
>>> encoding = processor(image, return_tensors="pt")
>>> outputs = model(**encoding)
>>> last_hidden_states = outputs.last_hidden_state
>>> last_hidden_states.shape
torch.Size([1, 342, 768])LayoutLMv2ForSequenceClassification
kelas transformers.LayoutLMv2ForSequenceClassification
< source >( config: LayoutLMv2Config )
Parameter
- config (LayoutLMv2Config) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model LayoutLMv2 dengan kepala klasifikasi urutan di atasnya (lapisan linear di atas konkatenasi dari state tersembunyi akhir dari token [CLS], embedding visual awal yang di-rata-rata, dan embedding visual akhir yang di-rata-rata, misalnya untuk tugas klasifikasi gambar dokumen seperti dataset RVL-CDIP.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Nonebbox: typing.Optional[torch.LongTensor] = Noneimage: typing.Optional[torch.Tensor] = 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] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SequenceClassifierOutput or tuple(torch.Tensor)
Parameter
- input_ids (
torch.LongTensordengan bentukbatch_size, sequence_length) — Indeks token dari urutan input dalam kosakata. Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya. Apa itu input ID?Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- bbox (
torch.LongTensordengan bentuk(batch_size, sequence_length, 4), opsional) — Kotak pembatas (bounding box) untuk setiap token dalam urutan input. Dipilih dalam rentang[0, config.max_2d_position_embeddings-1]. Setiap kotak pembatas harus berupa versi ternormalisasi dalam format (x0, y0, x1, y1), di mana (x0, y0) sesuai dengan posisi sudut kiri atas pada kotak pembatas, dan (x1, y1) merepresentasikan posisi sudut kanan bawah. - image (
torch.Tensordengan bentuk(batch_size, num_channels, height, width)ataudetectron.structures.ImageListyangtensorsmemiliki bentuk(batch_size, num_channels, height, width)) — Batch gambar dokumen. - attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- token_type_ids (
torch.LongTensordengan bentukbatch_size, sequence_length, opsional) — Indeks token segmen untuk menunjukkan bagian pertama dan kedua dari input. Indeks dipilih dari[0, 1]:- 0 sesuai dengan token sentence A,
- 1 sesuai dengan token sentence B.
- position_ids (
torch.LongTensordengan bentukbatch_size, sequence_length, opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang[0, config.max_position_embeddings - 1]. - inputs_embeds (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - labels (
torch.LongTensordengan bentuk(batch_size,), opsional) — Label untuk menghitung loss klasifikasi/regresi urutan. Indeks harus berada dalam[0, ..., config.num_labels - 1]. Jikaconfig.num_labels == 1, loss regresi dihitung (Mean-Square loss). Jikaconfig.num_labels > 1, loss klasifikasi dihitung (Cross-Entropy).
Mengembalikan
SequenceClassifierOutput atau tuple(torch.Tensor)
A SequenceClassifierOutput atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (LayoutLMv2Config) dan input.
Metode forward dari LayoutLMv2ForSequenceClassification menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
loss (
torch.Tensordengan bentuk(1,), opsional, dikembalikan saatlabelsdisediakan) — Loss klasifikasi (atau regresi jika config.num_labels==1).logits (
torch.Tensordengan bentuk(batch_size, config.num_labels)) — Skor klasifikasi (atau regresi jika config.num_labels==1) (sebelum SoftMax).hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
Contoh:
>>> from transformers import AutoProcessor, LayoutLMv2ForSequenceClassification, set_seed
>>> from PIL import Image
>>> import torch
>>> from datasets import load_dataset
>>> set_seed(0)
>>> dataset = load_dataset("aharley/rvl_cdip", split="train", streaming=True)
>>> data = next(iter(dataset))
>>> image = data["image"].convert("RGB")
>>> processor = AutoProcessor.from_pretrained("microsoft/layoutlmv2-base-uncased")
>>> model = LayoutLMv2ForSequenceClassification.from_pretrained(
... "microsoft/layoutlmv2-base-uncased", num_labels=dataset.info.features["label"].num_classes
... )
>>> encoding = processor(image, return_tensors="pt")
>>> sequence_label = torch.tensor([data["label"]])
>>> outputs = model(**encoding, labels=sequence_label)
>>> loss, logits = outputs.loss, outputs.logits
>>> predicted_idx = logits.argmax(dim=-1).item()
>>> predicted_answer = dataset.info.features["label"].names[4]
>>> predicted_idx, predicted_answer # results are not good without further fine-tuning
(7, 'advertisement')LayoutLMv2ForTokenClassification
kelas transformers.LayoutLMv2ForTokenClassification
< source >( config: LayoutLMv2Config )
Parameter
- config (LayoutLMv2Config) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model LayoutLMv2 dengan kepala klasifikasi token di atasnya (lapisan linear di atas bagian teks dari keadaan tersembunyi), misalnya untuk tugas pelabelan urutan (ekstraksi informasi) seperti FUNSD, SROIE, CORD dan Kleister-NDA.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Nonebbox: typing.Optional[torch.LongTensor] = Noneimage: typing.Optional[torch.Tensor] = 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] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → TokenClassifierOutput or tuple(torch.Tensor)
Parameter
- input_ids (
torch.LongTensordengan bentukbatch_size, sequence_length) — Indeks token dari urutan input dalam kosakata. Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya. Apa itu input ID?Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- bbox (
torch.LongTensordengan bentuk(batch_size, sequence_length, 4), opsional) — Kotak pembatas (bounding box) untuk setiap token dalam urutan input. Dipilih dalam rentang[0, config.max_2d_position_embeddings-1]. Setiap kotak pembatas harus berupa versi ternormalisasi dalam format (x0, y0, x1, y1), di mana (x0, y0) sesuai dengan posisi sudut kiri atas pada kotak pembatas, dan (x1, y1) merepresentasikan posisi sudut kanan bawah. - image (
torch.Tensordengan bentuk(batch_size, num_channels, height, width)ataudetectron.structures.ImageListyangtensorsmemiliki bentuk(batch_size, num_channels, height, width)) — Batch gambar dokumen. - attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- token_type_ids (
torch.LongTensordengan bentukbatch_size, sequence_length, opsional) — Indeks token segmen untuk menunjukkan bagian pertama dan kedua dari input. Indeks dipilih dari[0, 1]:- 0 sesuai dengan token sentence A,
- 1 sesuai dengan token sentence B.
- position_ids (
torch.LongTensordengan bentukbatch_size, sequence_length, opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang[0, config.max_position_embeddings - 1]. - inputs_embeds (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - labels (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Label untuk menghitung kerugian klasifikasi token. Indeks harus berada dalam[0, ..., config.num_labels - 1].
Mengembalikan
TokenClassifierOutput atau tuple(torch.Tensor)
A TokenClassifierOutput atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (LayoutLMv2Config) dan input.
Metode forward dari LayoutLMv2ForTokenClassification menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
loss (
torch.Tensordengan bentuk(1,), opsional, dikembalikan saatlabelsdisediakan) — Loss klasifikasi.logits (
torch.Tensordengan bentuk(batch_size, sequence_length, config.num_labels)) — Skor klasifikasi (sebelum SoftMax).hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
Contoh:
>>> from transformers import AutoProcessor, LayoutLMv2ForTokenClassification, set_seed
>>> from PIL import Image
>>> from datasets import load_dataset
>>> set_seed(0)
>>> datasets = load_dataset("nielsr/funsd", split="test")
>>> labels = datasets.features["ner_tags"].feature.names
>>> id2label = {v: k for v, k in enumerate(labels)}
>>> processor = AutoProcessor.from_pretrained("microsoft/layoutlmv2-base-uncased", revision="no_ocr")
>>> model = LayoutLMv2ForTokenClassification.from_pretrained(
... "microsoft/layoutlmv2-base-uncased", num_labels=len(labels)
... )
>>> data = datasets[0]
>>> image = Image.open(data["image_path"]).convert("RGB")
>>> words = data["words"]
>>> boxes = data["bboxes"] # make sure to normalize your bounding boxes
>>> word_labels = data["ner_tags"]
>>> encoding = processor(
... image,
... words,
... boxes=boxes,
... word_labels=word_labels,
... padding="max_length",
... truncation=True,
... return_tensors="pt",
... )
>>> outputs = model(**encoding)
>>> logits, loss = outputs.logits, outputs.loss
>>> predicted_token_class_ids = logits.argmax(-1)
>>> predicted_tokens_classes = [id2label[t.item()] for t in predicted_token_class_ids[0]]
>>> predicted_tokens_classes[:5] # results are not good without further fine-tuning
['I-HEADER', 'I-HEADER', 'I-QUESTION', 'I-HEADER', 'I-QUESTION']LayoutLMv2ForQuestionAnswering
kelas transformers.LayoutLMv2ForQuestionAnswering
< source >( config: LayoutLMv2Confighas_visual_segment_embedding = True )
Parameter
- config (LayoutLMv2Config) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
- has_visual_segment_embedding (
bool, opsional, defaultnyaTrue) — Apakah akan menambahkan embedding segmen visual.
Transformer Layoutlmv2 dengan kepala klasifikasi span di atasnya untuk tugas tanya-jawab ekstraktif seperti
SQuAD (lapisan linear di atas keluaran hidden-states untuk menghitung span start logits dan span end logits).
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Nonebbox: typing.Optional[torch.LongTensor] = Noneimage: typing.Optional[torch.Tensor] = 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] = Nonestart_positions: typing.Optional[torch.LongTensor] = Noneend_positions: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → QuestionAnsweringModelOutput or tuple(torch.Tensor)
Parameter
- input_ids (
torch.LongTensordengan bentukbatch_size, sequence_length) — Indeks token dari urutan input dalam kosakata. Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya. Apa itu input ID?Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- bbox (
torch.LongTensordengan bentuk(batch_size, sequence_length, 4), opsional) — Kotak pembatas (bounding box) untuk setiap token dalam urutan input. Dipilih dalam rentang[0, config.max_2d_position_embeddings-1]. Setiap kotak pembatas harus berupa versi ternormalisasi dalam format (x0, y0, x1, y1), di mana (x0, y0) sesuai dengan posisi sudut kiri atas pada kotak pembatas, dan (x1, y1) merepresentasikan posisi sudut kanan bawah. - image (
torch.Tensordengan bentuk(batch_size, num_channels, height, width)ataudetectron.structures.ImageListyangtensorsmemiliki bentuk(batch_size, num_channels, height, width)) — Batch gambar dokumen. - attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- token_type_ids (
torch.LongTensordengan bentukbatch_size, sequence_length, opsional) — Indeks token segmen untuk menunjukkan bagian pertama dan kedua dari input. Indeks dipilih dari[0, 1]:- 0 sesuai dengan token sentence A,
- 1 sesuai dengan token sentence B.
- position_ids (
torch.LongTensordengan bentukbatch_size, sequence_length, opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang[0, config.max_position_embeddings - 1]. - inputs_embeds (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - start_positions (
torch.LongTensordengan bentuk(batch_size,), opsional) — Label untuk posisi (indeks) awal span berlabel untuk menghitung kerugian klasifikasi token. Posisi dibatasi pada panjang sekuens (sequence_length). Posisi di luar sekuens tidak diperhitungkan dalam perhitungan kerugian. - end_positions (
torch.LongTensordengan bentuk(batch_size,), opsional) — Label untuk posisi (indeks) akhir dari span berlabel untuk menghitung kerugian klasifikasi token. Posisi dibatasi pada panjang sekuens (sequence_length). Posisi di luar sekuens tidak diperhitungkan dalam perhitungan kerugian.
Mengembalikan
QuestionAnsweringModelOutput atau tuple(torch.Tensor)
A QuestionAnsweringModelOutput atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (LayoutLMv2Config) dan input.
Metode forward dari LayoutLMv2ForQuestionAnswering menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
loss (
torch.Tensordengan bentuk(1,), opsional, dikembalikan saatlabelsdisediakan) — Total loss ekstraksi span adalah jumlah dari Cross-Entropy untuk posisi awal dan akhir.start_logits (
torch.Tensordengan bentuk(batch_size, sequence_length)) — Skor awal span (sebelum SoftMax).end_logits (
torch.Tensordengan bentuk(batch_size, sequence_length)) — Skor akhir span (sebelum SoftMax).hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
Contoh:
Pada contoh di bawah ini, kami memberikan model LayoutLMv2 sebuah gambar (berisi teks) dan mengajukan pertanyaan. Model akan memberikan prediksi tentang apa yang dianggapnya sebagai jawaban (rentang jawaban di dalam teks yang diparsing dari gambar).
>>> from transformers import AutoProcessor, LayoutLMv2ForQuestionAnswering, set_seed
>>> import torch
>>> from PIL import Image
>>> from datasets import load_dataset
>>> set_seed(0)
>>> processor = AutoProcessor.from_pretrained("microsoft/layoutlmv2-base-uncased")
>>> model = LayoutLMv2ForQuestionAnswering.from_pretrained("microsoft/layoutlmv2-base-uncased")
>>> dataset = load_dataset("hf-internal-testing/fixtures_docvqa")
>>> image = dataset["test"][0]["image"]
>>> question = "When is coffee break?"
>>> encoding = processor(image, question, return_tensors="pt")
>>> outputs = model(**encoding)
>>> predicted_start_idx = outputs.start_logits.argmax(-1).item()
>>> predicted_end_idx = outputs.end_logits.argmax(-1).item()
>>> predicted_start_idx, predicted_end_idx
(30, 191)
>>> predicted_answer_tokens = encoding.input_ids.squeeze()[predicted_start_idx : predicted_end_idx + 1]
>>> predicted_answer = processor.tokenizer.decode(predicted_answer_tokens)
>>> predicted_answer # results are not good without further fine-tuning
'44 a. m. to 12 : 25 p. m. 12 : 25 to 12 : 58 p. m. 12 : 58 to 4 : 00 p. m. 2 : 00 to 5 : 00 p. m. coffee break coffee will be served for men and women in the lobby adjacent to exhibit area. please move into exhibit area. ( exhibits open ) trrf general session ( part | ) presiding : lee a. waller trrf vice president " introductory remarks " lee a. waller, trrf vice presi - dent individual interviews with trrf public board members and sci - entific advisory council mem - bers conducted by trrf treasurer philip g. kuehn to get answers which the public refrigerated warehousing industry is looking for. plus questions from'>>> target_start_index = torch.tensor([7])
>>> target_end_index = torch.tensor([14])
>>> outputs = model(**encoding, start_positions=target_start_index, end_positions=target_end_index)
>>> predicted_answer_span_start = outputs.start_logits.argmax(-1).item()
>>> predicted_answer_span_end = outputs.end_logits.argmax(-1).item()
>>> predicted_answer_span_start, predicted_answer_span_end
(30, 191)