Transformers documentation
TimmWrapper
TimmWrapper
نظرة عامة
فئة مساعدة لتفعيل تحميل نماذج timm لاستخدامها مع مكتبة transformers وفئاتها التلقائية.
from urllib.request import urlopen
import torch
from PIL import Image
from transformers import AutoImageProcessor, AutoModelForImageClassification
# Load image
image = Image.open(urlopen(
'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
))
# Load model and image processor
checkpoint = "timm/resnet50.a1_in1k"
image_processor = AutoImageProcessor.from_pretrained(checkpoint)
model = AutoModelForImageClassification.from_pretrained(checkpoint).eval( device_map="auto")
# Preprocess image
inputs = image_processor(image)
# Forward pass
with torch.no_grad():
logits = model(**inputs).logits
# Get top 5 predictions
top5_probabilities, top5_class_indices = torch.topk(logits.softmax(dim=1) * 100, k=5)الموارد
قائمة بالموارد الرسمية من Hugging Face وموارد المجتمع (المشار إليها بـ 🌎) لمساعدتك على البدء باستخدام TimmWrapper.
لمزيد من التفاصيل، يرجى قراءة المنشور الرسمي على المدونة حول تكامل timm.
TimmWrapperConfig
فئة transformers.TimmWrapperConfig
< 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 = Nonearchitecture: str = 'resnet50'initializer_range: float = 0.02do_pooling: bool = Truemodel_args: dict[str, typing.Any] | None = None )
المعاملات
- architecture (
str، اختياري، القيمة الافتراضية"resnet50") — بنية timm التي سيتم تحميلها. - initializer_range (
float، اختياري، القيمة الافتراضية0.02) — الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان. - do_pooling (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم إجراء تجميع (pooling) لحالةTimmWrapperModelالأخيرة (last_hidden_state) أم لا. - model_args (
dict[str, Any], اختياري) — حجج إضافية بالكلمات المفتاحية تُمرَّر إلى دالةtimm.create_model. على سبيل المثالmodel_args={"depth": 3}لنموذجtimm/vit_base_patch32_clip_448.laion2b_ft_in12k_in1kلإنشاء نموذج يحتوي على 3 كتل. القيمة الافتراضية هيNone.
هذه فئة الإعدادات المخزنة لإعدادات نموذج TimmWrapperModel. تُستخدم لاستحداث نموذج غلاف Timm وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيُنتج إعدادات مشابهة لتلك الخاصة بـ resnet50
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
TimmWrapperImageProcessor
فئة transformers.TimmWrapperImageProcessor
< source >( pretrained_cfg: dictarchitecture: str | None = None**kwargs )
فئة غلاف لنماذج timm لاستخدامها داخل transformers.
preprocess
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]return_tensors: str | transformers.utils.generic.TensorType | None = 'pt' )
معالجة صورة أو دفعة من الصور مسبقًا.
TimmWrapperModel
فئة غلاف لنماذج timm لاستخدامها في transformers.
forward
< source >( pixel_values: Tensoroutput_attentions: bool | None = Noneoutput_hidden_states: bool | list[int] | None = Nonereturn_dict: bool | None = Nonedo_pooling: bool | None = Noneuse_cache: bool | None = None**kwargs ) → TimmWrapperModelOutput or tuple(torch.Tensor)
المعاملات
- pixel_values (
torch.Tensorمن الشكل(batch_size, num_channels, image_size, image_size)) — المصفوفات المقابلة للصور المدخلة. يمكن الحصول على قيم البكسل باستخدام TimmWrapperImageProcessor. راجع TimmWrapperImageProcessor.call() للتفاصيل (يستخدمprocessor_classTimmWrapperImageProcessor لمعالجة الصور). - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تينسورات الانتباه لجميع طبقات الانتباه أم لا. غير متوافق مع النماذج المغلفة بواسطة timm. - output_hidden_states (
bool، اختياري) — ما إذا كان يجب إرجاع حالات الإخفاء (hidden states) لجميع الطبقات أم لا. غير متوافق مع النماذج المغلفة بواسطة timm. - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي. - do_pooling (
bool, optional) — Whether to do pooling for the last_hidden_state inTimmWrapperModelor not. IfNoneis passed, thedo_poolingvalue from the config is used. - use_cache (
bool، اختياري) — إذا تم تعيينه إلىTrue، تُعاد حالات المفاتيح والقيمpast_key_valuesويمكن استخدامها لتسريع فك الترميز (انظرpast_key_values).
يعيد
TimmWrapperModelOutput أو tuple(torch.Tensor)
TimmWrapperModelOutput أو مجموعة مرتبة من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعدادات (TimmWrapperConfig) والمدخلات.
تتجاوز طريقة TimmWrapperModel الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
- last_hidden_state (
torch.Tensor) — حالة الإخفاء الأخيرة للنموذج، المُخرَجة قبل تطبيق رأس التصنيف. - pooler_output (
torch.Tensor، اختياري) — المخرجات المجمّعة المشتقة من حالة الإخفاء الأخيرة، إن كان ذلك ممكنًا. - hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد إذا تم ضبطoutput_hidden_states=Trueأو إذا كانconfig.output_hidden_states=True) — مجموعة (tuple) تحتوي على حالات الإخفاء (hidden states) الوسيطة للنموذج عند مخرج كل طبقة أو الطبقات المحددة. - attentions (
tuple(torch.Tensor)، اختياري، يُعاد إذا تم تعيينoutput_attentions=Trueأو إذا كانconfig.output_attentions=True.) — مجموعة (tuple) تحتوي على أوزان الانتباه الوسيطة للنموذج عند مخرج كل طبقة. ملاحظة: حاليًا، لا تدعم نماذج Timm إخراج الانتباه.
أمثلة:
>>> import torch
>>> from PIL import Image
>>> from urllib.request import urlopen
>>> from transformers import AutoModel, AutoImageProcessor
>>> # Load image
>>> image = Image.open(urlopen(
... 'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
... ))
>>> # Load model and image processor
>>> checkpoint = "timm/resnet50.a1_in1k"
>>> image_processor = AutoImageProcessor.from_pretrained(checkpoint)
>>> model = AutoModel.from_pretrained(checkpoint).eval()
>>> # Preprocess image
>>> inputs = image_processor(image)
>>> # Forward pass
>>> with torch.no_grad():
... outputs = model(**inputs)
>>> # Get pooled output
>>> pooled_output = outputs.pooler_output
>>> # Get last hidden state
>>> last_hidden_state = outputs.last_hidden_stateTimmWrapperForImageClassification
فئة غلاف لنماذج timm لاستخدامها في transformers لتصنيف الصور.
forward
< source >( pixel_values: Tensorlabels: typing.Optional[torch.LongTensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | list[int] | None = Nonereturn_dict: bool | None = None**kwargs ) → ImageClassifierOutput or tuple(torch.Tensor)
المعاملات
- pixel_values (
torch.Tensorمن الشكل(batch_size, num_channels, image_size, image_size)) — المصفوفات المقابلة للصور المدخلة. يمكن الحصول على قيم البكسل باستخدام TimmWrapperImageProcessor. راجع TimmWrapperImageProcessor.call() للتفاصيل (يستخدمprocessor_classTimmWrapperImageProcessor لمعالجة الصور). - labels (
torch.LongTensorof shape(batch_size,), اختياري) — التسميات لحساب خسارة تصنيف الصور/الانحدار. يجب أن تكون الفهارس ضمن[0, ..., config.num_labels - 1]. إذا كانconfig.num_labels == 1يتم حساب خسارة الانحدار (خسارة متوسط المربع)، وإذا كانconfig.num_labels > 1يتم حساب خسارة التصنيف (الإنتروبيا المتقاطعة). - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تينسورات الانتباه لجميع طبقات الانتباه أم لا. غير متوافق مع النماذج المغلفة بواسطة timm. - output_hidden_states (
bool، اختياري) — ما إذا كان يجب إرجاع حالات الإخفاء (hidden states) لجميع الطبقات أم لا. غير متوافق مع النماذج المغلفة بواسطة timm. - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي. **kwargs: حجج إضافية بالكلمات المفتاحية تُمرَّر إلى forward لنموذجtimm.
يعيد
ImageClassifierOutput أو tuple(torch.Tensor)
ImageClassifierOutput أو مجموعة مرتبة من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (TimmWrapperConfig) والمدخلات.
تتجاوز طريقة TimmWrapperForImageClassification الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorمن الشكل(1,)، اختياري، يُعاد عند توفيرlabels) — خسارة التصنيف (أو الانحدار إذا كان config.num_labels==1).logits (
torch.Tensorمن الشكل(batch_size, config.num_labels)) — درجات التصنيف (أو الانحدار إذا كان config.num_labels==1) (قبل SoftMax).hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل مرحلة) من الشكل(batch_size, sequence_length, hidden_size). حالات مخفية (تُسمى أيضًا خرائط الميزات) للنموذج عند إخراج كل مرحلة.attentions (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, patch_size, sequence_length).أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
أمثلة:
>>> import torch
>>> from PIL import Image
>>> from urllib.request import urlopen
>>> from transformers import AutoModelForImageClassification, AutoImageProcessor
>>> # Load image
>>> image = Image.open(urlopen(
... 'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
... ))
>>> # Load model and image processor
>>> checkpoint = "timm/resnet50.a1_in1k"
>>> image_processor = AutoImageProcessor.from_pretrained(checkpoint)
>>> model = AutoModelForImageClassification.from_pretrained(checkpoint).eval()
>>> # Preprocess image
>>> inputs = image_processor(image)
>>> # Forward pass
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> # Get top 5 predictions
>>> top5_probabilities, top5_class_indices = torch.topk(logits.softmax(dim=1) * 100, k=5)