Transformers documentation
XLNet
نُشر هذا النموذج في أوراق HF في 19-06-2019، وأُضيف إلى مكتبة Hugging Face Transformers في 16-11-2020.
XLNet
نظرة عامة
قُدِّم نموذج XLNet في XLNet: Generalized Autoregressive Pretraining for Language Understanding من قِبل Zhilin Yang وZihang Dai وYiming Yang وJaime Carbonell وRuslan Salakhutdinov وQuoc V. Le. يُعد XLnet امتدادًا لنموذج Transformer-XL، حيث تم تدريبه مسبقًا باستخدام طريقة ذاتية التوليد (autoregressive) لتعلّم السياقات ثنائية الاتجاه عن طريق تعظيم الاحتمالية المتوقعة عبر جميع التباديل (permutations) لترتيب تفكيك تسلسل الإدخال.
المستخلص من الورقة البحثية هو كالتالي:
بفضل القدرة على نمذجة السياقات ثنائية الاتجاه، تحقق أساليب التدريب المسبق القائمة على الترميز التلقائي لإزالة الضوضاء، مثل BERT، أداءً أفضل من أساليب التدريب المسبق القائمة على نمذجة اللغة التلقائية. ومع ذلك، فإن اعتماد BERT على إتلاف المدخلات عبر الأقنعة يؤدي إلى إهمال الاعتماد بين المواضع المقنّعة، مما يسبب فجوة بين التدريب المسبق والتدريب الدقيق. في ضوء هذه المزايا والعيوب، نقترح XLNet، وهو أسلوب تدريب مسبق تلقائي عام (1) يتيح تعلم السياقات ثنائية الاتجاه عن طريق تعظيم الاحتمال المتوقع عبر جميع التباديل لترتيب التحليل، و(2) يتغلب على قيود BERT بفضل صياغته التلقائية. علاوة على ذلك، يدمج XLNet أفكارًا من Transformer-XL، وهو نموذج تلقائي متقدم، في التدريب المسبق. تجريبيًا، في ظل إعدادات تجارب قابلة للمقارنة، يتفوق XLNet على BERT في 20 مهمة، وغالبًا بفارق كبير، بما في ذلك الإجابة على الأسئلة، والاستدلال اللغوي الطبيعي، وتحليل المشاعر، وترتيب المستندات.
تمت مساهمة هذا النموذج من قِبل thomwolf. يمكن العثور على الكود الأصلي هنا.
نصائح للاستخدام
- يمكن التحكم في نمط الانتباه المحدد أثناء التدريب والاختبار باستخدام مدخل
perm_mask. - نظراً لصعوبة تدريب نموذج ذاتي التوليد بالكامل عبر مختلف ترتيبات التحليل، يتم تدريب XLNet مسبقاً باستخدام مجموعة فرعية فقط من رموز الإخراج كأهداف، يتم اختيارها عبر مدخل
target_mapping. - لاستخدام XLNet في فك الترميز التسلسلي (أي ليس في إعداد ثنائي الاتجاه بالكامل)، استخدم مدخلات
perm_maskوtarget_mappingللتحكم في نطاق الانتباه والمخرجات - يُعدّ XLNet من النماذج القليلة التي لا يوجد لها حدّ أقصى لطول التسلسل.
- لا يُعد XLNet نموذجًا ذاتي التوليد تقليديًا، بل يستخدم استراتيجية تدريب مبنية على ذلك. إذ يُعيد ترتيب الرموز في الجملة، ثم يتيح للنموذج استخدام الرموز الأخيرة n للتنبؤ بالرمز n+1. وبما أن كل هذا يتم بواسطة قناع، فإن الجملة تُدخل فعليًا إلى النموذج بالترتيب الصحيح، لكن بدلًا من إخفاء الرموز الأولى n من أجل n+1، يستخدم XLNet قناعًا يخفي الرموز السابقة في ترتيب معين من 1 إلى طول التسلسل.
- يستخدم XLNet أيضًا آلية التكرار نفسها التي يستخدمها Transformer-XL لبناء الاعتماديات طويلة المدى.
الموارد
- دليل مهمة تصنيف النصوص
- دليل مهمة تصنيف الرموز
- دليل مهمة الإجابة عن الأسئلة
- دليل مهمة نمذجة اللغة السببية
- دليل مهمة الاختيار من متعدد
XLNetConfig
فئة transformers.XLNetConfig
< 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 = 32000d_model: int = 1024n_layer: int = 24n_head: int = 16d_inner: int = 4096d_head: int | None = Noneff_activation: str = 'gelu'attn_type: str = 'bi'initializer_range: float = 0.02layer_norm_eps: float = 1e-12dropout: float | int = 0.1mem_len: int | None = 512reuse_len: int | None = Noneuse_mems_eval: bool = Trueuse_mems_train: bool = Falsebi_data: bool = Falseclamp_len: int = -1same_length: bool = Falsesummary_type: str = 'last'summary_use_proj: bool = Truesummary_activation: str = 'tanh'summary_last_dropout: float | int = 0.1start_n_top: int = 5end_n_top: int = 5pad_token_id: int | None = 5bos_token_id: int | None = 1eos_token_id: int | list[int] | None = 2tie_word_embeddings: bool = True )
المعاملات
- vocab_size (
int، اختياري، القيمة الافتراضية32000) — حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطةinput_ids. - d_model (
int، اختياري، القيمة الافتراضية1024) — حجم طبقات المُشفِّر وطبقة المُجمِّع. - n_layer (
int، اختياري، القيمة الافتراضية24) — عدد الطبقات المخفية في مُفكِّك Transformer. - n_head (
int، اختياري، القيمة الافتراضية16) — عدد رؤوس الانتباه لكل طبقة انتباه في مُفكِّك Transformer. - d_inner (
int، اختياري، القيمة الافتراضية4096) — أبعاد تمثيلات MLP. - d_head (
int، اختياري) — بعدّية رأس الانتباه. إذا كانت القيمة None، فستتخذ القيمة الافتراضية hidden_size // num_attention_heads - ff_activation (
strأوCallable، اختياري، القيمة الافتراضية"gelu") — دالة التنشيط غير الخطية (دالة أو نص). إذا كان نصًا، فالدوال المدعومة هي"gelu"و"relu"و"silu"و"gelu_new". - attn_type (
str، اختياري، القيمة الافتراضية"bi") — نوع الانتباه المستخدم في النموذج. اضبط"bi"لـ XLNet، و"uni"لـ Transformer-XL. - initializer_range (
float، اختياري، القيمة الافتراضية0.02) — الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان. - layer_norm_eps (
float, اختياري، القيمة الافتراضية1e-12) — قيمة الإيبسلون المستخدمة في طبقات تطبيع الطبقة. - dropout (
Union[float, int]، اختياري، القيمة الافتراضية0.1) — النسبة لجميع طبقات dropout. - mem_len (
intأوNone، اختياري) — عدد الرموز التي سيتم تخزينها مؤقتًا. لن يتم إعادة حساب أزواج المفتاح/القيمة التي تم حسابها مسبقًا في تمريرة سابقة. راجع البدء السريع لمزيد من المعلومات. - reuse_len (
int، اختياري) — عدد الرموز في الدفعة الحالية التي سيتم تخزينها مؤقتًا وإعادة استخدامها في المستقبل. - use_mems_eval (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب على النموذج استخدام آلية الذاكرة التكرارية في وضع التقييم أم لا. - use_mems_train (
bool, optional, defaults toFalse) — Whether or not the model should make use of the recurrent memory mechanism in train mode.For pretraining, it is recommended to set `use_mems_train` to `True`. For fine-tuning, it is recommended to set `use_mems_train` to `False` as discussed [here](https://github.com/zihangdai/xlnet/issues/41#issuecomment-505102587). If `use_mems_train` is set to `True`, one has to make sure that the train batches are correctly pre-processed, *e.g.* `batch_1 = [[This line is], [This is the]]` and `batch_2 = [[ the first line], [ second line]]` and that all batches are of equal size. - bi_data (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم استخدام خط أنابيب إدخال ثنائي الاتجاه أم لا. عادةً ما تُضبط إلىTrueأثناء التدريب المسبق وإلىFalseأثناء الضبط الدقيق. - clamp_len (
int، اختياري، القيمة الافتراضية -1) — تقييد جميع المسافات النسبية الأكبر من clamp_len. تعيين هذا السمة إلى -1 يعني عدم وجود تقييد. - same_length (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم استخدام نفس طول الانتباه لكل رمز. - summary_type (
str, اختياري, الافتراضي هو "last") — الحُجّة المستخدمة عند تنفيذ تلخيص التسلسل. تُستخدم في نماذج تصنيف التسلسل ونماذج الاختيار المتعدد. يجب أن تكون إحدى الخيارات التالية:"last": خذ حالة الترميز المخفية للرمز الأخير (مثل XLNet)."first": خذ حالة الترميز المخفية للرمز الأول (مثل BERT)."mean": احسب متوسط حالات الترميز المخفية لجميع الرموز."cls_index": قدّم مصفوفة (Tensor) تحدد موضع رمز التصنيف (كما في GPT/GPT-2)."attn": غير مُنفَّذ حاليًا، استخدم الانتباه متعدد الرؤوس.
- summary_use_proj (
bool، اختياري، القيمة الافتراضيةTrue) — الحُجّة المستخدمة عند إجراء تلخيص التسلسل. تُستخدم في نماذج تصنيف التسلسل ونماذج الاختيار المتعدد. ما إذا كان يجب إضافة إسقاط بعد استخراج المتجه أم لا. - summary_activation (
str, اختياري) — الحُجّة المستخدمة عند إجراء تلخيص التسلسل. تُستخدم في نماذج تصنيف التسلسل ونماذج الاختيار المتعدد. مرّر"tanh"لتفعيل دالة tanh على المخرجات، وأي قيمة أخرى لن تُفعّل أي دالة. - summary_last_dropout (
float، اختياري، القيمة الافتراضية 0.1) — يُستخدم في نماذج تصنيف التسلسل واختيار متعدد. نسبة الإسقاط (dropout) المستخدمة بعد الإسقاط (projection) والتفعيل (activation). - start_n_top (
int، اختياري، القيمة الافتراضية 5) — يُستخدم في سكربت تقييم SQuAD. - end_n_top (
int، اختياري، القيمة الافتراضية 5) — يُستخدم في سكريبت تقييم SQuAD. - pad_token_id (
int، اختياري، القيمة الافتراضية5) — معرّف الرمز المستخدم للتعبئة في المفردات. - bos_token_id (
int، اختياري، القيمة الافتراضية1) — معرّف الرمز المستخدم لبدء البث في المفردات. - eos_token_id (
Union[int, list[int]]، اختياري، القيمة الافتراضية2) — معرّف الرمز المستخدم لنهاية التدفق في المفردات. - tie_word_embeddings (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب ربط ترميزات الأوزان (weight embeddings) وفقاً لخريطةtied_weights_keysالخاصة بالنموذج.
هذه فئة الإعدادات المخزنة لإعدادات نموذج XLNetModel. تُستخدم لتوليد نموذج Xlnet وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن إنشاء إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ xlnet/xlnet-large-cased
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
أمثلة:
>>> from transformers import XLNetConfig, XLNetModel
>>> # Initializing a XLNet configuration
>>> configuration = XLNetConfig()
>>> # Initializing a model (with random weights) from the configuration
>>> model = XLNetModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configXLNetTokenizer
فئة transformers.XLNetTokenizer
< source >( vocab: str | list[tuple[str, float]] | None = Noneunk_id: int = 0do_lower_case = Falseremove_space = Truekeep_accents = Falsebos_token = '<s>'eos_token = '</s>'unk_token = '<unk>'sep_token = '<sep>'pad_token = '<pad>'cls_token = '<cls>'mask_token = '<mask>'_spm_precompiled_charsmap = Noneadditional_special_tokens = None**kwargs )
المعاملات
- vocab (
list of tuples، اختياري) — قائمة من الأزواج (رمز، درجة) لنموذج Unigram. إذا لم يُقدَّم، تُستخدم قائمة فارغة. - unk_id (
int، اختياري، القيمة الافتراضية 0) — معرّف الرمز المجهول في المفردات. - do_lower_case (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب تحويل المدخلات إلى أحرف صغيرة عند تقسيم النص إلى رموز. - remove_space (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إزالة المسافات الزائدة عند الترميز (حذف المسافات الزائدة قبل النص وبعده). - keep_accents (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب الإبقاء على الحركات عند تقسيم النص إلى رموز. - bos_token (
str, اختياري, الافتراضي هو"<s>") — رمز بداية التسلسل الذي تم استخدامه أثناء التدريب المسبق. يمكن استخدامه كرمز لتصنيف التسلسل. عند بناء تسلسل باستخدام الرموز الخاصة، لا يُستخدم هذا الرمز لبداية التسلسل، بل يُستخدم رمز cls_token.عند بناء تسلسل باستخدام الرموز الخاصة، لا يُستخدم هذا الرمز لبدء التسلسل. الرمز المستخدم هو
cls_token. - eos_token (
str, اختياري, الافتراضي هو"</s>") — رمز نهاية التسلسل. عند بناء تسلسل باستخدام الرموز الخاصة، لا يُستخدم هذا الرمز لنهاية التسلسل، بل يُستخدم رمز الفاصل (sep_token) لهذا الغرض.عند بناء تسلسل باستخدام الرموز الخاصة، لا يُستخدم هذا الرمز لنهاية التسلسل. الرمز المستخدم هو
sep_token. - unk_token (
str، اختياري، القيمة الافتراضية"<unk>") — رمز المجهول. لا يمكن تحويل الرمز غير الموجود في المفردات إلى معرّف، لذا يُعيَّن هذا الرمز بدلاً منه. - sep_token (
str، اختياري، القيمة الافتراضية"<sep>") — رمز الفاصل، الذي يُستخدم عند بناء تسلسل من عدة تسلسلات، على سبيل المثال تسلسلان لتصنيف التسلسل، أو نص وسؤال للإجابة على الأسئلة. كما يُستخدم كآخر رمز في تسلسل مبني باستخدام الرموز الخاصة. - pad_token (
str، اختياري، القيمة الافتراضية"<pad>") — الرمز المستخدم للتعبئة، على سبيل المثال عند تجميع تسلسلات ذات أطوال مختلفة. - cls_token (
str، اختياري، القيمة الافتراضية"<cls>") — رمز التصنيف الذي يُستخدم عند إجراء تصنيف التسلسل (تصنيف التسلسل بأكمله بدلاً من التصنيف لكل رمز على حدة). وهو الرمز الأول في التسلسل عند بناؤه باستخدام الرموز الخاصة. - mask_token (
str، اختياري، القيمة الافتراضية"<mask>") — الرمز المستخدم لإخفاء القيم. هذا هو الرمز المستخدم عند تدريب هذا النموذج باستخدام نمذجة اللغة المقنّعة. وهو الرمز الذي سيحاول النموذج التنبؤ به. - additional_special_tokens (
list[str]، اختياري، القيمة الافتراضية["<eop>", "<eod>"]) — رموز خاصة إضافية يستخدمها مُجزّئ النص.
أنشئ مُجزِّئ XLNet (مدعوم بمكتبة tokenizers من HuggingFace). مبني على Unigram.
يرث هذا المُجزِّئ من TokenizersBackend الذي يحتوي على معظم الطرق الرئيسية. ينبغي على المستخدمين الرجوع إلى هذه الفئة الأصلية لمزيد من المعلومات حول تلك الطرق.
get_special_tokens_mask
< source >( token_ids_0: list[int]token_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
المعاملات
- token_ids_0 — قائمة بالمعرّفات (IDs) للتسلسل (الذي قد يكون مُنسّقًا بالفعل).
- token_ids_1 — غير مستخدم عندما يكون
already_has_special_tokens=True. يجب أن يكون None في هذه الحالة. - already_has_special_tokens — ما إذا كانت التسلسلة منسّقة مسبقًا باستخدام الرموز الخاصة.
يعيد
قائمة من الأعداد الصحيحة في المدى [0, 1]
1 لرمز خاص، 0 لرمز التسلسل.
استرجاع معرّفات التسلسلات من قائمة الرموز التي لم تُضف إليها أي رموز خاصة.
للمُرمِّزات السريعة، تستدعي مُجمِّعات البيانات هذه الدالة مع already_has_special_tokens=True لبناء قناع فوق تسلسل مُنسَّق مسبقًا. في تلك الحالة، نحسب القناع عن طريق التحقق من العضوية في all_special_ids.
المخرجات الخاصة بـ XLNet
فئة transformers.models.xlnet.modeling_xlnet.XLNetModelOutput
< source >( last_hidden_state: Tensormems: list[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )
المعاملات
- last_hidden_state (
torch.Tensorبشكل(batch_size, num_predict, hidden_size)) — تسلسل حالات مخفية في الطبقة الأخيرة من النموذج.يتوافق
num_predictمعtarget_mapping.shape[1]. إذا كانtarget_mappingهوNone، فإنnum_predictيتوافق معsequence_length. - mems (
list[torch.Tensor]بطولconfig.n_layers) — تحتوي على حالات مخفية محسوبة مسبقًا. يمكن استخدامها (انظر مدخلmems) لتسريع فك الترميز التسلسلي. يجب عدم تمرير معرّفات الرموز التي تم تقديم ماضيها إلى هذا النموذج كـinput_idsلأنها تم حسابها بالفعل. - 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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
نوع المخرجات لـ XLNetModel.
فئة transformers.models.xlnet.modeling_xlnet.XLNetLMHeadModelOutput
< source >( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonemems: list[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )
المعاملات
- loss (
torch.Tensorمن الشكل (1,)، اختياري، يُعاد عند توفيرlabels) — فقدان نمذجة اللغة (لتوقع الرمز التالي). - logits (
torch.Tensorبشكل(batch_size, num_predict, config.vocab_size)) — درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).يتوافق
num_predictمعtarget_mapping.shape[1]. إذا كانtarget_mappingهوNone، فإنnum_predictيتوافق معsequence_length. - mems (
list[torch.Tensor]بطولconfig.n_layers) — تحتوي على حالات مخفية محسوبة مسبقًا. يمكن استخدامها (انظر مدخلmems) لتسريع فك الترميز التسلسلي. يجب عدم تمرير معرّفات الرموز التي تم تقديم حالتها السابقة إلى هذا النموذج كـinput_idsلأنها تم حسابها بالفعل. - 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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
نوع المخرجات لـ XLNetLMHeadModel.
فئة transformers.models.xlnet.modeling_xlnet.XLNetForSequenceClassificationOutput
< source >( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonemems: list[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )
المعاملات
- loss (
torch.Tensorمن الشكل(1,)، اختياري، يُعاد عند توفيرlabel) — خسارة التصنيف (أو الانحدار إذا كان config.num_labels==1). - logits (
torch.Tensorمن الشكل(batch_size, config.num_labels)) — درجات التصنيف (أو الانحدار إذا كان config.num_labels==1) (قبل SoftMax). - mems (
list[torch.Tensor]بطولconfig.n_layers) — تحتوي على حالات مخفية محسوبة مسبقًا. يمكن استخدامها (انظر مدخلmems) لتسريع فك الترميز التسلسلي. يجب عدم تمرير معرّفات الرموز التي تم تقديم حالتها السابقة إلى هذا النموذج كـinput_idsنظرًا لأنّها قد حُسبت بالفعل. - 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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
نوع المخرجات لـ XLNetForSequenceClassification.
فئة transformers.models.xlnet.modeling_xlnet.XLNetForMultipleChoiceOutput
< source >( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonemems: list[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )
المعاملات
- loss (
torch.Tensorمن الشكل (1,)، اختياري، يُعاد عند توفيرlabels) — خسارة التصنيف. - logits (
torch.Tensorبشكل(batch_size, num_choices)) — هو البُعد الثاني من المصفوفات المدخلة. (انظر في الأعلى). في الأعلى). في الأعلى).درجات التصنيف (قبل SoftMax).
- mems (
list[torch.Tensor]بطولconfig.n_layers) — تحتوي على حالات مخفية محسوبة مسبقًا. يمكن استخدامها (انظر مدخلmems) لتسريع فك الترميز التسلسلي. يجب عدم تمرير معرّفات الرموز التي تم تقديم حالتها السابقة إلى هذا النموذج كـinput_idsلأنها تم حسابها بالفعل. - 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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
نوع المخرجات لـ XLNetForMultipleChoice.
فئة transformers.models.xlnet.modeling_xlnet.XLNetForTokenClassificationOutput
< source >( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonemems: list[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )
المعاملات
- loss (
torch.Tensorمن الشكل(1,)، اختياري، يُعاد عند توفيرlabels) — خسارة التصنيف. - logits (
torch.Tensorمن الشكل(batch_size, sequence_length, config.num_labels)) — درجات التصنيف (قبل SoftMax). - mems (
list[torch.Tensor]بطولconfig.n_layers) — تحتوي على حالات مخفية محسوبة مسبقًا. يمكن استخدامها (انظر مدخلmems) لتسريع فك الترميز التسلسلي. يجب عدم تمرير معرّفات الرموز التي تم تقديم ماضيها إلى هذا النموذج كـinput_idsلأنها تم حسابها بالفعل. - 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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
نوع المخرجات الخاص بـ XLNetForTokenClassificationOutput.
فئة transformers.models.xlnet.modeling_xlnet.XLNetForQuestionAnsweringSimpleOutput
< source >( loss: typing.Optional[torch.Tensor] = Nonestart_logits: typing.Optional[torch.Tensor] = Noneend_logits: typing.Optional[torch.Tensor] = Nonemems: list[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )
المعاملات
- loss (
torch.Tensorمن الشكل(1,)، اختياري، يُعاد عند توفيرlabels) — خسارة استخراج المدى الكلي هي مجموع دالة التدرج المتقاطع (Cross-Entropy) لموقعي البداية والنهاية. - start_logits (
torch.Tensorمن الشكل(batch_size, sequence_length,)) — درجات بداية المقطع (قبل SoftMax). - end_logits (
torch.Tensorمن الشكل(batch_size, sequence_length,)) — درجات نهاية المقطع (قبل SoftMax). - mems (
list[torch.Tensor]بطولconfig.n_layers) — تحتوي على حالات مخفية محسوبة مسبقًا. يمكن استخدامها (انظر مدخلmems) لتسريع فك الترميز التسلسلي. يجب عدم تمرير معرّفات الرموز التي تم تقديم حالتها السابقة إلى هذا النموذج كـinput_idsلأنها تم حسابها بالفعل. - 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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
نوع المخرجات لـ XLNetForQuestionAnsweringSimple.
فئة transformers.models.xlnet.modeling_xlnet.XLNetForQuestionAnsweringOutput
< source >( loss: typing.Optional[torch.Tensor] = Nonestart_top_log_probs: typing.Optional[torch.Tensor] = Nonestart_top_index: typing.Optional[torch.LongTensor] = Noneend_top_log_probs: typing.Optional[torch.Tensor] = Noneend_top_index: typing.Optional[torch.LongTensor] = Nonecls_logits: typing.Optional[torch.Tensor] = Nonemems: list[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )
المعاملات
- loss (
torch.Tensorof shape(1,), اختياري، يُعاد إذا تم توفير كل منstart_positionsوend_positions) — خسارة التصنيف كمجموع خسائر تصنيف رمز البداية، رمز النهاية (و is_impossible إذا تم توفيره). - start_top_log_probs (
torch.Tensorمن الشكل(batch_size, config.start_n_top)، اختياري، يُعاد إذا لم يُقدَّمstart_positionsأوend_positions) — احتمالات السجل (Log probabilities) لأفضل config.start_n_top من احتمالات رموز البداية (بحث الحزمة). - start_top_index (
torch.LongTensorمن الشكل(batch_size, config.start_n_top)، اختياري، يُعاد إذا لم يُقدَّمstart_positionsأوend_positions) — فهارس لأفضل config.start_n_top احتمالات لرمز البداية (بحث الحزمة). - end_top_log_probs (
torch.Tensorمن الشكل(batch_size, config.start_n_top * config.end_n_top)، اختياري، يُعاد إذا لم يُقدَّمstart_positionsأوend_positions) — احتمالات السجل (Log probabilities) لأفضلconfig.start_n_top * config.end_n_topمن احتمالات رموز النهاية (بحث الحزمة). - end_top_index (
torch.LongTensorمن الشكل(batch_size, config.start_n_top * config.end_n_top)، اختياري، يُعاد إذا لم يُقدَّمstart_positionsأوend_positions) — فهارس لأفضلconfig.start_n_top * config.end_n_topاحتمالات لرمز النهاية (بحث الحزمة). - cls_logits (
torch.Tensorمن الشكل(batch_size,)، اختياري، يُعاد إذا لم يُقدَّمstart_positionsأوend_positions) — احتمالات اللوغاريتمية لوسمis_impossibleللإجابات. - mems (
list[torch.Tensor]بطولconfig.n_layers) — تحتوي على حالات مخفية محسوبة مسبقًا. يمكن استخدامها (انظر مدخلmems) لتسريع فك الترميز التسلسلي. يجب عدم تمرير معرّفات الرموز التي تم تقديم حالتها السابقة إلى هذا النموذج كـinput_idsنظرًا لأنّها قد حُسبت بالفعل. - 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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
نوع المخرجات الخاص بـ XLNetForQuestionAnswering.
XLNetModel
فئة transformers.XLNetModel
< source >( config: XLNetConfig )
المعاملات
- config (XLNetConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Xlnet الأساسي الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonemems: typing.Optional[torch.Tensor] = Noneperm_mask: typing.Optional[torch.Tensor] = Nonetarget_mapping: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinput_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_mems: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → XLNetModelOutput or tuple(torch.Tensor)
المعاملات
- input_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على المؤشرات باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل. ما هي معرّفات الإدخال؟يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- attention_mask (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- mems (
list[torch.Tensor]بطولconfig.n_layers) — تحتوي على حالات مخفية محسوبة مسبقًا (انظرmemsالمخرجات أدناه). يمكن استخدامها لتسريع فك الترميز التسلسلي. يجب عدم تمرير معرّفات الرموز التي تم تقديم حالتها السابقة إلى هذا النموذج كـinput_idsلأنها تم حسابها بالفعل.يجب تعيين
use_memsإلىTrueللاستفادة منmems. - perm_mask (
torch.Tensorبشكل(batch_size, sequence_length, sequence_length), اختياري) — قناع لتحديد نمط الانتباه لكل رمز إدخال، مع اختيار القيم من [0, 1]: إذا كان perm_mask[k, i, j] = 0، فإن i ينتبه إلى j في الدفعة k؛ وإذا كان perm_mask[k, i, j] = 1، فإن i لا ينتبه إلى j في الدفعة k. إذا لم يتم تعيينه، ينتبه كل رمز إلى جميع الرموز الأخرى (انتباه ثنائي الاتجاه كامل). يُستخدم فقط أثناء ما قبل التدريب (لتحديد ترتيب التحليل) أو للتفكيك التسلسلي (التوليد).[0, 1]:- إذا كان
perm_mask[k, i, j] = 0، فإن i تنتبه إلى j في الدفعة k؛ - إذا كان
perm_mask[k, i, j] = 1، فإن i لا تنتبه إلى j في الدفعة k.
إذا لم يتم ضبطه، فإن كل رمز يولي اهتمامًا لجميع الرموز الأخرى (انتباه ثنائي الاتجاه كامل). يُستخدم فقط أثناء التدريب المسبق (لتحديد ترتيب التفكيك) أو للتفكيك التسلسلي (التوليد).
- إذا كان
- target_mapping (
torch.Tensorمن الشكل(batch_size, num_predict, sequence_length)، اختياري) — قناع يُحدّد الرموز الإخراجية التي يجب استخدامها. إذا كانtarget_mapping[k, i, j] = 1، فإن التنبؤ رقم i في الدفعة k يقع على الرمز رقم j. يُستخدم فقط أثناء التدريب المسبق للتنبؤ الجزئي أو للتفكيك التسلسلي (التوليد). - token_type_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار المؤشرات من[0, 1]:- 0 يتوافق مع رمز sentence A،
- 1 يتوافق مع رمز sentence B.
- input_mask (
torch.Tensorبشكلbatch_size, sequence_length, اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. وهو العكس منattention_mask, أي بـ 0 للرموز الفعلية و 1 للحشو، وهو ما يُحافظ عليه للتوافق مع قاعدة الكود الأصلية.قيم الأقنعة المختارة في
[0, 1]:- 1 للرموز التي تكون مقنّعة،
- 0 للرموز التي ليست مقنّعة.
يمكنك استخدام واحد فقط من
input_maskوattention_mask. - inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - use_mems (
bool, اختياري) — ما إذا كان سيتم استخدام حالات الذاكرة لتسريع فك الترميز التسلسلي. إذا تم ضبطه علىTrue، فسيستخدم النموذج الحالات المخفية من عمليات المرور الأمامية السابقة لحساب الانتباه، مما قد يحسّن الأداء بشكل كبير لمهام فك الترميز التسلسلي. - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - output_hidden_states (
bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجعhidden_statesضمن الموترات المُرجعة للحصول على مزيد من التفاصيل. - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.
يعيد
XLNetModelOutput أو tuple(torch.Tensor)
أُكْجَة XLNetModelOutput أو مجموعة مرتبة من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
حسب الإعداد (XLNetConfig) والمدخلات.
تتجاوز طريقة XLNetModel الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
last_hidden_state (
torch.Tensorمن الشكل(batch_size, num_predict, hidden_size)) — تسلسل حالات الإخفاء في الطبقة الأخيرة من النموذج.يتوافق
num_predictمعtarget_mapping.shape[1]. إذا كانtarget_mappingهوNone، فإنnum_predictيتوافق معsequence_length.mems (
list[torch.Tensor]بطولconfig.n_layers) — يحتوي على حالات مخفية محسوبة مسبقًا. يمكن استخدامه (انظر مدخلmems) لتسريع فك الترميز التسلسلي. يجب عدم تمرير معرّفات الرموز التي تم تقديم ماضيها إلى هذا النموذج كـinput_idsلأنها تم حسابها بالفعل.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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
XLNetLMHeadModel
فئة transformers.XLNetLMHeadModel
< source >( config: XLNetConfig )
المعاملات
- config (XLNetConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج XLNet مع رأس لنمذجة اللغة في الأعلى (طبقة خطية بأوزان مرتبطة بتضمينات الإدخال).
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonemems: typing.Optional[torch.Tensor] = Noneperm_mask: typing.Optional[torch.Tensor] = Nonetarget_mapping: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinput_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneuse_mems: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs ) → XLNetLMHeadModelOutput or tuple(torch.Tensor)
المعاملات
- input_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على المؤشرات باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل. ما هي معرّفات الإدخال؟يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- attention_mask (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- mems (
list[torch.Tensor]بطولconfig.n_layers) — تحتوي على حالات مخفية محسوبة مسبقًا (انظرmemsالمخرجات أدناه). يمكن استخدامها لتسريع فك الترميز التسلسلي. يجب عدم تمرير معرّفات الرموز التي تم تقديم حالتها السابقة إلى هذا النموذج كـinput_idsلأنها تم حسابها بالفعل.يجب تعيين
use_memsإلىTrueللاستفادة منmems. - perm_mask (
torch.Tensorبشكل(batch_size, sequence_length, sequence_length), اختياري) — قناع لتحديد نمط الانتباه لكل رمز إدخال، مع اختيار القيم من [0, 1]: إذا كان perm_mask[k, i, j] = 0، فإن i ينتبه إلى j في الدفعة k؛ وإذا كان perm_mask[k, i, j] = 1، فإن i لا ينتبه إلى j في الدفعة k. إذا لم يتم تعيينه، ينتبه كل رمز إلى جميع الرموز الأخرى (انتباه ثنائي الاتجاه كامل). يُستخدم فقط أثناء ما قبل التدريب (لتحديد ترتيب التحليل) أو للتفكيك التسلسلي (التوليد).[0, 1]:- إذا كان
perm_mask[k, i, j] = 0، فإن i تنتبه إلى j في الدفعة k؛ - إذا كان
perm_mask[k, i, j] = 1، فإن i لا تنتبه إلى j في الدفعة k.
إذا لم يتم ضبطه، فإن كل رمز يولي اهتمامًا لجميع الرموز الأخرى (انتباه ثنائي الاتجاه كامل). يُستخدم فقط أثناء التدريب المسبق (لتحديد ترتيب التفكيك) أو للتفكيك التسلسلي (التوليد).
- إذا كان
- target_mapping (
torch.Tensorمن الشكل(batch_size, num_predict, sequence_length)، اختياري) — قناع يُحدّد الرموز الإخراجية التي يجب استخدامها. إذا كانtarget_mapping[k, i, j] = 1، فإن التنبؤ رقم i في الدفعة k يقع على الرمز رقم j. يُستخدم فقط أثناء التدريب المسبق للتنبؤ الجزئي أو للتفكيك التسلسلي (التوليد). - token_type_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار المؤشرات من[0, 1]:- 0 يتوافق مع رمز sentence A،
- 1 يتوافق مع رمز sentence B.
- input_mask (
torch.Tensorبشكلbatch_size, sequence_length, اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. وهو العكس منattention_mask, أي بـ 0 للرموز الفعلية و 1 للحشو، وهو ما يُحافظ عليه للتوافق مع قاعدة الكود الأصلية.قيم الأقنعة المختارة في
[0, 1]:- 1 للرموز التي تكون مقنّعة،
- 0 للرموز التي ليست مقنّعة.
يمكنك استخدام واحد فقط من
input_maskوattention_mask. - inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - labels (
torch.LongTensorبشكل(batch_size, num_predict), اختياري) — تسميات لنمذجة اللغة المقنّعة.num_predictتتوافق معtarget_mapping.shape[1]. إذاtarget_mappingكانتNone, فإنnum_predictتتوافق معsequence_length.يجب أن تتوافق التسميات مع الكلمات المدخلة المقنّعة التي ينبغي التنبؤ بها، ويعتمد ذلك على
target_mapping. لاحظ أنه من أجل تنفيذ نمذجة اللغة التلقائية التكرارية القياسية، يجب إضافة رمزإلى input_ids(راجع الدالةprepare_inputs_for_generationوالأمثلة أدناه)تُختار الفهارس ضمن
[-100, 0, ..., config.vocab_size]وتُتجاهل جميع التسميات المُعيّنة على-100، حيث يُحسب الخسارة فقط للتسميات ضمن[0, ..., config.vocab_size] - use_mems (
bool, اختياري) — ما إذا كان سيتم استخدام حالات الذاكرة لتسريع فك الترميز التسلسلي. إذا تم ضبطه علىTrue، فسيستخدم النموذج الحالات المخفية من عمليات المرور الأمامية السابقة لحساب الانتباه، مما قد يحسّن الأداء بشكل كبير لمهام فك الترميز التسلسلي. - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - output_hidden_states (
bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجعhidden_statesضمن الموترات المُرجعة للحصول على مزيد من التفاصيل. - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي. - logits_to_keep (
Union[int, torch.Tensor]، اختياري، القيمة الافتراضية0) — إذا كانint، يتم حساب logits لآخرlogits_to_keepرموز. إذا كانت القيمة0، يتم حساب logits لجميعinput_ids(حالة خاصة). لا يُحتاج إلى logits إلا للرمز الأخير في عملية التوليد، ويمكن أن يوفر حسابها لذلك الرمز وحده ذاكرة كبيرة، وهو أمر مهم بشكل ملحوظ للتسلسلات الطويلة أو حجم المفردات الكبير. إذا كانtorch.Tensor، يجب أن يكون بعدًا واحدًا (1D) ويتوافق مع الفهارس التي يجب الاحتفاظ بها في بُعد طول التسلسل. يكون هذا مفيدًا عند استخدام تنسيق المصفوفات المعبأة (packed tensor format) (بعد واحد لكل من الدفعة وطول التسلسل).
يعيد
XLNetLMHeadModelOutput أو tuple(torch.Tensor)
XLNetLMHeadModelOutput أو مجموعة مرتبة من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (XLNetConfig) والمدخلات.
تتجاوز طريقة XLNetLMHeadModel الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorمن الشكل (1,)، اختياري، يُعاد عند توفيرlabels) — خسارة نمذجة اللغة (لتوقع الرمز التالي).logits (
torch.Tensorمن الشكل(batch_size, num_predict, config.vocab_size)) — درجات التنبؤ لرأس نمذجة اللغة (درجات كل رمز في المفردات قبل SoftMax).يتوافق
num_predictمعtarget_mapping.shape[1]. إذا كانtarget_mappingهوNone، فإنnum_predictيتوافق معsequence_length.mems (
list[torch.Tensor]بطولconfig.n_layers) — يحتوي على حالات مخفية محسوبة مسبقًا. يمكن استخدامه (انظر مدخلmems) لتسريع فك الترميز التسلسلي. يجب عدم تمرير معرّفات الرموز التي تم تقديم ماضيها إلى هذا النموذج كـinput_idsلأنها تم حسابها بالفعل.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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
أمثلة:
>>> from transformers import AutoTokenizer, XLNetLMHeadModel
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("xlnet/xlnet-large-cased")
>>> model = XLNetLMHeadModel.from_pretrained("xlnet/xlnet-large-cased")
>>> # We show how to setup inputs to predict a next token using a bi-directional context.
>>> input_ids = torch.tensor(
... tokenizer.encode("Hello, my dog is very <mask>", add_special_tokens=False)
... ).unsqueeze(
... 0
... ) # We will predict the masked token
>>> perm_mask = torch.zeros((1, input_ids.shape[1], input_ids.shape[1]), dtype=torch.float)
>>> perm_mask[:, :, -1] = 1.0 # Previous tokens don't see last token
>>> target_mapping = torch.zeros(
... (1, 1, input_ids.shape[1]), dtype=torch.float
... ) # Shape [1, 1, seq_length] => let's predict one token
>>> target_mapping[
... 0, 0, -1
... ] = 1.0 # Our first (and only) prediction will be the last token of the sequence (the masked token)
>>> outputs = model(input_ids, perm_mask=perm_mask, target_mapping=target_mapping)
>>> next_token_logits = outputs[
... 0
... ] # Output has shape [target_mapping.size(0), target_mapping.size(1), config.vocab_size]
>>> # The same way can the XLNetLMHeadModel be used to be trained by standard auto-regressive language modeling.
>>> input_ids = torch.tensor(
... tokenizer.encode("Hello, my dog is very <mask>", add_special_tokens=False)
... ).unsqueeze(
... 0
... ) # We will predict the masked token
>>> labels = torch.tensor(tokenizer.encode("cute", add_special_tokens=False)).unsqueeze(0)
>>> assert labels.shape[0] == 1, "only one word will be predicted"
>>> perm_mask = torch.zeros((1, input_ids.shape[1], input_ids.shape[1]), dtype=torch.float)
>>> perm_mask[
... :, :, -1
... ] = 1.0 # Previous tokens don't see last token as is done in standard auto-regressive lm training
>>> target_mapping = torch.zeros(
... (1, 1, input_ids.shape[1]), dtype=torch.float
... ) # Shape [1, 1, seq_length] => let's predict one token
>>> target_mapping[
... 0, 0, -1
... ] = 1.0 # Our first (and only) prediction will be the last token of the sequence (the masked token)
>>> outputs = model(input_ids, perm_mask=perm_mask, target_mapping=target_mapping, labels=labels)
>>> loss = outputs.loss
>>> next_token_logits = (
... outputs.logits
... ) # Logits have shape [target_mapping.size(0), target_mapping.size(1), config.vocab_size]XLNetForSequenceClassification
فئة transformers.XLNetForSequenceClassification
< source >( config: XLNetConfig )
المعاملات
- config (XLNetConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج XLNet مع رأس تصنيف/انحدار تسلسلي في الأعلى (طبقة خطية فوق المخرجات المجمعة) على سبيل المثال لمهام GLUE.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonemems: typing.Optional[torch.Tensor] = Noneperm_mask: typing.Optional[torch.Tensor] = Nonetarget_mapping: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinput_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneuse_mems: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → XLNetForSequenceClassificationOutput or tuple(torch.Tensor)
المعاملات
- input_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على المؤشرات باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل. ما هي معرّفات الإدخال؟يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- attention_mask (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- mems (
list[torch.Tensor]بطولconfig.n_layers) — تحتوي على حالات مخفية محسوبة مسبقًا (انظرmemsالمخرجات أدناه). يمكن استخدامها لتسريع فك الترميز التسلسلي. يجب عدم تمرير معرّفات الرموز التي تم تقديم حالتها السابقة إلى هذا النموذج كـinput_idsلأنها تم حسابها بالفعل.يجب تعيين
use_memsإلىTrueللاستفادة منmems. - perm_mask (
torch.Tensorبشكل(batch_size, sequence_length, sequence_length), اختياري) — قناع لتحديد نمط الانتباه لكل رمز إدخال، مع اختيار القيم من [0, 1]: إذا كان perm_mask[k, i, j] = 0، فإن i ينتبه إلى j في الدفعة k؛ وإذا كان perm_mask[k, i, j] = 1، فإن i لا ينتبه إلى j في الدفعة k. إذا لم يتم تعيينه، ينتبه كل رمز إلى جميع الرموز الأخرى (انتباه ثنائي الاتجاه كامل). يُستخدم فقط أثناء ما قبل التدريب (لتحديد ترتيب التحليل) أو للتفكيك التسلسلي (التوليد).[0, 1]:- إذا كان
perm_mask[k, i, j] = 0، فإن i تنتبه إلى j في الدفعة k؛ - إذا كان
perm_mask[k, i, j] = 1، فإن i لا تنتبه إلى j في الدفعة k.
إذا لم يتم ضبطه، فإن كل رمز يولي اهتمامًا لجميع الرموز الأخرى (انتباه ثنائي الاتجاه كامل). يُستخدم فقط أثناء التدريب المسبق (لتحديد ترتيب التفكيك) أو للتفكيك التسلسلي (التوليد).
- إذا كان
- target_mapping (
torch.Tensorمن الشكل(batch_size, num_predict, sequence_length)، اختياري) — قناع يُحدّد الرموز الإخراجية التي يجب استخدامها. إذا كانtarget_mapping[k, i, j] = 1، فإن التنبؤ رقم i في الدفعة k يقع على الرمز رقم j. يُستخدم فقط أثناء التدريب المسبق للتنبؤ الجزئي أو للتفكيك التسلسلي (التوليد). - token_type_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار المؤشرات من[0, 1]:- 0 يتوافق مع رمز sentence A،
- 1 يتوافق مع رمز sentence B.
- input_mask (
torch.Tensorبشكلbatch_size, sequence_length, اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. وهو العكس منattention_mask, أي بـ 0 للرموز الفعلية و 1 للحشو، وهو ما يُحافظ عليه للتوافق مع قاعدة الكود الأصلية.قيم الأقنعة المختارة في
[0, 1]:- 1 للرموز التي تكون مقنّعة،
- 0 للرموز التي ليست مقنّعة.
يمكنك استخدام واحد فقط من
input_maskوattention_mask. - inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - labels (
torch.LongTensorمن الشكل(batch_size,)، اختياري) — التسميات لحساب خسارة تصنيف/الانحدار التسلسلي. يجب أن تكون الفهارس ضمن[0, ..., config.num_labels - 1]. إذا كانconfig.num_labels == 1يتم حساب خسارة الانحدار (خسارة متوسط المربع)، وإذا كانconfig.num_labels > 1يتم حساب خسارة التصنيف (الإنتروبيا المتقاطعة). - use_mems (
bool, اختياري) — ما إذا كان سيتم استخدام حالات الذاكرة لتسريع فك الترميز التسلسلي. إذا تم ضبطه علىTrue، فسيستخدم النموذج الحالات المخفية من عمليات المرور الأمامية السابقة لحساب الانتباه، مما قد يحسّن الأداء بشكل كبير لمهام فك الترميز التسلسلي. - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - output_hidden_states (
bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجعhidden_statesضمن الموترات المُرجعة للحصول على مزيد من التفاصيل. - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.
يعيد
XLNetForSequenceClassificationOutput أو tuple(torch.Tensor)
XLNetForSequenceClassificationOutput أو مجموعة مرتبة من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعدادات (XLNetConfig) والمدخلات.
تتجاوز طريقة XLNetForSequenceClassification الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorمن الشكل(1,)، اختياري، يُعاد عند توفيرlabel) — خسارة التصنيف (أو الانحدار إذا كان config.num_labels==1).logits (
torch.Tensorمن الشكل(batch_size, config.num_labels)) — درجات التصنيف (أو الانحدار إذا كان config.num_labels==1) (قبل SoftMax).mems (
list[torch.Tensor]بطولconfig.n_layers) — يحتوي على حالات مخفية محسوبة مسبقًا. يمكن استخدامه (انظر مدخلmems) لتسريع فك الترميز التسلسلي. يجب عدم تمرير معرّفات الرموز التي تم تقديم ماضيها إلى هذا النموذج كـinput_idsلأنها تم حسابها بالفعل.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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
مثال على تصنيف بوسم واحد:
>>> import torch
>>> from transformers import AutoTokenizer, XLNetForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("xlnet/xlnet-large-cased")
>>> model = XLNetForSequenceClassification.from_pretrained("xlnet/xlnet-large-cased")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
...
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = XLNetForSequenceClassification.from_pretrained("xlnet/xlnet-large-cased", num_labels=num_labels)
>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...مثال على تصنيف متعدد التسميات:
>>> import torch
>>> from transformers import AutoTokenizer, XLNetForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("xlnet/xlnet-large-cased")
>>> model = XLNetForSequenceClassification.from_pretrained("xlnet/xlnet-large-cased", problem_type="multi_label_classification")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = XLNetForSequenceClassification.from_pretrained(
... "xlnet/xlnet-large-cased", num_labels=num_labels, problem_type="multi_label_classification"
... )
>>> labels = torch.sum(
... torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).lossXLNetForMultipleChoice
فئة transformers.XLNetForMultipleChoice
< source >( config: XLNetConfig )
المعاملات
- config (XLNetConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Xlnet مع رأس تصنيف متعدد الخيارات في الأعلى (طبقة خطية فوق المخرجات المجمعة وsoftmax) على سبيل المثال لمهام RocStories/SWAG.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinput_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonemems: typing.Optional[torch.Tensor] = Noneperm_mask: typing.Optional[torch.Tensor] = Nonetarget_mapping: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneuse_mems: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → XLNetForMultipleChoiceOutput or tuple(torch.Tensor)
المعاملات
- input_ids (
torch.LongTensorبشكل(batch_size, num_choices, sequence_length)) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات.يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- token_type_ids (
torch.LongTensorبشكل(batch_size, num_choices, sequence_length), اختياري) — مؤشرات رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار المؤشرات من[0, 1]:- 0 يتوافق مع رمز sentence A،
- 1 يتوافق مع رمز sentence B.
- input_mask (
torch.Tensorبشكلbatch_size, num_choices, sequence_length, اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. وهو العكس منattention_mask, أي بـ 0 للرموز الفعلية و 1 للحشو، وهو ما يُحافظ عليه للتوافق مع قاعدة الكود الأصلية.قيم الأقنعة المختارة في
[0, 1]:- 1 للرموز التي تكون مقنّعة،
- 0 للرموز التي ليست مقنّعة.
يمكنك استخدام واحد فقط من
input_maskوattention_mask. - attention_mask (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- mems (
list[torch.Tensor]بطولconfig.n_layers) — تحتوي على حالات مخفية محسوبة مسبقًا (انظرmemsالمخرجات أدناه). يمكن استخدامها لتسريع فك الترميز التسلسلي. يجب عدم تمرير معرّفات الرموز التي تم تقديم حالتها السابقة إلى هذا النموذج كـinput_idsلأنها تم حسابها بالفعل.يجب تعيين
use_memsإلىTrueللاستفادة منmems. - perm_mask (
torch.Tensorبشكل(batch_size, sequence_length, sequence_length), اختياري) — قناع لتحديد نمط الانتباه لكل رمز إدخال، مع اختيار القيم من [0, 1]: إذا كان perm_mask[k, i, j] = 0، فإن i ينتبه إلى j في الدفعة k؛ وإذا كان perm_mask[k, i, j] = 1، فإن i لا ينتبه إلى j في الدفعة k. إذا لم يتم تعيينه، ينتبه كل رمز إلى جميع الرموز الأخرى (انتباه ثنائي الاتجاه كامل). يُستخدم فقط أثناء ما قبل التدريب (لتحديد ترتيب التحليل) أو للتفكيك التسلسلي (التوليد).[0, 1]:- إذا كان
perm_mask[k, i, j] = 0، فإن i تنتبه إلى j في الدفعة k؛ - إذا كان
perm_mask[k, i, j] = 1، فإن i لا تنتبه إلى j في الدفعة k.
إذا لم يتم ضبطه، فإن كل رمز يولي اهتمامًا لجميع الرموز الأخرى (انتباه ثنائي الاتجاه كامل). يُستخدم فقط أثناء التدريب المسبق (لتحديد ترتيب التفكيك) أو للتفكيك التسلسلي (التوليد).
- إذا كان
- target_mapping (
torch.Tensorمن الشكل(batch_size, num_predict, sequence_length)، اختياري) — قناع يُحدّد الرموز الإخراجية التي يجب استخدامها. إذا كانtarget_mapping[k, i, j] = 1، فإن التنبؤ رقم i في الدفعة k يقع على الرمز رقم j. يُستخدم فقط أثناء التدريب المسبق للتنبؤ الجزئي أو للتفكيك التسلسلي (التوليد). - inputs_embeds (
torch.Tensorمن الشكل(batch_size, num_choices, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث التضمينية الداخلية للنموذج. - labels (
torch.LongTensorمن الشكل(batch_size,)، اختياري) — التسميات لحساب خسارة تصنيف الاختيار المتعدد. يجب أن تكون الفهارس ضمن `[0, …, - use_mems (
bool, اختياري) — ما إذا كان سيتم استخدام حالات الذاكرة لتسريع فك الترميز التسلسلي. إذا تم ضبطه علىTrue، فسيستخدم النموذج الحالات المخفية من عمليات المرور الأمامية السابقة لحساب الانتباه، مما قد يحسّن الأداء بشكل كبير لمهام فك الترميز التسلسلي. - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - output_hidden_states (
bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجعhidden_statesضمن الموترات المُرجعة للحصول على مزيد من التفاصيل. - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.
يعيد
XLNetForMultipleChoiceOutput أو tuple(torch.Tensor)
XLNetForMultipleChoiceOutput أو مجموعة مرتبة من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (XLNetConfig) والمدخلات.
تتجاوز طريقة XLNetForMultipleChoice الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorمن الشكل (1,)، اختياري، يُعاد عند توفيرlabels) — خسارة التصنيف.logits (
torch.Tensorمن الشكل(batch_size, num_choices)) — num_choices هو البُعد الثاني للمصفوفات المدخلة. (انظر input_ids أعلاه).درجات التصنيف (قبل SoftMax).
mems (
list[torch.Tensor]بطولconfig.n_layers) — يحتوي على حالات مخفية محسوبة مسبقًا. يمكن استخدامه (انظر مدخلmems) لتسريع فك الترميز التسلسلي. يجب عدم تمرير معرّفات الرموز التي تم تقديم ماضيها إلى هذا النموذج كـinput_idsلأنها تم حسابها بالفعل.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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
مثال:
>>> from transformers import AutoTokenizer, XLNetForMultipleChoice
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("xlnet/xlnet-large-cased")
>>> model = XLNetForMultipleChoice.from_pretrained("xlnet/xlnet-large-cased")
>>> prompt = "In Italy, pizza served in formal settings, such as at a restaurant, is presented unsliced."
>>> choice0 = "It is eaten with a fork and a knife."
>>> choice1 = "It is eaten while held in the hand."
>>> labels = torch.tensor(0).unsqueeze(0) # choice0 is correct (according to Wikipedia ;)), batch size 1
>>> encoding = tokenizer([prompt, prompt], [choice0, choice1], return_tensors="pt", padding=True)
>>> outputs = model(**{k: v.unsqueeze(0) for k, v in encoding.items()}, labels=labels) # batch size is 1
>>> # the linear classifier still needs to be trained
>>> loss = outputs.loss
>>> logits = outputs.logitsXLNetForTokenClassification
فئة transformers.XLNetForTokenClassification
< source >( config: XLNetConfig )
المعاملات
- config (XLNetConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
محوّل Xlnet مع رأس تصنيف الرموز في الأعلى (طبقة خطية فوق مخرجات الحالات المخفية) على سبيل المثال لمهام التعرف على الكيانات المسمّاة (NER).
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonemems: typing.Optional[torch.Tensor] = Noneperm_mask: typing.Optional[torch.Tensor] = Nonetarget_mapping: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinput_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneuse_mems: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → XLNetForTokenClassificationOutput or tuple(torch.Tensor)
المعاملات
- input_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على المؤشرات باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل. ما هي معرّفات الإدخال؟يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- attention_mask (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- mems (
list[torch.Tensor]بطولconfig.n_layers) — تحتوي على حالات مخفية محسوبة مسبقًا (انظرmemsالمخرجات أدناه). يمكن استخدامها لتسريع فك الترميز التسلسلي. يجب عدم تمرير معرّفات الرموز التي تم تقديم حالتها السابقة إلى هذا النموذج كـinput_idsلأنها تم حسابها بالفعل.يجب تعيين
use_memsإلىTrueللاستفادة منmems. - perm_mask (
torch.Tensorبشكل(batch_size, sequence_length, sequence_length), اختياري) — قناع لتحديد نمط الانتباه لكل رمز إدخال، مع اختيار القيم من [0, 1]: إذا كان perm_mask[k, i, j] = 0، فإن i ينتبه إلى j في الدفعة k؛ وإذا كان perm_mask[k, i, j] = 1، فإن i لا ينتبه إلى j في الدفعة k. إذا لم يتم تعيينه، ينتبه كل رمز إلى جميع الرموز الأخرى (انتباه ثنائي الاتجاه كامل). يُستخدم فقط أثناء ما قبل التدريب (لتحديد ترتيب التحليل) أو للتفكيك التسلسلي (التوليد).[0, 1]:- إذا كان
perm_mask[k, i, j] = 0، فإن i تنتبه إلى j في الدفعة k؛ - إذا كان
perm_mask[k, i, j] = 1، فإن i لا تنتبه إلى j في الدفعة k.
إذا لم يتم ضبطه، فإن كل رمز يولي اهتمامًا لجميع الرموز الأخرى (انتباه ثنائي الاتجاه كامل). يُستخدم فقط أثناء التدريب المسبق (لتحديد ترتيب التفكيك) أو للتفكيك التسلسلي (التوليد).
- إذا كان
- target_mapping (
torch.Tensorمن الشكل(batch_size, num_predict, sequence_length)، اختياري) — قناع يُحدّد الرموز الإخراجية التي يجب استخدامها. إذا كانtarget_mapping[k, i, j] = 1، فإن التنبؤ رقم i في الدفعة k يقع على الرمز رقم j. يُستخدم فقط أثناء التدريب المسبق للتنبؤ الجزئي أو للتفكيك التسلسلي (التوليد). - token_type_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار المؤشرات من[0, 1]:- 0 يتوافق مع رمز sentence A،
- 1 يتوافق مع رمز sentence B.
- input_mask (
torch.Tensorبشكلbatch_size, sequence_length, اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. وهو العكس منattention_mask, أي بـ 0 للرموز الفعلية و 1 للحشو، وهو ما يُحافظ عليه للتوافق مع قاعدة الكود الأصلية.قيم الأقنعة المختارة في
[0, 1]:- 1 للرموز التي تكون مقنّعة،
- 0 للرموز التي ليست مقنّعة.
يمكنك استخدام واحد فقط من
input_maskوattention_mask. - inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - labels (
torch.LongTensorمن الشكل(batch_size,)، اختياري) — التسميات لحساب خسارة تصنيف الاختيار المتعدد. يجب أن تكون الفهارس ضمن[0, ..., num_choices]حيث num_choices هو حجم البُعد الثاني للمصفوفات المدخلة. (انظر input_ids أعلاه) - use_mems (
bool, اختياري) — ما إذا كان سيتم استخدام حالات الذاكرة لتسريع فك الترميز التسلسلي. إذا تم ضبطه علىTrue، فسيستخدم النموذج الحالات المخفية من عمليات المرور الأمامية السابقة لحساب الانتباه، مما قد يحسّن الأداء بشكل كبير لمهام فك الترميز التسلسلي. حالات الذاكرة لتسريع فك الترميز التسلسلي. إذا تم ضبطه علىTrue، فسيستخدم النموذج الحالات المخفية من عمليات المرور الأمامية السابقة لحساب الانتباه، مما قد يحسّن الأداء بشكل كبير لمهام فك الترميز التسلسلي. - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - output_hidden_states (
bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجعhidden_statesضمن الموترات المُرجعة للحصول على مزيد من التفاصيل. - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.
يعيد
XLNetForTokenClassificationOutput أو tuple(torch.Tensor)
XLNetForTokenClassificationOutput أو مجموعة مرتبة من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (XLNetConfig) والمدخلات.
تتجاوز طريقة XLNetForTokenClassification الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorof shape(1,), اختياري, يُعاد عند توفيرlabels) — خسارة التصنيف.logits (
torch.Tensorمن الشكل(batch_size, sequence_length, config.num_labels)) — درجات التصنيف (قبل SoftMax).mems (
list[torch.Tensor]بطولconfig.n_layers) — يحتوي على حالات مخفية محسوبة مسبقًا. يمكن استخدامه (انظر مدخلmems) لتسريع فك الترميز التسلسلي. يجب عدم تمرير معرّفات الرموز التي تم تقديم ماضيها إلى هذا النموذج كـinput_idsلأنها تم حسابها بالفعل.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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
مثال:
>>> from transformers import AutoTokenizer, XLNetForTokenClassification
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("xlnet/xlnet-large-cased")
>>> model = XLNetForTokenClassification.from_pretrained("xlnet/xlnet-large-cased")
>>> inputs = tokenizer(
... "HuggingFace is a company based in Paris and New York", add_special_tokens=False, return_tensors="pt"
... )
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_token_class_ids = logits.argmax(-1)
>>> # Note that tokens are classified rather then input words which means that
>>> # there might be more predicted token classes than words.
>>> # Multiple token classes might account for the same word
>>> predicted_tokens_classes = [model.config.id2label[t.item()] for t in predicted_token_class_ids[0]]
>>> predicted_tokens_classes
...
>>> labels = predicted_token_class_ids
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...XLNetForQuestionAnsweringSimple
فئة transformers.XLNetForQuestionAnsweringSimple
< source >( config: XLNetConfig )
المعاملات
- config (XLNetConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج XLNet مع رأس تصنيف مقاطع في الأعلى لمهام الإجابة الاستخراجية على الأسئلة مثل SQuAD (طبقات خطية فوق مخرجات الحالات المخفية لحساب span start logits وspan end logits).
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonemems: typing.Optional[torch.Tensor] = Noneperm_mask: typing.Optional[torch.Tensor] = Nonetarget_mapping: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinput_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonestart_positions: typing.Optional[torch.Tensor] = Noneend_positions: typing.Optional[torch.Tensor] = Noneuse_mems: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → XLNetForQuestionAnsweringSimpleOutput or tuple(torch.Tensor)
المعاملات
- input_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على المؤشرات باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل. ما هي معرّفات الإدخال؟يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- attention_mask (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- mems (
list[torch.Tensor]بطولconfig.n_layers) — تحتوي على حالات مخفية محسوبة مسبقًا (انظرmemsالمخرجات أدناه). يمكن استخدامها لتسريع فك الترميز التسلسلي. يجب عدم تمرير معرّفات الرموز التي تم تقديم حالتها السابقة إلى هذا النموذج كـinput_idsلأنها تم حسابها بالفعل.يجب تعيين
use_memsإلىTrueللاستفادة منmems. - perm_mask (
torch.Tensorبشكل(batch_size, sequence_length, sequence_length), اختياري) — قناع لتحديد نمط الانتباه لكل رمز إدخال، مع اختيار القيم من [0, 1]: إذا كان perm_mask[k, i, j] = 0، فإن i ينتبه إلى j في الدفعة k؛ وإذا كان perm_mask[k, i, j] = 1، فإن i لا ينتبه إلى j في الدفعة k. إذا لم يتم تعيينه، ينتبه كل رمز إلى جميع الرموز الأخرى (انتباه ثنائي الاتجاه كامل). يُستخدم فقط أثناء ما قبل التدريب (لتحديد ترتيب التحليل) أو للتفكيك التسلسلي (التوليد).[0, 1]:- إذا كان
perm_mask[k, i, j] = 0، فإن i تنتبه إلى j في الدفعة k؛ - إذا كان
perm_mask[k, i, j] = 1، فإن i لا تنتبه إلى j في الدفعة k.
إذا لم يتم ضبطه، فإن كل رمز يولي اهتمامًا لجميع الرموز الأخرى (انتباه ثنائي الاتجاه كامل). يُستخدم فقط أثناء التدريب المسبق (لتحديد ترتيب التفكيك) أو للتفكيك التسلسلي (التوليد).
- إذا كان
- target_mapping (
torch.Tensorمن الشكل(batch_size, num_predict, sequence_length)، اختياري) — قناع يُحدّد الرموز الإخراجية التي يجب استخدامها. إذا كانtarget_mapping[k, i, j] = 1، فإن التنبؤ رقم i في الدفعة k يقع على الرمز رقم j. يُستخدم فقط أثناء التدريب المسبق للتنبؤ الجزئي أو للتفكيك التسلسلي (التوليد). - token_type_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار المؤشرات من[0, 1]:- 0 يتوافق مع رمز sentence A،
- 1 يتوافق مع رمز sentence B.
- input_mask (
torch.Tensorبشكلbatch_size, sequence_length, اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. وهو العكس منattention_mask, أي بـ 0 للرموز الفعلية و 1 للحشو، وهو ما يُحافظ عليه للتوافق مع قاعدة الكود الأصلية.قيم الأقنعة المختارة في
[0, 1]:- 1 للرموز التي تكون مقنّعة،
- 0 للرموز التي ليست مقنّعة.
يمكنك استخدام واحد فقط من
input_maskوattention_mask. - inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - start_positions (
torch.Tensorمن الشكل(batch_size,)، اختياري) — تسميات لموضع (فهرس) بداية المقطع المُسمّى لحساب خسارة تصنيف الرموز. تُثبَّت المواضع على طول التسلسل (sequence_length). لا تُؤخذ المواضع خارج التسلسل في الاعتبار عند حساب الخسارة. - end_positions (
torch.Tensorمن الشكل(batch_size,)، اختياري) — تسميات لموضع (فهرس) نهاية المقطع المُسمّى لحساب خسارة تصنيف الرموز. تُثبَّت المواضع على طول التسلسل (sequence_length). لا تُؤخذ المواضع خارج التسلسل في الاعتبار عند حساب الخسارة. - use_mems (
bool, اختياري) — ما إذا كان سيتم استخدام حالات الذاكرة لتسريع فك الترميز التسلسلي. إذا تم ضبطه علىTrue، فسيستخدم النموذج الحالات المخفية من عمليات المرور الأمامية السابقة لحساب الانتباه، مما قد يحسّن الأداء بشكل كبير لمهام فك الترميز التسلسلي. - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - output_hidden_states (
bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجعhidden_statesضمن الموترات المُرجعة للحصول على مزيد من التفاصيل. - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.
يعيد
XLNetForQuestionAnsweringSimpleOutput أو tuple(torch.Tensor)
XLNetForQuestionAnsweringSimpleOutput أو مجموعة مرتبة من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (XLNetConfig) والمدخلات.
تتجاوز طريقة XLNetForQuestionAnsweringSimple الخاصة بالتقديم الأمامي الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorمن الشكل(1,)، اختياري، يُعاد عند توفيرlabels) — إجمالي خسارة استخراج المقاطع هو مجموع دالة Cross-Entropy لموقعي البداية والنهاية.start_logits (
torch.Tensorمن الشكل(batch_size, sequence_length,)) — درجات بداية المقطع (قبل SoftMax).end_logits (
torch.Tensorمن الشكل(batch_size, sequence_length,)) — درجات نهاية المقطع (قبل SoftMax).mems (
list[torch.Tensor]بطولconfig.n_layers) — يحتوي على حالات مخفية محسوبة مسبقًا. يمكن استخدامه (انظر مدخلmems) لتسريع فك الترميز التسلسلي. يجب عدم تمرير معرّفات الرموز التي تم تقديم ماضيها إلى هذا النموذج كـinput_idsلأنها تم حسابها بالفعل.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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
مثال:
>>> from transformers import AutoTokenizer, XLNetForQuestionAnsweringSimple
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("xlnet/xlnet-large-cased")
>>> model = XLNetForQuestionAnsweringSimple.from_pretrained("xlnet/xlnet-large-cased")
>>> question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"
>>> inputs = tokenizer(question, text, return_tensors="pt")
>>> with torch.no_grad():
... outputs = model(**inputs)
>>> answer_start_index = outputs.start_logits.argmax()
>>> answer_end_index = outputs.end_logits.argmax()
>>> predict_answer_tokens = inputs.input_ids[0, answer_start_index : answer_end_index + 1]
>>> tokenizer.decode(predict_answer_tokens, skip_special_tokens=True)
...
>>> # target is "nice puppet"
>>> target_start_index = torch.tensor([14])
>>> target_end_index = torch.tensor([15])
>>> outputs = model(**inputs, start_positions=target_start_index, end_positions=target_end_index)
>>> loss = outputs.loss
>>> round(loss.item(), 2)
...XLNetForQuestionAnswering
فئة transformers.XLNetForQuestionAnswering
< source >( config: XLNetConfig )
المعاملات
- config (XLNetConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
محوّل Xlnet مع رأس تصنيف مقاطع في الأعلى لمهام الإجابة الاستخراجية على الأسئلة مثل SQuAD (طبقة خطية فوق مخرجات الحالات المخفية لحساب span start logits وspan end logits).
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonemems: typing.Optional[torch.Tensor] = Noneperm_mask: typing.Optional[torch.Tensor] = Nonetarget_mapping: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinput_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonestart_positions: typing.Optional[torch.Tensor] = Noneend_positions: typing.Optional[torch.Tensor] = Noneis_impossible: typing.Optional[torch.Tensor] = Nonecls_index: typing.Optional[torch.Tensor] = Nonep_mask: typing.Optional[torch.Tensor] = Noneuse_mems: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → XLNetForQuestionAnsweringOutput or tuple(torch.Tensor)
المعاملات
- input_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على المؤشرات باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل. ما هي معرّفات الإدخال؟يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- attention_mask (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- mems (
list[torch.Tensor]بطولconfig.n_layers) — تحتوي على حالات مخفية محسوبة مسبقًا (انظرmemsالمخرجات أدناه). يمكن استخدامها لتسريع فك الترميز التسلسلي. يجب عدم تمرير معرّفات الرموز التي تم تقديم حالتها السابقة إلى هذا النموذج كـinput_idsلأنها تم حسابها بالفعل.يجب تعيين
use_memsإلىTrueللاستفادة منmems. - perm_mask (
torch.Tensorبشكل(batch_size, sequence_length, sequence_length), اختياري) — قناع لتحديد نمط الانتباه لكل رمز إدخال، مع اختيار القيم من [0, 1]: إذا كان perm_mask[k, i, j] = 0، فإن i ينتبه إلى j في الدفعة k؛ وإذا كان perm_mask[k, i, j] = 1، فإن i لا ينتبه إلى j في الدفعة k. إذا لم يتم تعيينه، ينتبه كل رمز إلى جميع الرموز الأخرى (انتباه ثنائي الاتجاه كامل). يُستخدم فقط أثناء ما قبل التدريب (لتحديد ترتيب التحليل) أو للتفكيك التسلسلي (التوليد).[0, 1]:- إذا كان
perm_mask[k, i, j] = 0، فإن i تنتبه إلى j في الدفعة k؛ - إذا كان
perm_mask[k, i, j] = 1، فإن i لا تنتبه إلى j في الدفعة k.
إذا لم يتم ضبطه، فإن كل رمز يولي اهتمامًا لجميع الرموز الأخرى (انتباه ثنائي الاتجاه كامل). يُستخدم فقط أثناء التدريب المسبق (لتحديد ترتيب التفكيك) أو للتفكيك التسلسلي (التوليد).
- إذا كان
- target_mapping (
torch.Tensorمن الشكل(batch_size, num_predict, sequence_length)، اختياري) — قناع يُحدّد الرموز الإخراجية التي يجب استخدامها. إذا كانtarget_mapping[k, i, j] = 1، فإن التنبؤ رقم i في الدفعة k يقع على الرمز رقم j. يُستخدم فقط أثناء التدريب المسبق للتنبؤ الجزئي أو للتفكيك التسلسلي (التوليد). - token_type_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار المؤشرات من[0, 1]:- 0 يتوافق مع رمز sentence A،
- 1 يتوافق مع رمز sentence B.
- input_mask (
torch.Tensorبشكلbatch_size, sequence_length, اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. وهو العكس منattention_mask, أي بـ 0 للرموز الفعلية و 1 للحشو، وهو ما يُحافظ عليه للتوافق مع قاعدة الكود الأصلية.قيم الأقنعة المختارة في
[0, 1]:- 1 للرموز التي تكون مقنّعة،
- 0 للرموز التي ليست مقنّعة.
يمكنك استخدام واحد فقط من
input_maskوattention_mask. - inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - start_positions (
torch.Tensorمن الشكل(batch_size,)، اختياري) — تسميات لموضع (فهرس) بداية المقطع المُسمّى لحساب خسارة تصنيف الرموز. تُثبَّت المواضع على طول التسلسل (sequence_length). لا تُؤخذ المواضع خارج التسلسل في الاعتبار عند حساب الخسارة. - end_positions (
torch.Tensorمن الشكل(batch_size,)، اختياري) — تسميات لموضع (فهرس) نهاية المقطع المُسمّى لحساب خسارة تصنيف الرموز. تُثبَّت المواضع على طول التسلسل (sequence_length). لا تُؤخذ المواضع خارج التسلسل في الاعتبار عند حساب الخسارة. - is_impossible (
torch.LongTensorمن الشكل(batch_size,)، اختياري) — تسميات تحدد ما إذا كان للسؤال إجابة أم لا (SQuAD 2.0) - cls_index (
torch.LongTensorof shape(batch_size,), اختياري) — التسميات الخاصة بموضع (فهرس) رمز التصنيف الذي يُستخدم كمدخل لحساب مدى معقولية الإجابة. - p_mask (
torch.Tensorمن الشكل(batch_size, sequence_length)، اختياري) — قناع اختياري للرموز التي لا يمكن أن تكون ضمن الإجابات (مثل [CLS]، [PAD]، …). القيمة 1.0 تعني أن الرمز يجب إخفاؤه. القيمة 0.0 تعني أن الرمز غير مخفي. - use_mems (
bool, اختياري) — ما إذا كان سيتم استخدام حالات الذاكرة لتسريع فك الترميز التسلسلي. إذا تم ضبطه علىTrue، فسيستخدم النموذج الحالات المخفية من عمليات المرور الأمامية السابقة لحساب الانتباه، مما قد يحسّن الأداء بشكل كبير لمهام فك الترميز التسلسلي. - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - output_hidden_states (
bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجعhidden_statesضمن الموترات المُرجعة للحصول على مزيد من التفاصيل. - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.
يعيد
XLNetForQuestionAnsweringOutput أو tuple(torch.Tensor)
XLNetForQuestionAnsweringOutput أو مجموعة مرتبة من
torch.Tensor (في حال تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (XLNetConfig) والمدخلات.
تتجاوز طريقة XLNetForQuestionAnswering الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorof shape(1,), اختياري, يُعاد إذا تم توفير كل منstart_positionsوend_positions) — خسارة التصنيف كمجموع لخسائر تصنيف رمز البداية، ورمز النهاية (و is_impossible إذا تم توفيره).start_top_log_probs (
torch.Tensorمن الشكل(batch_size, config.start_n_top)، اختياري، يُعاد إذا لم يُقدَّمstart_positionsأوend_positions) — احتمالات اللوغاريتمية لأفضل config.start_n_top احتمالات لرموز البداية (بحث الحزمة).start_top_index (
torch.LongTensorمن الشكل(batch_size, config.start_n_top)، اختياري، يُعاد إذا لم يُقدَّمstart_positionsأوend_positions) — فهارس لأفضل config.start_n_top احتمالات لرمز البداية (بحث الحزمة).end_top_log_probs (
torch.Tensorمن الشكل(batch_size, config.start_n_top * config.end_n_top)، اختياري، يُعاد إذا لم يُقدَّمstart_positionsأوend_positions) — احتمالات السجل (Log probabilities) لأفضلconfig.start_n_top * config.end_n_topمن احتمالات رموز النهاية (بحث الحزمة).end_top_index (
torch.LongTensorمن الشكل(batch_size, config.start_n_top * config.end_n_top)، اختياري، يُعاد إذا لم يُقدَّمstart_positionsأوend_positions) — فهارس لأفضلconfig.start_n_top * config.end_n_topاحتمالات لرمز النهاية (بحث الحزمة).cls_logits (
torch.Tensorمن الشكل(batch_size,)، اختياري، يُعاد إذا لم يُقدَّمstart_positionsأوend_positions) — احتمالات السجل (Log probabilities) لوسمis_impossibleللإجابات.mems (
list[torch.Tensor]بطولconfig.n_layers) — يحتوي على حالات مخفية محسوبة مسبقًا. يمكن استخدامه (انظر مدخلmems) لتسريع فك الترميز التسلسلي. يجب عدم تمرير معرّفات الرموز التي تم تقديم ماضيها إلى هذا النموذج كـinput_idsلأنها تم حسابها بالفعل.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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
مثال:
>>> from transformers import AutoTokenizer, XLNetForQuestionAnswering
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("xlnet/xlnet-base-cased")
>>> model = XLNetForQuestionAnswering.from_pretrained("xlnet/xlnet-base-cased")
>>> input_ids = torch.tensor(tokenizer.encode("Hello, my dog is cute", add_special_tokens=True)).unsqueeze(
... 0
... ) # Batch size 1
>>> start_positions = torch.tensor([1])
>>> end_positions = torch.tensor([3])
>>> outputs = model(input_ids, start_positions=start_positions, end_positions=end_positions)
>>> loss = outputs.loss