Transformers documentation
FlauBERT
نُشر هذا النموذج في أوراق HF في 11-12-2019، وسُهم به في Hugging Face Transformers في 16-11-2020.
FlauBERT
نظرة عامة
قُدِّم نموذج FlauBERT في ورقة FlauBERT: Unsupervised Language Model Pre-training for French التي كتبها Hang Le وآخرون. وهو نموذج transformer تم تدريبه مسبقاً باستخدام هدف نمذجة اللغة المقنّعة (MLM) (على غرار BERT).
المستخلص من الورقة البحثية هو كالتالي:
أصبحت نماذج اللغة خطوة أساسية لتحقيق نتائج متقدمة في العديد من مهام معالجة اللغة الطبيعية (NLP) المختلفة. فباستخدامها للكمية الهائلة من النصوص غير الموسومة المتاحة حاليًا، توفر هذه النماذج طريقة فعالة لتدريب مسبق لتمثيلات الكلمات المستمرة التي يمكن ضبطها لمهمة لاحقة، إلى جانب سياقتها على مستوى الجملة. وقد تم إثبات ذلك على نطاق واسع باللغة الإنجليزية باستخدام التمثيلات السياقية (Dai and Le, 2015; Peters et al., 2018; Howard and Ruder, 2018; Radford et al., 2018; Devlin et al., 2019; Yang et al., 2019b). في هذه الورقة، نقدم ونشارك FlauBERT، وهو نموذج تم تعلمه على مجموعة بيانات فرنسية كبيرة ومتنوعة. تم تدريب نماذج بأحجام مختلفة باستخدام حاسوب Jean Zay فائق القدرة التابع للمركز الوطني الفرنسي للبحث العلمي (CNRS). قمنا بتطبيق نماذج اللغة الفرنسية الخاصة بنا على مهام NLP متنوعة (تصنيف النصوص، إعادة الصياغة، الاستدلال اللغوي الطبيعي، التحليل النحوي، إزالة الغموض عن معاني الكلمات) وأظهرنا أنها تتفوق في معظم الأحيان على أساليب التدريب المسبق الأخرى. كما تم مشاركة إصدارات مختلفة من FlauBERT بالإضافة إلى بروتوكول تقييم موحّد للمهام اللاحقة، يُسمى FLUE (تقييم فهم اللغة الفرنسية)، مع مجتمع البحث لإجراء تجارب قابلة للتكرار في معالجة اللغة الطبيعية الفرنسية.
تمت مساهمة هذا النموذج من قِبل formiel. يمكن العثور على الكود الأصلي هنا.
نصائح:
- مثل RoBERTa، لكن دون التنبؤ بترتيب الجمل (أي تم تدريبه على هدف MLM فقط).
الموارد
- دليل مهمة تصنيف النصوص
- دليل مهمة تصنيف الرموز
- دليل مهمة الإجابة عن الأسئلة
- دليل مهمة نمذجة اللغة المقنّعة
- دليل مهمة الاختيار من متعدد
FlaubertConfig
فئة transformers.FlaubertConfig
< 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 = Nonepre_norm: bool = Falselayerdrop: float | int = 0.0vocab_size: int = 30145emb_dim: int = 2048n_layers: int = 12n_heads: int = 16dropout: float | int = 0.1attention_dropout: float | int = 0.1gelu_activation: bool = Truesinusoidal_embeddings: bool = Falsecausal: bool = Falseasm: bool = Falsen_langs: int = 1use_lang_emb: bool = Truemax_position_embeddings: int = 512embed_init_std: float = 0.02209708691207961layer_norm_eps: float = 1e-12init_std: float = 0.02bos_index: int = 0eos_index: int = 1pad_index: int = 2unk_index: int = 3mask_index: int = 5is_encoder: bool = Truesummary_type: str = 'first'summary_use_proj: bool = Truesummary_activation: str | None = Nonesummary_proj_to_labels: bool = Truesummary_first_dropout: float | int = 0.1start_n_top: int = 5end_n_top: int = 5mask_token_id: int = 0lang_id: int = 0pad_token_id: int | None = 2bos_token_id: int | None = 0eos_token_id: int | list[int] | None = 1tie_word_embeddings: bool = True )
المعاملات
- pre_norm (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم تطبيق تطبيع الطبقة قبل أو بعد طبقة التقدّم الأمامي التي تلي الانتباه في كل طبقة (Vaswani et al., Tensor2Tensor for Neural Machine Translation. 2018) - layerdrop (
Union[float, int]، اختياري، القيمة الافتراضية0.0) — احتمالية LayerDrop. راجع [ورقة LayerDrop](انظر https://huggingface.co/papers/1909.11556) لمزيد من التفاصيل. - vocab_size (
int، اختياري، القيمة الافتراضية30145) — حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطةinput_ids. - emb_dim (
int، اختياري، القيمة الافتراضية 2048) — أبعاد طبقة التضمين. - n_layers (
int، اختياري، القيمة الافتراضية12) — عدد الطبقات المخفية في مُفكِّك Transformer. - n_heads (
int، اختياري، القيمة الافتراضية16) — عدد رؤوس الانتباه لكل طبقة انتباه في مُفكِّك Transformer. - dropout (
Union[float, int]، اختياري، القيمة الافتراضية0.1) — النسبة لجميع طبقات dropout. - attention_dropout (
Union[float, int]، اختياري، القيمة الافتراضية0.1) — نسبة الإسقاط (dropout) لاحتمالات الانتباه. - gelu_activation (
bool, اختياري، الافتراضي True) — ما إذا كان سيتم استخدام دالة التنشيط GeLU. - sinusoidal_embeddings (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم استخدام تضمينات موضعية جيبية بدلاً من التضمينات الموضعية المطلقة. - causal (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب على النموذج أن يتصرف بشكل سببي. تستخدم النماذج السببية قناع انتباه مثلثي الشكل من أجل الانتباه إلى السياق على الجانب الأيسر فقط بدلاً من السياق ثنائي الاتجاه. - asm (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم استخدام طبقة إسقاط لوجاريتمي تكيّفي (adaptive log softmax) بدلاً من طبقة خطية لطبقة التنبؤ. - n_langs (
int، اختياري، القيمة الافتراضية 1) — عدد اللغات التي يتعامل معها النموذج. اضبطه على 1 للنماذج أحادية اللغة. - use_lang_emb (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم استخدام تمثيلات اللغة. تستخدم بعض النماذج تمثيلات لغة إضافية، راجع صفحة النماذج متعددة اللغات للحصول على معلومات حول كيفية استخدامها. - embed_init_std (
float، اختياري، القيمة الافتراضية هي 2048^-0.5) — انحراف المعيار لـ truncated_normal_initializer المستخدم في تهيئة مصفوفات التضمين. - max_position_embeddings (
int، اختياري، القيمة الافتراضية512) — أقصى طول تسلسل قد يُستخدم مع هذا النموذج. - embed_init_std (
float، اختياري، القيمة الافتراضية2048**-0.5) — معيار المهيئ لطبقات التضمين. - layer_norm_eps (
float, اختياري، القيمة الافتراضية1e-12) — قيمة الإيبسلون المستخدمة في طبقات تطبيع الطبقة. - init_std (
float، اختياري، القيمة الافتراضية0.02) — انحراف معياري لمُهيّئ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان. - bos_index (
int، اختياري، القيمة الافتراضية 0) — مؤشر رمز بداية الجملة في قاموس الكلمات. - eos_index (
int، اختياري، القيمة الافتراضية 1) — مؤشر رمز نهاية الجملة في قاموس الكلمات. - pad_index (
int، اختياري، القيمة الافتراضية 2) — مؤشر رمز الحشو في قاموس الكلمات. - unk_index (
int، اختياري، القيمة الافتراضية 3) — مؤشر رمز المجهول في المفردات. - mask_index (
int، اختياري، القيمة الافتراضية 5) — مؤشر رمز الإخفاء في قاموس الكلمات. - is_encoder (
bool، اختياري، القيمة الافتراضية True) — ما إذا كان النموذج يُستخدم كمُشفِّر. - summary_type (
string, اختياري, الافتراضي هو "first") — الحُجّة المستخدمة عند تنفيذ ملخص التسلسل. تُستخدم في نماذج تصنيف التسلسل ونماذج الاختيار المتعدد. يجب أن تكون إحدى الخيارات التالية:"last": خذ حالة الترميز المخفية للرمز الأخير (مثل XLNet)."first": خذ حالة الترميز المخفية للرمز الأول (مثل BERT)."mean": احسب متوسط حالات الترميز المخفية لجميع الرموز."cls_index": قدّم مصفوفة (Tensor) تحدد موضع رمز التصنيف (كما في GPT/GPT-2)."attn": غير مُنفَّذ حاليًا، استخدم الانتباه متعدد الرؤوس.
- summary_use_proj (
bool، اختياري، القيمة الافتراضيةTrue) — الحُجّة المستخدمة عند إجراء تلخيص التسلسل. تُستخدم في نماذج تصنيف التسلسل ونماذج الاختيار المتعدد. ما إذا كان يجب إضافة إسقاط بعد استخراج المتجه أم لا. - summary_activation (
str, اختياري) — الحُجّة المستخدمة عند إجراء تلخيص التسلسل. تُستخدم في نماذج تصنيف التسلسل ونماذج الاختيار المتعدد. مرّر"tanh"لتفعيل دالة tanh على المخرجات، وأي قيمة أخرى لن تُفعّل أي دالة. - summary_proj_to_labels (
bool، اختياري، القيمة الافتراضيةTrue) — يُستخدم في نماذج تصنيف التسلسل ونماذج الاختيار المتعدد. ما إذا كان يجب أن تحتوي مخرجات الإسقاط علىconfig.num_labelsأوconfig.hidden_sizeمن الفئات. - summary_first_dropout (
float، اختياري، القيمة الافتراضية 0.1) — يُستخدم في نماذج تصنيف التسلسل واختيار متعدد. نسبة الإسقاط (dropout) المستخدمة بعد الإسقاط (projection) والتفعيل (activation). - start_n_top (
int، اختياري، القيمة الافتراضية 5) — يُستخدم في سكربت تقييم SQuAD. - end_n_top (
int، اختياري، القيمة الافتراضية 5) — يُستخدم في سكريبت تقييم SQuAD. - mask_token_id (
int، اختياري، القيمة الافتراضية 0) — معامل مستقل عن النموذج لتحديد الرموز المقنّعة عند توليد النص في سياق MLM. - lang_id (
int، اختياري، القيمة الافتراضية 1) — معرّف اللغة التي يستخدمها النموذج. يُستخدم هذا المعامل عند توليد النص بلغة محددة. - pad_token_id (
int، اختياري، القيمة الافتراضية2) — معرّف الرمز المستخدم للتعبئة في المفردات. - bos_token_id (
int, اختياري، القيمة الافتراضية0) — معرّف الرمز المستخدم لبدء البث في المفردات. - eos_token_id (
Union[int, list[int]]، اختياري، القيمة الافتراضية1) — معرّف الرمز المستخدم لنهاية التدفق في المفردات. - tie_word_embeddings (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب ربط ترميزات الأوزان (weight embeddings) وفقاً لخريطةtied_weights_keysالخاصة بالنموذج.
هذه فئة الإعدادات المخزنة لإعدادات نموذج FlaubertModel. تُستخدم لاستحداث نموذج Flaubert وفقًا للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ flaubert/flaubert_base_uncased
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
FlaubertTokenizer
فئة transformers.FlaubertTokenizer
< source >( vocab_filemerges_filedo_lowercase = Falseunk_token = '<unk>'bos_token = '<s>'sep_token = '</s>'pad_token = '<pad>'cls_token = '</s>'mask_token = '<special1>'additional_special_tokens = ['<special0>', '<special1>', '<special2>', '<special3>', '<special4>', '<special5>', '<special6>', '<special7>', '<special8>', '<special9>']lang2id = Noneid2lang = None**kwargs )
المعاملات
- vocab_file (
str) — ملف المفردات. - merges_file (
str) — ملف الدمج. - do_lowercase (
bool، اختياري، القيمة الافتراضيةFalse) — يتحكم في تحويل الأحرف إلى صيغة صغيرة. - unk_token (
str، اختياري، القيمة الافتراضية"<unk>") — رمز المجهول. لا يمكن تحويل الرمز غير الموجود في المفردات إلى معرّف، لذا يُعيَّن هذا الرمز بدلاً منه. - bos_token (
str, اختياري, الافتراضي هو"<s>") — رمز بداية التسلسل الذي تم استخدامه أثناء التدريب المسبق. يمكن استخدامه كرمز لتصنيف التسلسل. عند بناء تسلسل باستخدام الرموز الخاصة، لا يُستخدم هذا الرمز لبداية التسلسل، بل يُستخدم رمز cls_token.عند بناء تسلسل باستخدام الرموز الخاصة، لا يُستخدم هذا الرمز لبدء التسلسل. الرمز المستخدم هو
cls_token. - sep_token (
str، اختياري، القيمة الافتراضية"</s>") — رمز الفاصل، الذي يُستخدم عند بناء تسلسل من عدة تسلسلات، على سبيل المثال تسلسلان لتصنيف التسلسل أو نص وسؤال للإجابة على الأسئلة. كما يُستخدم كآخر رمز في تسلسل مبني باستخدام الرموز الخاصة. - pad_token (
str، اختياري، القيمة الافتراضية"<pad>") — الرمز المستخدم للتعبئة، على سبيل المثال عند تجميع تسلسلات ذات أطوال مختلفة. - cls_token (
str، اختياري، القيمة الافتراضية"</s>") — رمز المُصنِّف الذي يُستخدم عند إجراء تصنيف التسلسل (تصنيف التسلسل بأكمله بدلاً من التصنيف لكل رمز على حدة). وهو الرمز الأول في التسلسل عند بناؤه باستخدام الرموز الخاصة. - mask_token (
str، اختياري، القيمة الافتراضية"<special1>") — الرمز المستخدم لإخفاء القيم. هذا هو الرمز المستخدم عند تدريب هذا النموذج باستخدام نمذجة اللغة المقنّعة. وهو الرمز الذي سيحاول النموذج التنبؤ به. - additional_special_tokens (
List[str]، اختياري، القيمة الافتراضية['<special0>', '<special1>', '<special2>', '<special3>', '<special4>', '<special5>', '<special6>', '<special7>', '<special8>', '<special9>']) — قائمة الرموز الخاصة الإضافية. - lang2id (
Dict[str, int], اختياري) — قاموس يربط معرّفات اللغات النصية بمعرّفات الأرقام الخاصة بها. - id2lang (
Dict[int, str]، اختياري) — قاموس يربط معرّفات اللغات بمعرّفات النصوص الخاصة بها.
أنشئ مُجزِّئ Flaubert. يعتمد على ترميز زوج البايت. عملية التجزئة هي على النحو التالي:
- معالجة Moses المسبقة وتجزئة الرموز.
- تطبيع جميع مدخلات النص.
- يمكن استخدام الحجة
special_tokensوالدالةset_special_tokensلإضافة رموز إضافية (مثل ”classify”) إلى المفردات. - يتحكم الحجة
do_lowercaseفي تحويل الأحرف إلى صيغة صغيرة (يتم ضبطها تلقائياً لمفردات النماذج المُدرَّبة مسبقاً).
يرث هذا المُجزِّئ من PreTrainedTokenizer الذي يحتوي على معظم الطرق الرئيسية. ينبغي للمستخدمين الرجوع إلى هذه الفئة الأصلية لمزيد من المعلومات حول تلك الطرق.
build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → List[int]
المعاملات
- token_ids_0 (
List[int]) — قائمة بالمعرّفات التي ستُضاف إليها الرموز الخاصة. - token_ids_1 (
List[int]، اختياري) — قائمة اختيارية ثانية من المعرّفات لأزواج التسلسلات.
يعيد
List[int]
قائمة معرفات الإدخال مع الرموز الخاصة المناسبة.
إنشاء مدخلات النموذج من تسلسل واحد أو زوج من التسلسلات لمهام تصنيف التسلسل عن طريق دمجها وإضافة الرموز الخاصة. يتبع تسلسل XLM التنسيق التالي:
- تسلسل واحد:
<s> X </s> - زوج من التسلسلات:
<s> A </s> B </s>
يحوّل تسلسل الرموز (نص) إلى نص واحد.
get_special_tokens_mask
< source >( token_ids_0: listtoken_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → List[int]
المعاملات
- token_ids_0 (
List[int]) — قائمة من المعرّفات. - token_ids_1 (
List[int]، اختياري) — قائمة اختيارية ثانية من المعرّفات لأزواج التسلسلات. - already_has_special_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كانت قائمة الرموز (tokens) منسّقة مسبقًا برموز خاصة للنموذج أم لا.
يعيد
List[int]
قائمة من الأعداد الصحيحة في المدى [0, 1]: 1 للرمز الخاص، و0 لرمز التسلسل.
استرجاع معرّفات التسلسل من قائمة الرموز التي لم تُضف إليها رموز خاصة. يُستدعى هذا الأسلوب عند إضافة الرموز الخاصة باستخدام أسلوب prepare_for_model في مُجزّئ النص.
FlaubertModel
فئة transformers.FlaubertModel
< source >( config: FlaubertConfig )
المعاملات
- config (FlaubertConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Flaubert الأساسي الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonelangs: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonelengths: typing.Optional[torch.LongTensor] = Nonecache: dict[str, torch.Tensor] | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutput or tuple(torch.Tensor)
المعاملات
- input_ids (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا.يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- attention_mask (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- langs (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — تسلسل موازٍ من الرموز يُستخدم للإشارة إلى لغة كل رمز في المدخلات. الفهارس هي معرّفات اللغات التي يمكن الحصول عليها من أسماء اللغات باستخدام خريطتي تحويل موفّرتين في إعدادات النموذج (تُوفَّر فقط للنماذج متعددة اللغات). وبشكل أدق، فإن خريطة من اسم اللغة إلى معرّف اللغة توجد فيmodel.config.lang2id(وهي قاموس من السلاسل النصية إلى الأعداد الصحيحة، وخريطة من معرّف اللغة إلى اسم اللغة توجد فيmodel.config.id2lang(قاموس من الأعداد الصحيحة إلى السلاسل النصية). انظر إلى أمثلة الاستخدام المفصّلة في التوثيق المتعدد اللغات.راجع أمثلة الاستخدام المفصّلة في التوثيق متعدد اللغات.
- token_type_ids (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار المؤشرات من[0, 1]:- 0 يتوافق مع رمز sentence A،
- 1 يتوافق مع رمز sentence B.
- position_ids (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها ضمن النطاق[0, config.n_positions - 1]. - lengths (
torch.LongTensorمن الشكل(batch_size,)، اختياري) — طول كل جملة يمكن استخدامه لتجنب تنفيذ الانتباه على فهارس رموز الحشو. يمكنك أيضًا استخدامattention_maskللحصول على نفس النتيجة (انظر أعلاه)، وقد أبقينا عليه هنا من أجل التوافق. الفهارس المختارة في[0, ..., input_ids.size(-1)]: - cache (
dict[str, torch.Tensor]، اختياري) — قاموس من السلاسل النصية إلىtorch.Tensorيحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه) كما يحسبها النموذج (انظر مخرجcacheأدناه). يمكن استخدامه لتسريع فك الترميز التسلسلي. سيُعدَّل كائن القاموس في مكانه أثناء المرور الأمامي لإضافة الحالات المخفية المحسوبة حديثًا. - inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - 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) وتتضمن عناصر مختلفة اعتماداً على الإعداد (FlaubertConfig) والمدخلات.
تتجاوز طريقة FlaubertModel الخاصة بالتقديم (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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
FlaubertWithLMHeadModel
فئة transformers.FlaubertWithLMHeadModel
< source >( config: FlaubertConfig )
المعاملات
- config (FlaubertConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Flaubert transformer مع رأس لنمذجة اللغة في الأعلى (طبقة خطية بأوزان مرتبطة بتضمينات الإدخال).
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonelangs: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonelengths: typing.Optional[torch.Tensor] = Nonecache: dict[str, torch.Tensor] | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → MaskedLMOutput 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 للرموز التي تم إخفاؤها.
- langs (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — تسلسل موازٍ من الرموز يُستخدم للإشارة إلى لغة كل رمز في المدخلات. الفهارس هي معرّفات اللغات التي يمكن الحصول عليها من أسماء اللغات باستخدام خريطتي تحويل موفّرتين في إعدادات النموذج (تُوفَّر فقط للنماذج متعددة اللغات). وبشكل أدق، فإن خريطة من اسم اللغة إلى معرّف اللغة توجد فيmodel.config.lang2id(وهي قاموس من السلاسل النصية إلى الأعداد الصحيحة، وخريطة من معرّف اللغة إلى اسم اللغة توجد فيmodel.config.id2lang(قاموس من الأعداد الصحيحة إلى السلاسل النصية). انظر إلى أمثلة الاستخدام المفصّلة في التوثيق المتعدد اللغات.راجع أمثلة الاستخدام المفصّلة في التوثيق متعدد اللغات.
- token_type_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار المؤشرات من[0, 1]:- 0 يتوافق مع رمز sentence A،
- 1 يتوافق مع رمز sentence B.
- position_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها ضمن النطاق[0, config.n_positions - 1]. - lengths (
torch.LongTensorمن الشكل(batch_size,)، اختياري) — طول كل جملة يمكن استخدامه لتجنب تنفيذ الانتباه على فهارس رموز الحشو. يمكنك أيضًا استخدامattention_maskللحصول على نفس النتيجة (انظر أعلاه)، وقد أبقينا عليه هنا من أجل التوافق. الفهارس المختارة في[0, ..., input_ids.size(-1)]: - cache (
dict[str, torch.Tensor]، اختياري) — قاموس من السلاسل النصية إلىtorch.Tensorيحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه) كما يحسبها النموذج (انظر مخرجcacheأدناه). يمكن استخدامه لتسريع فك الترميز التسلسلي. سيُعدَّل كائن القاموس في مكانه أثناء المرور الأمامي لإضافة الحالات المخفية المحسوبة حديثًا. - inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - labels (
torch.LongTensorمن الشكل(batch_size, sequence_length)، اختياري) — التسميات لنمذجة اللغة. لاحظ أن التسميات تُزاح داخل النموذج، أي يمكنك تعيينlabels = input_idsيتم اختيار الفهارس من[-100, 0, ..., config.vocab_size]تُتجاهل (تُقنَّع) جميع التسميات المعينة إلى-100ويتم حساب الخسارة فقط للتسميات الموجودة في[0, ..., config.vocab_size] - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - output_hidden_states (
bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجعhidden_statesضمن الموترات المُرجعة للحصول على مزيد من التفاصيل. - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.
يعيد
MaskedLMOutput أو tuple(torch.Tensor)
MaskedLMOutput أو مجموعة (tuple) من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (FlaubertConfig) والمدخلات.
تتجاوز طريقة FlaubertWithLMHeadModel الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorof shape(1,), اختياري, يُعاد عند توفيرlabels) — خسارة نمذجة اللغة المقنّعة (MLM).logits (
torch.Tensorمن الشكل(batch_size, sequence_length, config.vocab_size)) — درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل 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, sequence_length, sequence_length).أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
مثال:
>>> import torch
>>> from transformers import AutoTokenizer, FlaubertWithLMHeadModel
>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertWithLMHeadModel.from_pretrained("flaubert/flaubert_base_uncased")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs, labels=inputs["input_ids"])
>>> loss = outputs.loss
>>> logits = outputs.logitsFlaubertForSequenceClassification
فئة transformers.FlaubertForSequenceClassification
< source >( config: FlaubertConfig )
المعاملات
- config (FlaubertConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Flaubert مع رأس تصنيف/انحدار تسلسلي في الأعلى (طبقة خطية فوق المخرجات المجمعة) على سبيل المثال، لمهام GLUE.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonelangs: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonelengths: typing.Optional[torch.Tensor] = Nonecache: dict[str, torch.Tensor] | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → SequenceClassifierOutput 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 للرموز التي تم إخفاؤها.
- langs (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — تسلسل موازٍ من الرموز يُستخدم للإشارة إلى لغة كل رمز في المدخلات. الفهارس هي معرّفات اللغات التي يمكن الحصول عليها من أسماء اللغات باستخدام خريطتي تحويل موفّرتين في إعدادات النموذج (تُوفَّر فقط للنماذج متعددة اللغات). وبشكل أدق، فإن خريطة من اسم اللغة إلى معرّف اللغة توجد فيmodel.config.lang2id(وهي قاموس من السلاسل النصية إلى الأعداد الصحيحة، وخريطة من معرّف اللغة إلى اسم اللغة توجد فيmodel.config.id2lang(قاموس من الأعداد الصحيحة إلى السلاسل النصية). انظر إلى أمثلة الاستخدام المفصّلة في التوثيق المتعدد اللغات.راجع أمثلة الاستخدام المفصّلة في التوثيق متعدد اللغات.
- token_type_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار المؤشرات من[0, 1]:- 0 يتوافق مع رمز sentence A،
- 1 يتوافق مع رمز sentence B.
- position_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها ضمن النطاق[0, config.n_positions - 1]. - lengths (
torch.LongTensorمن الشكل(batch_size,)، اختياري) — طول كل جملة، ويمكن استخدامه لتجنب تنفيذ الانتباه على فهارس رموز الحشو. يمكنك أيضاً استخدام attention_mask للحصول على النتيجة نفسها (انظر أعلاه)، وقد أبقينا عليه هنا من أجل التوافق. الفهارس المختارة ضمن[0, ..., input_ids.size(-1)]. - cache (
dict[str, torch.Tensor], اختياري) — مثال منEncoderDecoderCacheيحتوي على حالات KV المحسوبة مسبقًا. يمكن استخدامه لتسريع فك الترميز التسلسلي. - 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يتم حساب خسارة التصنيف (الإنتروبيا المتقاطعة). - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - output_hidden_states (
bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجعhidden_statesضمن الموترات المُرجعة للحصول على مزيد من التفاصيل. - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.
يعيد
SequenceClassifierOutput أو tuple(torch.Tensor)
SequenceClassifierOutput أو مجموعة مرتبة من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (FlaubertConfig) والمدخلات.
تتجاوز طريقة FlaubertForSequenceClassification الخاصة بالتقديم (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, sequence_length, sequence_length).أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
مثال على تصنيف بوسم واحد:
>>> import torch
>>> from transformers import AutoTokenizer, FlaubertForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertForSequenceClassification.from_pretrained("flaubert/flaubert_base_uncased")
>>> 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 = FlaubertForSequenceClassification.from_pretrained("flaubert/flaubert_base_uncased", num_labels=num_labels)
>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...مثال على تصنيف متعدد التسميات:
>>> import torch
>>> from transformers import AutoTokenizer, FlaubertForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertForSequenceClassification.from_pretrained("flaubert/flaubert_base_uncased", 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 = FlaubertForSequenceClassification.from_pretrained(
... "flaubert/flaubert_base_uncased", 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).lossFlaubertForMultipleChoice
فئة transformers.FlaubertForMultipleChoice
< source >( config: FlaubertConfig*inputs**kwargs )
المعاملات
- config (FlaubertConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Flaubert مع رأس تصنيف متعدد الخيارات في الأعلى (طبقة خطية فوق المخرجات المجمعة وsoftmax) على سبيل المثال لمهام RocStories/SWAG.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonelangs: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonelengths: typing.Optional[torch.Tensor] = Nonecache: dict[str, torch.Tensor] | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → MultipleChoiceModelOutput or tuple(torch.Tensor)
المعاملات
- input_ids (
torch.LongTensorبشكل(batch_size, num_choices, sequence_length)) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات.يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- attention_mask (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- langs (
torch.LongTensorمن الشكل(batch_size, num_choices, sequence_length), اختياري) — تسلسل موازٍ من الرموز يُستخدم للإشارة إلى لغة كل رمز في المدخلات. الفهارس هي معرّفات اللغات التي يمكن الحصول عليها من أسماء اللغات باستخدام خريطتي تحويل موفّرتين في إعدادات النموذج (تُوفَّر فقط للنماذج متعددة اللغات). وبشكل أدق، فإن خريطة اسم اللغة إلى معرّف اللغة موجودة فيmodel.config.lang2id(وهي قاموس من السلاسل النصية إلى الأعداد الصحيحة) و خريطة معرّف اللغة إلى اسم اللغة موجودة فيmodel.config.id2lang(قاموس من الأعداد الصحيحة إلى السلاسل النصية). راجع أمثلة الاستخدام المفصّلة في التوثيق المتعدد اللغات.راجع أمثلة الاستخدام المفصّلة في التوثيق متعدد اللغات.
- token_type_ids (
torch.LongTensorبشكل(batch_size, num_choices, sequence_length), اختياري) — مؤشرات رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار المؤشرات من[0, 1]:- 0 يتوافق مع رمز sentence A،
- 1 يتوافق مع رمز sentence B.
- position_ids (
torch.LongTensorبشكل(batch_size, num_choices, sequence_length), اختياري) — مؤشرات مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها ضمن النطاق[0, config.max_position_embeddings - 1]. - lengths (
torch.LongTensorمن الشكل(batch_size,)، اختياري) — طول كل جملة، ويمكن استخدامه لتجنب تنفيذ الانتباه على فهارس رموز الحشو. يمكنك أيضاً استخدام attention_mask للحصول على النتيجة نفسها (انظر أعلاه)، وقد أبقينا عليه هنا من أجل التوافق. الفهارس المختارة ضمن[0, ..., input_ids.size(-1)]. - cache (
dict[str, torch.Tensor], اختياري) — مثال منEncoderDecoderCacheيحتوي على حالات KV المحسوبة مسبقًا. يمكن استخدامه لتسريع فك الترميز التسلسلي. - inputs_embeds (
torch.Tensorمن الشكل(batch_size, num_choices, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث التضمينية الداخلية للنموذج. - labels (
torch.LongTensorمن الشكل(batch_size,)، اختياري) — التسميات لحساب خسارة تصنيف الاختيار المتعدد. يجب أن تكون الفهارس ضمن[0, ..., num_choices-1]حيثnum_choicesهو حجم البُعد الثاني من المصفوفات المدخلة. (انظرinput_idsأعلاه) - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - output_hidden_states (
bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجعhidden_statesضمن الموترات المُرجعة للحصول على مزيد من التفاصيل. - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.
يعيد
MultipleChoiceModelOutput أو tuple(torch.Tensor)
MultipleChoiceModelOutput أو مجموعة مرتبة من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (FlaubertConfig) والمدخلات.
تتجاوز طريقة FlaubertForMultipleChoice الخاصة بالتقديم الأمامي (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorمن الشكل (1,)، اختياري، يُعاد عند توفيرlabels) — خسارة التصنيف.logits (
torch.Tensorمن الشكل(batch_size, num_choices)) — num_choices هو البُعد الثاني للمصفوفات المدخلة. (انظر input_ids أعلاه).درجات التصنيف (قبل 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, sequence_length, sequence_length).أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
مثال:
>>> from transformers import AutoTokenizer, FlaubertForMultipleChoice
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertForMultipleChoice.from_pretrained("flaubert/flaubert_base_uncased")
>>> 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.logitsFlaubertForTokenClassification
فئة transformers.FlaubertForTokenClassification
< source >( config: FlaubertConfig )
المعاملات
- config (FlaubertConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Flaubert transformer مع رأس تصنيف الرموز في الأعلى (طبقة خطية فوق مخرجات الحالات المخفية) على سبيل المثال لمهام التعرف على الكيانات المسمّاة (NER).
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonelangs: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonelengths: typing.Optional[torch.Tensor] = Nonecache: dict[str, torch.Tensor] | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → TokenClassifierOutput 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 للرموز التي تم إخفاؤها.
- langs (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — تسلسل موازٍ من الرموز يُستخدم للإشارة إلى لغة كل رمز في المدخلات. الفهارس هي معرّفات اللغات التي يمكن الحصول عليها من أسماء اللغات باستخدام خريطتي تحويل موفّرتين في إعدادات النموذج (تُوفَّر فقط للنماذج متعددة اللغات). وبشكل أدق، فإن خريطة من اسم اللغة إلى معرّف اللغة توجد فيmodel.config.lang2id(وهي قاموس من السلاسل النصية إلى الأعداد الصحيحة، وخريطة من معرّف اللغة إلى اسم اللغة توجد فيmodel.config.id2lang(قاموس من الأعداد الصحيحة إلى السلاسل النصية). انظر إلى أمثلة الاستخدام المفصّلة في التوثيق المتعدد اللغات.راجع أمثلة الاستخدام المفصّلة في التوثيق متعدد اللغات.
- token_type_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار المؤشرات من[0, 1]:- 0 يتوافق مع رمز sentence A،
- 1 يتوافق مع رمز sentence B.
- position_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها ضمن النطاق[0, config.n_positions - 1]. - lengths (
torch.LongTensorمن الشكل(batch_size,)، اختياري) — طول كل جملة، ويمكن استخدامه لتجنب تنفيذ الانتباه على فهارس رموز الحشو. يمكنك أيضاً استخدام attention_mask للحصول على النتيجة نفسها (انظر أعلاه)، وقد أبقينا عليه هنا من أجل التوافق. الفهارس المختارة ضمن[0, ..., input_ids.size(-1)]. - cache (
dict[str, torch.Tensor], اختياري) — مثال منEncoderDecoderCacheيحتوي على حالات KV المحسوبة مسبقًا. يمكن استخدامه لتسريع فك الترميز التسلسلي. - inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - labels (
torch.LongTensorمن الشكل(batch_size, sequence_length)، اختياري) — التسميات لحساب خسارة تصنيف الرموز. يجب أن تكون الفهارس ضمن[0, ..., config.num_labels - 1]. - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - output_hidden_states (
bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجعhidden_statesضمن الموترات المُرجعة للحصول على مزيد من التفاصيل. - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.
يعيد
TokenClassifierOutput أو tuple(torch.Tensor)
TokenClassifierOutput أو مجموعة مرتبة من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (FlaubertConfig) والمدخلات.
تُعيد طريقة FlaubertForTokenClassification الخاصة بالتقديم (forward) تعريف الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorof shape(1,), اختياري, يُعاد عند توفيرlabels) — خسارة التصنيف.logits (
torch.Tensorمن الشكل(batch_size, sequence_length, config.num_labels)) — درجات التصنيف (قبل 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, sequence_length, sequence_length).أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
مثال:
>>> from transformers import AutoTokenizer, FlaubertForTokenClassification
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertForTokenClassification.from_pretrained("flaubert/flaubert_base_uncased")
>>> 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)
...FlaubertForQuestionAnsweringSimple
فئة transformers.FlaubertForQuestionAnsweringSimple
< source >( config: FlaubertConfig )
المعاملات
- config (FlaubertConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Flaubert مع رأس تصنيف مقاطع في الأعلى لمهام الإجابة الاستخراجية على الأسئلة مثل 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] = Nonelangs: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonelengths: typing.Optional[torch.Tensor] = Nonecache: dict[str, torch.Tensor] | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonestart_positions: typing.Optional[torch.Tensor] = Noneend_positions: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → QuestionAnsweringModelOutput 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 للرموز التي تم إخفاؤها.
- langs (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — تسلسل موازٍ من الرموز يُستخدم للإشارة إلى لغة كل رمز في المدخلات. الفهارس هي معرّفات اللغات التي يمكن الحصول عليها من أسماء اللغات باستخدام خريطتي تحويل موفّرتين في إعدادات النموذج (تُوفَّر فقط للنماذج متعددة اللغات). وبشكل أدق، فإن خريطة من اسم اللغة إلى معرّف اللغة توجد فيmodel.config.lang2id(وهي قاموس من السلاسل النصية إلى الأعداد الصحيحة، وخريطة من معرّف اللغة إلى اسم اللغة توجد فيmodel.config.id2lang(قاموس من الأعداد الصحيحة إلى السلاسل النصية). انظر إلى أمثلة الاستخدام المفصّلة في التوثيق المتعدد اللغات.راجع أمثلة الاستخدام المفصّلة في التوثيق متعدد اللغات.
- token_type_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار المؤشرات من[0, 1]:- 0 يتوافق مع رمز sentence A،
- 1 يتوافق مع رمز sentence B.
- position_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها ضمن النطاق[0, config.n_positions - 1]. - lengths (
torch.LongTensorمن الشكل(batch_size,)، اختياري) — طول كل جملة، ويمكن استخدامه لتجنب تنفيذ الانتباه على فهارس رموز الحشو. يمكنك أيضاً استخدام attention_mask للحصول على النتيجة نفسها (انظر أعلاه)، وقد أبقينا عليه هنا من أجل التوافق. الفهارس المختارة ضمن[0, ..., input_ids.size(-1)]. - cache (
dict[str, torch.Tensor], اختياري) — مثال منEncoderDecoderCacheيحتوي على حالات KV المحسوبة مسبقًا. يمكن استخدامه لتسريع فك الترميز التسلسلي. - 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). لا تُؤخذ المواضع خارج التسلسل في الاعتبار عند حساب الخسارة. - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - output_hidden_states (
bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجعhidden_statesضمن الموترات المُرجعة للحصول على مزيد من التفاصيل. - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.
يعيد
QuestionAnsweringModelOutput أو tuple(torch.Tensor)
QuestionAnsweringModelOutput أو مجموعة مرتبة من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (FlaubertConfig) والمدخلات.
تتجاوز طريقة FlaubertForQuestionAnsweringSimple الخاصة بالتقديم (forward) الطريقة الخاصة __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).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, FlaubertForQuestionAnsweringSimple
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertForQuestionAnsweringSimple.from_pretrained("flaubert/flaubert_base_uncased")
>>> 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)
...FlaubertForQuestionAnswering
فئة transformers.FlaubertForQuestionAnswering
< source >( config: FlaubertConfig )
المعاملات
- config (FlaubertConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Flaubert transformer مع رأس تصنيف مقاطع (span classification head) في الأعلى لمهام الإجابة الاستخراجية على الأسئلة مثل 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] = Nonelangs: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonelengths: typing.Optional[torch.Tensor] = Nonecache: dict[str, torch.Tensor] | None = 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] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → FlaubertForQuestionAnsweringOutput 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 للرموز التي تم إخفاؤها.
- langs (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — تسلسل موازٍ من الرموز يُستخدم للإشارة إلى لغة كل رمز في المدخلات. الفهارس هي معرّفات اللغات التي يمكن الحصول عليها من أسماء اللغات باستخدام خريطتي تحويل موفّرتين في إعدادات النموذج (تُوفَّر فقط للنماذج متعددة اللغات). وبشكل أدق، فإن خريطة من اسم اللغة إلى معرّف اللغة توجد فيmodel.config.lang2id(وهي قاموس من السلاسل النصية إلى الأعداد الصحيحة، وخريطة من معرّف اللغة إلى اسم اللغة توجد فيmodel.config.id2lang(قاموس من الأعداد الصحيحة إلى السلاسل النصية). انظر إلى أمثلة الاستخدام المفصّلة في التوثيق المتعدد اللغات.راجع أمثلة الاستخدام المفصّلة في التوثيق متعدد اللغات.
- token_type_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار المؤشرات من[0, 1]:- 0 يتوافق مع رمز sentence A،
- 1 يتوافق مع رمز sentence B.
- position_ids (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها ضمن النطاق[0, config.n_positions - 1]. - lengths (
torch.LongTensorمن الشكل(batch_size,)، اختياري) — طول كل جملة، ويمكن استخدامه لتجنب تنفيذ الانتباه على فهارس رموز الحشو. يمكنك أيضاً استخدام attention_mask للحصول على النتيجة نفسها (انظر أعلاه)، وقد أبقينا عليه هنا من أجل التوافق. الفهارس المختارة ضمن[0, ..., input_ids.size(-1)]. - cache (
dict[str, torch.Tensor], اختياري) — مثال منEncoderDecoderCacheيحتوي على حالات KV المحسوبة مسبقًا. يمكن استخدامه لتسريع فك الترميز التسلسلي. - 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 تعني أن الرمز غير مخفي. - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - output_hidden_states (
bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجعhidden_statesضمن الموترات المُرجعة للحصول على مزيد من التفاصيل. - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.
يعيد
FlaubertForQuestionAnsweringOutput أو tuple(torch.Tensor)
FlaubertForQuestionAnsweringOutput أو مجموعة مرتبة من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على التهيئة (FlaubertConfig) والمدخلات.
تُعيد طريقة FlaubertForQuestionAnswering الخاصة بالتقديم (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للإجابات.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, FlaubertForQuestionAnswering
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("FacebookAI/xlm-mlm-en-2048")
>>> model = FlaubertForQuestionAnswering.from_pretrained("FacebookAI/xlm-mlm-en-2048")
>>> 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