Transformers documentation
هرم تحويل الرؤية V2 (PVTv2)
نُشر هذا النموذج في أوراق HF في 25 يونيو 2021، وأُضيف إلى مكتبة Hugging Face Transformers في 13 مارس 2024.
هرم تحويل الرؤية V2 (PVTv2)
نظرة عامة
قُدِّم نموذج PVTv2 في PVT v2: Improved Baselines with Pyramid Vision Transformer من قِبل Wenhai Wang وEnze Xie وXiang Li وDeng-Ping Fan وKaitao Song وDing Liang وTong Lu وPing Luo وLing Shao. وبوصفه نسخة محسّنة من PVT، يتخلّى عن تضمينات المواقع (position embeddings) ويعتمد بدلاً من ذلك على معلومات المواقع المُرمَّزة عبر التوسيط الصفري (zero-padding) وتضمينات البقع المتداخلة (overlapping patch embeddings). وهذا الافتقار إلى الاعتماد على تضمينات المواقع يُبسّط البنية، ويتيح تنفيذ الاستدلال (inference) بأي دقة دون الحاجة إلى استيفائها (interpolation).
تم نشر بنية مُشفِّر PVTv2 بنجاح لتحقيق نتائج متقدمة في Segformer للتجزئة الدلالية، وGLPN للعمق أحادي العين، وPanoptic Segformer للتجزئة الشاملة.
ينتمي PVTv2 إلى عائلة من النماذج تُسمى المحوّلات الهرمية، والتي تُجري تعديلات على طبقات المحوّل (Transformer) من أجل توليد خرائط ميزات متعددة المقاييس. وعلى عكس البنية العمودية في محوّل الرؤية (ViT) التي تفقد التفاصيل الدقيقة، تُعرف خرائط الميزات متعددة المقاييس بقدرتها على الحفاظ على هذه التفاصيل والمساهمة في تحسين الأداء في مهام التنبؤ الكثيف. في حالة PVTv2، يتم تحقيق ذلك من خلال توليد رموز رقعات الصورة باستخدام التمرير ثنائي الأبعاد (2D convolution) مع نوى متداخلة في كل طبقة من طبقات المُشفِّر (encoder).
تتيح الميزات متعددة المقاييس في محولات التسلسل الهرمي استبدالها بسهولة بنماذج العمود الفقري التقليدية الشائعة في الرؤية الحاسوبية مثل ResNet ضمن البنى المعمارية الأكبر. وقد أثبت كل من Segformer وPanoptic Segformer أن التكوينات التي تستخدم PVTv2 كعمود فقري تتفوق باستمرار على تلك التي تستخدم أعمدة فقرية من ResNet بحجم مماثل.
ميزة قوية أخرى في PVTv2 هي تقليل التعقيد في طبقات الانتباه الذاتي، وتُسمى الانتباه المُخفَّض مكانيًا (SRA)، حيث تستخدم طبقات التمرير ثنائي الأبعاد لإسقاط الحالات المخفية إلى دقة أصغر قبل الانتباه إليها بالاستعلامات، مما يحسّن تعقيد الانتباه الذاتي إلى $O(n^2/R)$، حيث هو نسبة الاختزال المكاني (sr_ratio, أي حجم النواة والخطوة في التمرير ثنائي الأبعاد).
تم تقديم SRA في PVT، وهو طريقة تقليل تعقيد الانتباه الافتراضية المستخدمة في PVTv2. ومع ذلك، قدّم PVTv2 أيضاً خيار استخدام آلية انتباه ذاتي بتعقيد خطي مرتبط بحجم الصورة، والتي أسموها “Linear SRA”. تستخدم هذه طريقة متوسط التجميع (average pooling) لتقليل الحالات المخفية إلى حجم ثابت لا يتأثر بالدقة الأصلية (على الرغم من أن هذا أكثر فقداناً للمعلومات بطبيعته من SRA العادي). يمكن تفعيل هذا الخيار عن طريق تعيين linear_attention إلى True في PVTv2Config.
الملخص من الورقة
Transformer recently has presented encouraging progress in computer vision. In this work, we present new baselines by improving the original Pyramid Vision Transformer (PVT v1) by adding three designs, including (1) linear complexity attention layer, (2) overlapping patch embedding, and (3) convolutional feed-forward network. With these modifications, PVT v2 reduces the computational complexity of PVT v1 to linear and achieves significant improvements on fundamental vision tasks such as classification, detection, and segmentation. Notably, the proposed PVT v2 achieves comparable or better performances than recent works such as Swin Transformer. We hope this work will facilitate state-of-the-art Transformer researches in computer vision. Code is available at https://github.com/whai362/PVT.
تمت مساهمة هذا النموذج من قِبل FoamoftheSea. يمكن العثور على الكود الأصلي هنا.
نصائح للاستخدام
PVTv2 هو نموذج تحويل هرمي أظهر أداءً قويًا في تصنيف الصور ومهام أخرى متعددة، ويُستخدم كهيكل أساسي للتجزئة الدلالية في Segformer، وتقدير العمق أحادي العين في GLPN، والتجزئة الشاملة في Panoptic Segformer، مع إظهار أداء أعلى باستمرار مقارنةً بتكوينات ResNet المماثلة.
تحقق محولات هرمية مثل PVTv2 من كفاءة أعلى في استخدام البيانات والمعاملات على بيانات الصور مقارنةً بمعماريات المحولات النقية، وذلك من خلال دمج عناصر تصميم شبكات العصب التلافيفية (CNNs) في مشفّراتها. وهذا يُنشئ معمارية تجمع بين مزايا العالمين، إذ تُغني الشبكة بالانحيازات الاستقرائية المفيدة لشبكات CNN مثل التكافؤ الانتقالي والخصوصية المحلية، مع الاستفادة في الوقت نفسه من مزايا الاستجابة الديناميكية للبيانات ونمذجة العلاقات الشاملة التي يوفرها آلية الانتباه الذاتي في transformers.
يستخدم PVTv2 تضمينات بقع متداخلة لإنشاء خرائط ميزات متعددة المقاييس، والتي تُغرس فيها معلومات الموقع باستخدام التوسيع الصفري والتحويلات التجميعية العميقة.
لخفض التعقيد في طبقات الانتباه، يقوم PVTv2 بإجراء اختزال مكاني على الحالات المخفية باستخدام إما التمرير ثنائي الأبعاد (SRA) أو متوسط الحجم الثابت (Linear SRA). وعلى الرغم من أن Linear SRA أكثر فقداناً للمعلومات بطبيعته، إلا أنه يوفر أداءً مبهراً بتعقيد خطي بالنسبة لحجم الصورة. لاستخدام Linear SRA في طبقات الانتباه الذاتي، اضبط
linear_attention=TrueفيPvtV2Config.PvtV2Model هو مُشفِّر الترانسفورمر الهرمي (والذي يُشار إليه غالبًا باسم Mix Transformer أو MiT في الأدبيات). يضيف PvtV2ForImageClassification رأس تصنيف بسيط في الأعلى لأداء تصنيف الصور. يمكن استخدام
PvtV2Backboneمع نظام AutoBackbone في البنى المعمارية الأكبر مثل Deformable DETR.يمكن العثور على أوزان ImageNet المُدرَّبة مسبقًا لجميع أحجام النماذج على المركز.
أفضل طريقة للبدء مع PVTv2 هي تحميل نقطة التفتيش المُسبقة التدريب بحجمك المفضل باستخدام
AutoModelForImageClassification:
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"]))للاستخدام PVTv2 كهيكل أساسي (backbone) لمعماريات أكثر تعقيداً مثل DeformableDETR، يمكنك استخدام AutoBackbone (سيحتاج هذا النموذج إلى ضبط دقيق (fine-tuning) لأنك تستبدل الهيكل الأساسي في النموذج المُدرَّب مسبقاً، وهو مُهيأ بأوزان عشوائية):
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"]))أداء PVTv2 على ImageNet-1K حسب حجم النموذج (B0-B5):
| الطريقة | الحجم | دقة@1 | # المعاملات (مليون) |
|---|---|---|---|
| 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
فئة 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 )
المعاملات
- image_size (
Union[int, list[int], tuple[int, int], dict]، اختياري، القيمة الافتراضية224) — حجم (دقة) كل صورة. - num_channels (
int، اختياري، القيمة الافتراضية3) — عدد قنوات الإدخال. - num_encoder_blocks (
[int]، اختياري، القيمة الافتراضية 4) — عدد كتل المُشفِّر (أي المراحل في مُشفِّر Mix Transformer). - depths (
Union[list[int], tuple[int, ...]]، اختياري، القيمة الافتراضية(2, 2, 2, 2)) — عمق كل طبقة في Transformer. - sr_ratios (
list[int]، اختياري، القيمة الافتراضية[8, 4, 2, 1]) — نسب تقليل المساحة في كل كتلة من وحدات الترميز. - hidden_sizes (
Union[list[int], tuple[int, ...]]، اختياري، القيمة الافتراضية(32, 64, 160, 256)) — البُعد (حجم الطبقة المخفية) في كل مرحلة من مراحل النموذج. - patch_sizes (
list[int]، اختياري، القيمة الافتراضية[7, 3, 3, 3]) — حجم الباتش (Patch) للتضمين المتداخل قبل كل كتلة مشفّرة (encoder block). - strides (
list[int]، اختياري، القيمة الافتراضية[4, 2, 2, 2]) — خطوة التداخل لتضمين البقع قبل كل كتلة مشفّرة. - num_attention_heads (
list[int]، اختياري، القيمة الافتراضية[1, 2, 5, 8]) — عدد رؤوس الانتباه لكل طبقة انتباه في كل كتلة من مشفّر Transformer. - mlp_ratios (
list[int]، اختياري، القيمة الافتراضية[8, 8, 4, 4]) — نسبة حجم الطبقة المخفية إلى حجم طبقة الإدخال في وحدات Mix FFNs داخل كتل المُشفِّر. - hidden_act (
str، اختياري، القيمة الافتراضيةgelu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال،"gelu"،"relu"،"silu"، وما إلى ذلك. - hidden_dropout_prob (
Union[float, int]، اختياري، القيمة الافتراضية0.0) — احتمالية الإسقاط (dropout) لجميع الطبقات المتصلة بالكامل في التضمينات، والمُشفِّر، والمُجمِّع. - attention_probs_dropout_prob (
Union[float, int]، اختياري، القيمة الافتراضية0.0) — نسبة الإسقاط (dropout) لاحتمالات الانتباه. - initializer_range (
float، اختياري، القيمة الافتراضية0.02) — الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان. - drop_path_rate (
Union[float, int], اختياري، القيمة الافتراضية0.0) — معدل إسقاط المسار (Drop path) لدمج البقع (patch fusion). - layer_norm_eps (
float, اختياري، القيمة الافتراضية1e-06) — قيمة الإيبسلون المستخدمة في طبقات تطبيع الطبقة. - qkv_bias (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إضافة انحياز إلى الاستعلامات والمفاتيح والقيم. - linear_attention (
bool، اختياري، القيمة الافتراضيةFalse) — استخدام تعقيد الانتباه الخطي. إذا تم ضبطه على True، يتم تجاهلsr_ratioويُستخدم متوسط التجميع (average pooling) لتقليل الأبعاد في طبقات الانتباه بدلاً من التمرير المتدرج (strided convolution).
هذه فئة الإعدادات المخزنة لإعدادات نموذج PvtV2Model. تُستخدم لاستحداث نموذج Pvt V2 وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ OpenGVLab/pvt_v2_b0
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
مثال:
>>> 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
فئة transformers.PvtV2ForImageClassification
< source >( config: PvtV2Config )
المعاملات
- config (PvtV2Config) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Pvt-v2 محوّل مع رأس تصنيف صور في الأعلى (طبقة خطية فوق الحالة المخفية النهائية لرمز [CLS])، على سبيل المثال لـ ImageNet.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
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)
المعاملات
- pixel_values (
torch.Tensorمن الشكل(batch_size, num_channels, image_size, image_size)، اختياري) — المصفوفات المقابلة للصور المدخلة. يمكن الحصول على قيم البكسلات باستخدام PvtImageProcessor. راجع PvtImageProcessor.call() للتفاصيل (يستخدمprocessor_classPvtImageProcessor لمعالجة الصور). - labels (
torch.LongTensorof shape(batch_size,), اختياري) — التسميات لحساب خسارة تصنيف الصور/الانحدار. يجب أن تكون الفهارس ضمن[0, ..., config.num_labels - 1]. إذا كانconfig.num_labels == 1يتم حساب خسارة الانحدار (خسارة متوسط المربع)، وإذا كانconfig.num_labels > 1يتم حساب خسارة التصنيف (الإنتروبيا المتقاطعة). - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - output_hidden_states (
bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجعhidden_statesضمن الموترات المُرجعة للحصول على مزيد من التفاصيل. - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.
يعيد
ImageClassifierOutput أو tuple(torch.Tensor)
ImageClassifierOutput أو مجموعة مرتبة من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
حسب الإعداد (PvtV2Config) والمدخلات.
تتجاوز طريقة PvtV2ForImageClassification الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorمن الشكل(1,)، اختياري، يُعاد عند توفيرlabels) — خسارة التصنيف (أو الانحدار إذا كان config.num_labels==1).logits (
torch.Tensorمن الشكل(batch_size, config.num_labels)) — درجات التصنيف (أو الانحدار إذا كان config.num_labels==1) (قبل SoftMax).hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل مرحلة) من الشكل(batch_size, sequence_length, hidden_size). حالات مخفية (تُسمى أيضًا خرائط الميزات) للنموذج عند إخراج كل مرحلة.attentions (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, patch_size, sequence_length).أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
مثال:
>>> 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
فئة transformers.PvtV2Model
< source >( config: PvtV2Config )
المعاملات
- config (PvtV2Config) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Pvt V2 الأساسي الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( pixel_values: Tensoroutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutput or tuple(torch.Tensor)
المعاملات
- pixel_values (
torch.Tensorمن الشكل(batch_size, num_channels, image_size, image_size)) — المصفوفات المقابلة للصور المدخلة. يمكن الحصول على قيم البكسلات باستخدام PvtImageProcessor. راجع PvtImageProcessor.call() للتفاصيل (يستخدمprocessor_classPvtImageProcessor لمعالجة الصور). - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - output_hidden_states (
bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجعhidden_statesضمن الموترات المُرجعة للحصول على مزيد من التفاصيل. - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.
يعيد
BaseModelOutput أو tuple(torch.Tensor)
BaseModelOutput أو مجموعة مرتبة من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (PvtV2Config) والمدخلات.
تُعيد طريقة PvtV2Model الخاصة بالتقديم (forward) تعريف الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
last_hidden_state (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من النموذج.hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) من الشكل(batch_size, sequence_length, hidden_size).حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
attentions (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.