Transformers documentation
نماذج مُشفِّر-مُفكِّك الرؤية
نُشر هذا النموذج في أوراق HF في 21 سبتمبر 2021، وأُضيف إلى مكتبة Hugging Face Transformers في 13 أكتوبر 2021.
نماذج مُشفِّر-مُفكِّك الرؤية
نظرة عامة
يمكن استخدام VisionEncoderDecoderModel لتبني نموذج من الصورة إلى النص باستخدام أي نموذج رؤية مُدرَّب مسبقًا يعتمد على Transformers كمُشفِّر (مثل ViT، BEiT، DeiT، Swin) وأي نموذج لغة مُدرَّب مسبقًا كمُفكِّك (مثل RoBERTa، GPT2، BERT، DistilBERT).
لقد تبيّن فعالية تهيئة نماذج تحويل الصورة إلى تسلسل نصي باستخدام نقاط تفتيش مُسبقة التدريب، كما هو موضح على سبيل المثال في TrOCR: Transformer-based Optical Character Recognition with Pre-trained Models لمينغهاو لي، وتينغتشاو ليو، ولي كوي، وييجوان لو، وديني فلورينسيو، وتشا تشانغ، وتشو جون لي، وفورو وي.
بعد تدريب/ضبط نموذج VisionEncoderDecoderModel، يمكن حفظه/تحميله تمامًا مثل أي نماذج أخرى (انظر الأمثلة أدناه لمزيد من المعلومات).
من أمثلة التطبيقات تسمية الصور، حيث يُستخدم المُشفِّر لتشفير الصورة، ثم يولّد نموذج اللغة التلقائي التوليد التسمية. ومن الأمثلة الأخرى التعرف الضوئي على الحروف. راجع TrOCR، وهو مثال على VisionEncoderDecoderModel.
تهيئة VisionEncoderDecoderModel عشوائياً من تهيئة النموذج
يمكن تهيئة VisionEncoderDecoderModel بشكل عشوائي من إعدادات المُشفِّر والمُفكِّك. في المثال التالي، نُظهر كيفية القيام بذلك باستخدام إعداد ViTModel الافتراضي للمُشفِّر
وإعداد BertForCausalLM الافتراضي للمُفكِّك.
from transformers import BertConfig, VisionEncoderDecoderConfig, VisionEncoderDecoderModel, ViTConfig
config_encoder = ViTConfig()
config_decoder = BertConfig()
config = VisionEncoderDecoderConfig.from_encoder_decoder_configs(config_encoder, config_decoder)
model = VisionEncoderDecoderModel(config=config)تهيئة VisionEncoderDecoderModel من مُشفِّر مُدرَّب مسبقًا ومُفكِّك مُدرَّب مسبقًا
يمكن تهيئة VisionEncoderDecoderModel من نقطة تفتيش مُسبقة التدريب للمُشفِّر ونقطة تفتيش مُسبقة التدريب للمُفكِّك. لاحظ أن أي نموذج رؤية مُسبَق التدريب يعتمد على Transformers، مثل Swin، يمكن أن يعمل كمُشفِّر، وكلا من النماذج التشفيرية الذاتية المُسبقة التدريب، مثل BERT، والنماذج اللغوية السببية المُسبقة التدريب، مثل GPT2، وكذلك الجزء المُفكِّك المُسبَق التدريب من نماذج التسلسل إلى التسلسل، مثل مُفكِّك BART، يمكن استخدامه كمُفكِّك.
اعتمادًا على البنية التي تختارها كمُفكِّك، قد يتم تهيئة طبقات الانتباه المتقاطع بشكل عشوائي.
يتطلب تهيئة VisionEncoderDecoderModel من نقاط تفتيش مُسبقة التدريب للمُشفِّر والمُفكِّك ضبط النموذج الدقيق على مهمة لاحقة، كما هو موضح في منشور المدونة Warm-starting-encoder-decoder.
لذلك، توفر فئة VisionEncoderDecoderModel طريقة VisionEncoderDecoderModel.from_encoder_decoder_pretrained().
from transformers import VisionEncoderDecoderModel
model = VisionEncoderDecoderModel.from_encoder_decoder_pretrained(
"microsoft/swin-base-patch4-window7-224-in22k", "google-bert/bert-base-uncased"
)تحميل نقطة تفتيش VisionEncoderDecoderModel موجودة مسبقاً وتنفيذ الاستدلال
لتحميل نقاط التفتيش المُحسَّنة من فئة VisionEncoderDecoderModel، يوفر VisionEncoderDecoderModel طريقة from_pretrained(...) تمامًا مثل أي بنية نموذج أخرى في Transformers.
لتنفيذ الاستدلال، يُستخدم أسلوب generate، والذي يتيح توليد النص بشكل ذاتي التراجع. يدعم هذا الأسلوب أشكالاً مختلفة من فك الترميز، مثل الجشع، والبحث بالحزمة، والعينة متعددة الحدود.
import requests
from PIL import Image
from transformers import GPT2TokenizerFast, ViTImageProcessor, VisionEncoderDecoderModel
# load a fine-tuned image captioning model and corresponding tokenizer and image processor
model = VisionEncoderDecoderModel.from_pretrained("nlpconnect/vit-gpt2-image-captioning", device_map="auto")
tokenizer = GPT2TokenizerFast.from_pretrained("nlpconnect/vit-gpt2-image-captioning")
image_processor = ViTImageProcessor.from_pretrained("nlpconnect/vit-gpt2-image-captioning")
# let's perform inference on an image
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
pixel_values = image_processor(image, return_tensors="pt").to(model.device).pixel_values
# autoregressively generate caption (uses greedy decoding by default)
generated_ids = model.generate(pixel_values)
generated_text = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(generated_text)
a cat laying on a blanket next to a cat laying on a bedالتدريب
بمجرد إنشاء النموذج، يمكن ضبطه بدقة على مجموعة بيانات من أزواج (صورة، نص) بطريقة مشابهة لتدريب نماذج BART أو T5 أو أي نموذج آخر من نوع المُشفِّر-المُفكِّك.
كما ترون، لا يتطلب النموذج سوى مدخلين لحساب الخسارة: pixel_values (وهي الصور) وlabels (وهي input_ids للتسلسل المستهدف المُشفَّر).
from datasets import load_dataset
from transformers import BertTokenizer, VisionEncoderDecoderModel, ViTImageProcessor
image_processor = ViTImageProcessor.from_pretrained("google/vit-base-patch16-224-in21k")
tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-uncased")
model = VisionEncoderDecoderModel.from_encoder_decoder_pretrained(
"google/vit-base-patch16-224-in21k", "google-bert/bert-base-uncased"
)
model.config.decoder_start_token_id = tokenizer.cls_token_id
model.config.pad_token_id = tokenizer.pad_token_id
dataset = load_dataset("huggingface/cats-image")
image = dataset["test"]["image"][0]
pixel_values = image_processor(image, return_tensors="pt").to(model.device).pixel_values
labels = tokenizer(
"an image of two cats chilling on a couch",
return_tensors="pt",
).input_ids
# the forward function automatically creates the correct decoder_input_ids
loss = model(pixel_values=pixel_values, labels=labels).lossتمت مساهمة هذا النموذج من قِبل nielsr.
VisionEncoderDecoderConfig
فئة transformers.VisionEncoderDecoderConfig
< 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 = 0id2label: 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 = Noneis_encoder_decoder: bool = Trueencoder: transformers.configuration_utils.PreTrainedConfig | dict | None = Nonedecoder: transformers.configuration_utils.PreTrainedConfig | dict | None = None )
المعاملات
- is_encoder_decoder (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان النموذج يُستخدم كمُشفِّر/مُفكِّك أم لا. - encoder (
Union[~configuration_utils.PreTrainedConfig, dict], اختياري) — كائن الإعداد أو قاموس العمود الفقري للترميز. - decoder (
Union[~configuration_utils.PreTrainedConfig, dict], اختياري) — كائن الإعدادات أو قاموس هيكل فك الترميز (decoder backbone).
هذه فئة الإعدادات المخزنة لإعدادات نموذج Vision Encoder Decoder. تُستخدم لتوليد نموذج Vision Encoder Decoder وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن إنشاء إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ None
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
أمثلة:
>>> from transformers import BertConfig, ViTConfig, VisionEncoderDecoderConfig, VisionEncoderDecoderModel
>>> # Initializing a ViT & BERT style configuration
>>> config_encoder = ViTConfig()
>>> config_decoder = BertConfig()
>>> config = VisionEncoderDecoderConfig(encoder=config_encoder, decoder=config_decoder)
>>> # Initializing a ViTBert model (with random weights) from a ViT & google-bert/bert-base-uncased style configurations
>>> model = VisionEncoderDecoderModel(config=config)
>>> # Accessing the model configuration
>>> config_encoder = model.config.encoder
>>> config_decoder = model.config.decoder
>>> # set decoder config to causal lm
>>> config_decoder.is_decoder = True
>>> config_decoder.add_cross_attention = True
>>> # Saving the model, including its configuration
>>> model.save_pretrained("my-model")
>>> # loading model and config from pretrained folder
>>> encoder_decoder_config = VisionEncoderDecoderConfig.from_pretrained("my-model")
>>> model = VisionEncoderDecoderModel.from_pretrained("my-model", config=encoder_decoder_config)from_encoder_decoder_configs
< source >( encoder_config: PreTrainedConfigdecoder_config: PreTrainedConfig**kwargs ) → VisionEncoderDecoderConfig
مثال من كائن التهيئة
أنشئ كائنًا من VisionEncoderDecoderConfig (أو فئة مشتقة منها) من إعدادات نموذج المُشفِّر المُدرَّب مسبقًا وإعدادات نموذج المُفكِّك.
VisionEncoderDecoderModel
فئة transformers.VisionEncoderDecoderModel
< source >( config: transformers.configuration_utils.PreTrainedConfig | None = Noneencoder: transformers.modeling_utils.PreTrainedModel | None = Nonedecoder: transformers.modeling_utils.PreTrainedModel | None = None )
المعاملات
- config (PreTrainedConfig، اختياري) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
- encoder (
PreTrainedModel، اختياري) — نموذج المُشفِّر الذي سيتم استخدامه. - decoder (
PreTrainedModel، اختياري) — نموذج المُفكِّك (decoder) المراد استخدامه.
نموذج Vision Encoder Decoder الأساسي الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( pixel_values: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Noneencoder_outputs: tuple[torch.Tensor] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → Seq2SeqLMOutput or tuple(torch.Tensor)
المعاملات
- pixel_values (
torch.Tensorمن الشكل(batch_size, num_channels, image_size, image_size)، اختياري) — المصفوفات المقابلة للصور المدخلة. يمكن الحصول على قيم البكسل باستخدامimage_processor_class. راجعimage_processor_class.__call__للتفاصيل (processor_classيستخدمimage_processor_classلمعالجة الصور). - decoder_input_ids (
torch.LongTensorبشكل(batch_size, target_sequence_length), اختياري) — مؤشرات رموز تسلسل مدخلات المُفكِّك في قاموس النموذج. يمكن الحصول على المؤشرات باستخدام PreTrainedTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل. ما هي معرّفات المدخلات؟ إذا تم استخدام past_key_values، فيجب إدخال آخر decoder_input_ids فقط بشكل اختياري (راجع past_key_values). أما في التدريب، فيُنشئ النموذج decoder_input_ids تلقائيًا عن طريق إزاحة التسميات إلى اليمين، واستبدال -100 بـ pad_token_id، وإضافة decoder_start_token_id في البداية.يمكن الحصول على الفهارس باستخدام PreTrainedTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للحصول على التفاصيل.
إذا تم استخدام
past_key_values، فاختياريًا لا يتعين إدخال سوى آخرdecoder_input_ids(انظرpast_key_values).للتدريب، يتم إنشاء
decoder_input_idsتلقائيًا بواسطة النموذج عن طريق إزاحةlabelsإلى اليمين، واستبدال -100 بـpad_token_id، وإضافةdecoder_start_token_idفي البداية. - decoder_attention_mask (
torch.BoolTensorof shape(batch_size, target_sequence_length), اختياري) — السلوك الافتراضي: توليد متجه يتجاهل رموز الحشو فيdecoder_input_ids. كما سيتم استخدام قناع سببي (Causal mask) افتراضيًا. - encoder_outputs (
tuple[torch.Tensor]، اختياري) — يتكون العنصر المُجمَّع من (last_hidden_state، اختياري:hidden_states، اختياري:attentions)last_hidden_stateذو الشكل(batch_size, sequence_length, hidden_size)، اختياري) هو تسلسل من حالات المخفية (hidden-states) عند مخرج الطبقة الأخيرة من المُشفِّر. يُستخدم في الانتباه المتقاطع (cross-attention) داخل المُفكِّك. - past_key_values (
~cache_utils.Cache, اختياري) — حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها لتسريع فك الترميز التسلسلي. يتكون هذا عادةً منpast_key_valuesالذي يعيده النموذج في مرحلة سابقة من فك الترميز، عندماuse_cache=Trueأوconfig.use_cache=True.يُسمح فقط بمرجع Cache كمدخل، راجع دليل ذاكرة kv لدينا. إذا لم يتم تمرير
past_key_values، فسيتم تهيئة DynamicCache افتراضياً.سيُخرج النموذج نفس صيغة الكاش التي تُمرَّر كمدخل.
عند استخدام
past_key_values، يُتوقَّع من المستخدم إدخالinput_idsغير المعالجة فقط (تلك التي لم تُقدَّم حالات مفاتيحها وقيمها السابقة إلى هذا النموذج) بأبعاد(batch_size, unprocessed_length)بدلاً من جميعinput_idsبأبعاد(batch_size, sequence_length). - decoder_inputs_embeds (
torch.Tensorمن الشكل(batch_size, target_sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرdecoder_input_idsيمكنك اختيار تمرير تمثيل مضمّن مباشرة. هذا مفيد إذا كنت تريد مزيدًا من التحكم في كيفية تحويل فهارسdecoder_input_idsإلى المتجهات المرتبطة بها مقارنةً بمصفوفة البحث التضمينية الداخلية للنموذج. - labels (
torch.LongTensorof shape(batch_size, sequence_length), اختياري) — التسميات لحساب خسارة نمذجة اللغة المقنّعة (masked language modeling loss) للمفكّك. يجب أن تكون الفهارس ضمن[-100, 0, ..., config.vocab_size](انظرinput_idsdocstring). يتم تجاهل الرموز (tokens) التي فهارسها مضبوطة على-100(أي أنها مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن[0, ..., config.vocab_size] - use_cache (
bool، اختياري) — إذا تم تعيينه إلىTrue، تُعاد حالات المفاتيح والقيمpast_key_valuesويمكن استخدامها لتسريع فك الترميز (انظرpast_key_values). - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - output_hidden_states (
bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجعhidden_statesضمن الموترات المُرجعة للحصول على مزيد من التفاصيل. - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.
يعيد
Seq2SeqLMOutput أو tuple(torch.Tensor)
Seq2SeqLMOutput أو مجموعة مرتبة من
torch.Tensor (في حال تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (VisionEncoderDecoderConfig) والمدخلات.
تتجاوز طريقة VisionEncoderDecoderModel الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorof shape(1,), اختياري, يُعاد عند توفيرlabels) — خسارة نمذجة اللغة.logits (
torch.Tensorمن الشكل(batch_size, sequence_length, config.vocab_size)) — درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).past_key_values (
EncoderDecoderCache، اختياري، يُعاد عند تمريرuse_cache=Trueأو عند تعيينconfig.use_cache=True) — إنه كائن من نوع EncoderDecoderCache. لمزيد من التفاصيل، راجع دليل ذاكرة kv.تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها (انظر مدخل
past_key_values) لتسريع فك الترميز التسلسلي.decoder_hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) بأبعاد(batch_size, sequence_length, hidden_size).حالات المخفية (Hidden states) لمفكّك الترميز (decoder) عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي (initial embedding).
decoder_attentions (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه في المُفكِّك، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
cross_attentions (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه لطبقة الانتباه المتقاطع في المُفكِّك، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه المتقاطع.
encoder_last_hidden_state (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من مُشفِّر النموذج.encoder_hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) من الشكل(batch_size, sequence_length, hidden_size).حالات المخفية للمشفّر عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي.
encoder_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 AutoProcessor, VisionEncoderDecoderModel
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> from PIL import Image
>>> import torch
>>> processor = AutoProcessor.from_pretrained("microsoft/trocr-base-handwritten")
>>> model = VisionEncoderDecoderModel.from_pretrained("microsoft/trocr-base-handwritten")
>>> # load image from the IAM dataset
>>> url = "https://fki.tic.heia-fr.ch/static/img/a01-122-02.jpg"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read())).convert("RGB")
>>> # training
>>> model.config.decoder_start_token_id = processor.tokenizer.eos_token_id
>>> model.config.pad_token_id = processor.tokenizer.pad_token_id
>>> model.config.vocab_size = model.config.decoder.vocab_size
>>> pixel_values = processor(image, return_tensors="pt").pixel_values
>>> text = "hello world"
>>> labels = processor.tokenizer(text, return_tensors="pt").input_ids
>>> outputs = model(pixel_values=pixel_values, labels=labels)
>>> loss = outputs.loss
>>> # inference (generation)
>>> generated_ids = model.generate(pixel_values)
>>> generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]from_encoder_decoder_pretrained
< source >( encoder_pretrained_model_name_or_path: str | None = Nonedecoder_pretrained_model_name_or_path: str | None = None*model_args**kwargs )
المعاملات
- encoder_pretrained_model_name_or_path (
str, اختياري) — المعلومات اللازمة لبدء تشغيل مُشفِّر الصور. يمكن أن يكون:- سلسلة نصية، وهي معرّف النموذج لنموذج مُدرَّب مسبقًا مستضاف داخل مستودع نماذج على huggingface.co. مثال على ذلك هو
google/vit-base-patch16-224-in21k. - مسار إلى مجلد يحتوي على أوزان النموذج المحفوظة باستخدام
save_pretrained()، على سبيل المثال
./my_model_directory/.
- سلسلة نصية، وهي معرّف النموذج لنموذج مُدرَّب مسبقًا مستضاف داخل مستودع نماذج على huggingface.co. مثال على ذلك هو
- decoder_pretrained_model_name_or_path (
str, اختياري, الافتراضي هوNone) — المعلومات اللازمة لبدء تشغيل مُفكِّك النص. يمكن أن يكون:- سلسلة نصية، وهي معرّف النموذج لنموذج مُدرَّب مسبقًا مستضاف داخل مستودع نماذج على huggingface.co.
- مسار إلى مجلد يحتوي على أوزان النموذج المحفوظة باستخدام
save_pretrained()، على سبيل المثال
./my_model_directory/.
- model_args (المتغيرات الموضعية المتبقية، اختياري) —
سيتم تمرير جميع المتغيرات الموضعية المتبقية إلى طريقة
__init__الخاصة بالنموذج الأساسي. - kwargs (قائمة متبقية من معاملات الكلمات المفتاحية، اختياري) —
يمكن استخدامه لتحديث كائن الإعداد (بعد تحميله) وإطلاق النموذج (مثل
output_attentions=True).- لتحديث إعدادات المُشفِّر، استخدم البادئة encoder_ لكل معامل من معاملات الإعداد.
- لتحديث إعدادات المُفكِّك، استخدم البادئة decoder_ لكل معامل من معاملات الإعداد.
- لتحديث إعدادات النموذج الأب، لا تستخدم بادئة لكل معامل من معاملات الإعداد.
يتصرف بشكل مختلف اعتماداً على ما إذا تم توفير
configأو تم تحميله تلقائياً.
أنشئ مُشفِّرًا ومُفكِّكًا من فئة أو فئتين أساسيتين في المكتبة من نقاط تفتيش نماذج مُدرَّبة مسبقًا.
يُضبط النموذج على وضع التقييم افتراضياً باستخدام model.eval() (تُعطَّل وحدات Dropout). ولتدريب النموذج، يجب عليك أولاً إعادة ضبطه على وضع التدريب باستخدام model.train().
مثال:
>>> from transformers import VisionEncoderDecoderModel
>>> # initialize a vit-bert from a pretrained ViT and a pretrained BERT model. Note that the cross-attention layers will be randomly initialized
>>> model = VisionEncoderDecoderModel.from_encoder_decoder_pretrained(
... "google/vit-base-patch16-224-in21k", "google-bert/bert-base-uncased"
... )
>>> # saving model after fine-tuning
>>> model.save_pretrained("./vit-bert")
>>> # load fine-tuned model
>>> model = VisionEncoderDecoderModel.from_pretrained("./vit-bert")