Transformers documentation
Piramit Görüntü Dönüşümcü V2 (PVTv2)
Bu model 2021-06-25 tarihinde HF papers'ta yayımlanmış ve 2024-03-13 tarihinde Hugging Face Transformers'a katkıda bulunmuştur.
Piramit Görüntü Dönüşümcü V2 (PVTv2)
Genel Bakış
PVTv2 modeli, Wenhai Wang, Enze Xie, Xiang Li, Deng-Ping Fan, Kaitao Song, Ding Liang, Tong Lu, Ping Luo ve Ling Shao tarafından PVT v2: Improved Baselines with Pyramid Vision Transformer makalesinde önerilmiştir. PVT'nin geliştirilmiş bir varyantı olarak konum gömme (position embedding) kullanmaz; bunun yerine sıfır dolgusu (zero-padding) ve örtüşen yama gömme (overlapping patch embedding) yoluyla kodlanan konumsal bilgilere dayanır. Konum gömme kullanmama gereksinimi mimariyi basitleştirir ve bunların interpolasyonuna ihtiyaç duymadan herhangi bir çözünürlükte çıkarım (inference) yapılmasını mümkün kılar.
PVTv2 kodlayıcı yapısı, anlamsal segmentasyon için Segformer, monoküler derinlik için GLPN ve panoptik segmentasyon için Panoptic Segformer modellerinde en iyi sonuçları elde etmek üzere başarıyla dağıtılmıştır.
PVTv2, çok ölçekli özellik haritaları üretmek amacıyla transformer katmanlarında uyarlamalar yapan hiyerarşik transformer adlı model ailesine aittir. İnce detayları kaybeden Vision Transformer'ın (ViT) sütunsal yapısının aksine, çok ölçekli özellik haritalarının bu detayları koruduğu ve yoğun tahmin görevlerindeki performansa yardımcı olduğu bilinmektedir. PVTv2'de bu, her kodlayıcı katmanında üst üste binen çekirdeklerle 2B konvolüsyon kullanarak görüntü yama belirteçleri üretilerek sağlanır.
Hiyerarşik transformer'ların çok ölçekli özellikleri, bunların ResNet gibi geleneksel ana omurga bilgisayarla görme modellerinin yerini büyük mimarilerde kolayca alabilmesini sağlar. Hem Segformer hem de Panoptic Segformer, bir omurga olarak PVTv2 kullanan yapılandırmaların, benzer boyutlu ResNet omurgalarına sahip yapılandırmaları tutarlı bir şekilde geride bıraktığını göstermiştir.
PVTv2'nin bir diğer güçlü özelliği, gizli durumları sorgularla dikkate almadan önce daha küçük bir çözünürlüğe yansıtmak için 2D konvolüsyon katmanlarını kullanan ve kendine-dikkat katmanlarındaki karmaşıklığı azaltan Mekânsal Azaltma Dikkati (SRA) adlı mekanizmadır. Bu sayede kendine-dikkatin karmaşıklığı $O(n^2/R)$'ye düşer; burada mekânsal azaltma oranıdır (sr_ratio, 2D konvolüsyonda çekirdek boyutu ve adım olarak da bilinir).
SRA, PVT'de tanıtılmış olup PVTv2'de kullanılan varsayılan dikkat karmaşıklığı azaltma yöntemidir. Ancak PVTv2, görüntü boyutuyla doğrusal karmaşıklığa sahip bir öz-dikkat mekanizması kullanma seçeneğini de sunmuştur; buna “Linear SRA” adını vermişlerdir. Bu yöntem, gizli durumları orijinal çözünürlüklerine bağımsız olarak sabit bir boyuta indirmek için ortalama havuzlama (average pooling) kullanır (bu, normal SRA'ya göre doğası gereği daha fazla bilgi kaybına yol açar). Bu seçenek, PVTv2Config içinde linear_attention değerini True olarak ayarlayarak etkinleştirilebilir.
Makaleden özet
Transformer, bilgisayarla görüde son zamanlarda umut verici ilerlemeler kaydetmiştir. Bu çalışmada, orijinal Pyramid Vision Transformer'ı (PVT v1) (1) doğrusal karmaşıklıkta dikkat katmanı, (2) üst üste binen yama gömme ve (3) konvolüsyonel ileri beslemeli ağ olmak üzere üç tasarım ekleyerek iyileştiriyor ve yeni baz çizgileri sunuyoruz. Bu değişikliklerle PVT v2, PVT v1'in hesaplama karmaşıklığını doğrusal seviyeye indirger ve sınıflandırma, algılama ve segmentasyon gibi temel görü görevlerinde önemli iyileşmeler sağlar. Önemle belirtmek gerekir ki, önerilen PVT v2, Swin Transformer gibi son çalışmalara benzer veya daha iyi performanslar elde etmektedir. Bu çalışmanın, bilgisayarla görüdeki en son Transformer araştırmalarını kolaylaştırmasını umuyoruz. Kod https://github.com/whai362/PVT adresinde mevcuttur.
Bu model FoamoftheSea tarafından katkıda bulunmuştur. Orijinal kod burada bulunabilir.
Kullanım ipuçları
PVTv2, görüntü sınıflandırma ve birçok diğer görevde güçlü performans sergileyen hiyerarşik bir transformer modelidir; Segformer'de anlamsal segmentasyon, GLPN'de monoküler derinlik tahmini ve Panoptic Segformer'de panoptik segmentasyon için omurga olarak kullanılmış olup benzer ResNet yapılandırmalarına tutarlı olarak daha yüksek performans göstermektedir.
PVTv2 gibi hiyerarşik transformerlar, konvolüsyonel sinir ağlarının (CNN) tasarım unsurlarını kodlayıcılarına entegre ederek, saf transformer mimarilerine kıyasla görüntü verilerinde üstün veri ve parametre verimliliği sağlar. Bu, çeviri eşdeğerliği ve yerellik gibi CNN'lerin faydalı indüktif önyargılarını ağa aktarırken, transformers'ın öz-dikkat mekanizmasının sağladığı dinamik veri yanıtı ve küresel ilişki modelleme avantajlarından da yararlanarak her iki dünyanın en iyi yönlerini birleştiren bir mimari oluşturur.
PVTv2, çok ölçekli özellik haritaları oluşturmak için üst üste binen yama gömme kullanır; bu haritalar, sıfır dolgu ve derinlik boyutlu konvolüsyonlar ile konum bilgisiyle zenginleştirilir.
Dikkat katmanlarındaki karmaşıklığı azaltmak için PVTv2, gizli durumlarda (hidden states) uzamsal indirgeme (spatial reduction) gerçekleştirir; bunun için sıralı 2D konvolüsyon (SRA) veya sabit boyutlu ortalama havuzlama (Linear SRA) kullanılır. Doğası gereği daha fazla bilgi kaybına yol açan Linear SRA, görüntü boyutuna göre doğrusal bir karmaşıklıkla etkileyici bir performans sağlar. Kendi-dikkat (self-attention) katmanlarında Linear SRA kullanmak için
PvtV2Configiçindelinear_attention=Truedeğerini ayarlayın.PvtV2Model, hiyerarşik transformer kodlayıcısıdır (edebiyatta genellikle Mix Transformer veya MiT olarak da anılır). PvtV2ForImageClassification, Image Classification işlemini gerçekleştirmek için bunun üzerine basit bir sınıflandırıcı başlığı ekler.
PvtV2Backbone, Deformable DETR gibi daha büyük mimarilerde AutoBackbone sistemiyle birlikte kullanılabilir.Tüm model boyutları için ImageNet önceden eğitilmiş ağırlıklar hub'da bulunabilir.
PVTv2 ile başlamanın en iyi yolu,
AutoModelForImageClassificationkullanarak seçtiğiniz boyuttaki önceden eğitilmiş kontrol noktasını yüklemektir:
import requests
import torch
from PIL import Image
from transformers import AutoImageProcessor, AutoModelForImageClassification
model = AutoModelForImageClassification.from_pretrained("OpenGVLab/pvt_v2_b0", device_map="auto")
image_processor = AutoImageProcessor.from_pretrained("OpenGVLab/pvt_v2_b0")
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
processed = image_processor(image)
outputs = model(torch.tensor(processed["pixel_values"]))DeformableDETR gibi daha karmaşık mimarilerde PVTv2'yi bir omurga (backbone) olarak kullanmak için AutoBackbone kullanabilirsiniz (bu model, önceden eğitilmiş modeldeki omurganın değiştirilmesi ve rastgele ağırlıklarla başlatılması nedeniyle ince ayar gerektirir):
import requests
import torch
from PIL import Image
from transformers import AutoConfig, AutoImageProcessor, AutoModelForObjectDetection
model = AutoModelForObjectDetection.from_config(
config=AutoConfig.from_pretrained(
"SenseTime/deformable-detr",
backbone_config=AutoConfig.from_pretrained("OpenGVLab/pvt_v2_b5"),
),
)
image_processor = AutoImageProcessor.from_pretrained("SenseTime/deformable-detr")
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
processed = image_processor(image)
outputs = model(torch.tensor(processed["pixel_values"]))Model boyutuna (B0-B5) göre ImageNet-1K üzerindeki PVTv2 performansı:
| Yöntem | Siz | Doğruluk@1 | #Parametreler (M) |
|---|---|---|---|
| PVT-V2-B0 | 224 | 70.5 | 3.7 |
| PVT-V2-B1 | 224 | 78.7 | 14.0 |
| PVT-V2-B2-Linear | 224 | 82.1 | 22.6 |
| PVT-V2-B2 | 224 | 82.0 | 25.4 |
| PVT-V2-B3 | 224 | 83.1 | 45.2 |
| PVT-V2-B4 | 224 | 83.6 | 62.6 |
| PVT-V2-B5 | 224 | 83.8 | 82.0 |
PvtV2Config
sınıf transformers.PvtV2Config
< 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 = Noneimage_size: int | list[int] | tuple[int, int] | dict = 224num_channels: int = 3num_encoder_blocks: int = 4depths: list[int] | tuple[int, ...] = (2, 2, 2, 2)sr_ratios: list[int] | tuple[int, ...] = (8, 4, 2, 1)hidden_sizes: list[int] | tuple[int, ...] = (32, 64, 160, 256)patch_sizes: list[int] | tuple[int, ...] = (7, 3, 3, 3)strides: list[int] | tuple[int, ...] = (4, 2, 2, 2)num_attention_heads: list[int] | tuple[int, ...] = (1, 2, 5, 8)mlp_ratios: list[int] | tuple[int, ...] = (8, 8, 4, 4)hidden_act: str = 'gelu'hidden_dropout_prob: float | int = 0.0attention_probs_dropout_prob: float | int = 0.0initializer_range: float = 0.02drop_path_rate: float | int = 0.0layer_norm_eps: float = 1e-06qkv_bias: bool = Truelinear_attention: bool = False_out_features: list[str] | None = None_out_indices: list[int] | None = None )
Parametreler
- image_size (
Union[int, list[int], tuple[int, int], dict], isteğe bağlı, varsayılan224) — Her bir görüntünün boyutu (çözünürlüğü). - num_channels (
int, isteğe bağlı, varsayılan3) — Giriş kanal sayısı. - num_encoder_blocks (
[int], isteğe bağlı, varsayılan 4) — Encoder bloklarının sayısı (yani Mix Transformer encoder'ındaki aşamalar). - depths (
Union[list[int], tuple[int, ...]], isteğe bağlı, varsayılan(2, 2, 2, 2)) — Transformer'daki her katmanın derinliği. - sr_ratios (
list[int], isteğe bağlı, varsayılan[8, 4, 2, 1]) — Her kodlayıcı bloğundaki uzamsal azaltma oranları. - hidden_sizes (
Union[list[int], tuple[int, ...]], isteğe bağlı, varsayılan(32, 64, 160, 256)) — Modelin her aşamasındaki boyutluluk (gizli boyut). - patch_sizes (
list[int], isteğe bağlı, varsayılan[7, 3, 3, 3]) — Her kodlayıcı bloğundan önce üst üste binen yama gömme işlemi için yama boyutu. - strides (
list[int], isteğe bağlı, varsayılan[4, 2, 2, 2]) — Her encoder bloğu öncesinde örtüşen yama gömme işlemi için stride. - num_attention_heads (
list[int], isteğe bağlı, varsayılan[1, 2, 5, 8]) — Transformer kodlayıcısının her bloğundaki her dikkat katmanı için dikkat başlığı sayısı. - mlp_ratios (
list[int], isteğe bağlı, varsayılan[8, 8, 4, 4]) — Encoder bloklarındaki Mix FFN'lerde gizli katman boyutunun giriş katman boyutuna oranı. - hidden_act (
str, isteğe bağlı, varsayılangelu) — Çö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ılan0.0) — 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ılan0.0) — Dikkat olasılıkları için dropout oranı. - initializer_range (
float, isteğe bağlı, varsayılan0.02) — Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması. - drop_path_rate (
Union[float, int], isteğe bağlı, varsayılan0.0) — Patch füzyonu için drop path oranı. - layer_norm_eps (
float, isteğe bağlı, varsayılan1e-06) — Katman normalizasyon katmanları tarafından kullanılan epsilon. - qkv_bias (
bool, isteğe bağlı, varsayılanTrue) — Sorgulara, anahtarlara ve değerlere bir sapma eklenip eklenmeyeceği. - linear_attention (
bool, isteğe bağlı, varsayılanFalse) — Doğrusal dikkat karmaşıklığını kullanır. True olarak ayarlanırsa,sr_ratioyok sayılır ve dikkat katmanlarında boyut indirgeme için strided convolution yerine ortalama havuzlama (average pooling) kullanılır.
Bu, PvtV2Model yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Pvt V2 modelinin örneklenmesi ve model mimarisinin tanımlanması için kullanılır. Varsayılan değerlerle bir yapılandırma örneklendiğinde, OpenGVLab/pvt_v2_b0 ile benzer bir yapılandırma elde edilir.
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 PvtV2Model, PvtV2Config
>>> # Initializing a pvt_v2_b0 style configuration
>>> configuration = PvtV2Config()
>>> # Initializing a model from the OpenGVLab/pvt_v2_b0 style configuration
>>> model = PvtV2Model(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configPvtForImageClassification
sınıf transformers.PvtV2ForImageClassification
< source >( config: PvtV2Config )
Parametreler
- config (PvtV2Config) — 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.
Pvt-v2 Model, [CLS] token'ının son gizli durumunun üzerine yerleştirilen doğrusal bir katman içeren bir görüntü sınıflandırma başlığına sahiptir; örneğin ImageNet 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
< source >( pixel_values: typing.Optional[torch.Tensor]labels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → ImageClassifierOutput or tuple(torch.Tensor)
Parametreler
- pixel_values (
torch.Tensor, şekli(batch_size, num_channels, image_size, image_size), isteğe bağlı) — Girdi görüntülerine karşılık gelen tensörler. Piksel değerleri PvtImageProcessor kullanılarak elde edilebilir. Ayrıntılar için PvtImageProcessor.call() bölümüne bakın (processor_class, görüntü işleme için PvtImageProcessor kullanır). - labels (
torch.LongTensor, şekli(batch_size,), isteğe bağlı) — Görüntü sınıflandırma/geri dönüşüm kaybını hesaplamak için etiketler. Endeksler[0, ..., config.num_labels - 1]aralığında olmalıdır.config.num_labels == 1ise bir geri dönüşüm kaybı (Ortalama Kare kaybı) hesaplanır,config.num_labels > 1ise bir sınıflandırma kaybı (Çapraz Entropi) 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ındakiattentionsbö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ındakihidden_statesbö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
ImageClassifierOutput veya tuple(torch.Tensor)
A ImageClassifierOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (PvtV2Config) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
PvtV2ForImageClassification 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ı,labelssağ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=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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 aşamanın çıktısı için birer tane) içeren bir tuple, şekli(batch_size, sequence_length, hidden_size). Modelin her aşamanın çıktısındaki gizli durumları (aynı zamanda özellik haritaları olarak da adlandırılır).attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, patch_size, 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.
Örnek:
>>> from transformers import AutoImageProcessor, PvtV2ForImageClassification
>>> import torch
>>> from datasets import load_dataset
>>> dataset = load_dataset("huggingface/cats-image")
>>> image = dataset["test"]["image"][0]
>>> image_processor = AutoImageProcessor.from_pretrained("OpenGVLab/pvt_v2_b0")
>>> model = PvtV2ForImageClassification.from_pretrained("OpenGVLab/pvt_v2_b0")
>>> inputs = image_processor(image, return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_label = logits.argmax(-1).item()
>>> print(model.config.id2label[predicted_label])
...PvtModel
sınıf transformers.PvtV2Model
< source >( config: PvtV2Config )
Parametreler
- config (PvtV2Config) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.
Üzerinde herhangi bir özel head olmadan ham hidden-states üreten çıplak Pvt V2 Model.
Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.
forward
< source >( pixel_values: Tensoroutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutput or tuple(torch.Tensor)
Parametreler
- pixel_values (
torch.Tensor, şekli(batch_size, num_channels, image_size, image_size)) — Girdi görüntülerine karşılık gelen tensörler. Piksel değerleri PvtImageProcessor kullanılarak elde edilebilir. Ayrıntılar için PvtImageProcessor.call() bölümüne bakın (processor_class, görüntüleri işlemek için PvtImageProcessor kullanı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ındakiattentionsbö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ındakihidden_statesbö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
BaseModelOutput veya tuple(torch.Tensor)
Bir BaseModelOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (PvtV2Config) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
PvtV2Model 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.hidden_states (
tuple(torch.Tensor), isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğ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.