Transformers documentation

TimmWrapper

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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.

Image Classification

Для более подробного обзора прочитайте официальный пост в блоге об интеграции с timm.

TimmWrapperConfig

класс transformers.TimmWrapperConfig

< >

( 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) — Выполнять ли пулинг для last_hidden_state в TimmWrapperModel.
  • 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.

Пример:

>>> from transformers import TimmWrapperModel

>>> # Initializing a timm model
>>> model = TimmWrapperModel.from_pretrained("timm/resnet18.a1_in1k")

>>> # Accessing the model configuration
>>> configuration = model.config

TimmWrapperImageProcessor

класс transformers.TimmWrapperImageProcessor

< >

( pretrained_cfg: dictarchitecture: str | None = None**kwargs )

Параметры

  • pretrained_cfg (dict[str, Any]) — Конфигурация предобученной модели, используемая для определения трансформаций для оценки и обучения.
  • architecture (Optional[str], необязательный) — Название архитектуры модели.

Обёртка для моделей timm, предназначенная для использования в transformers.

preprocess

< >

( 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' )

Параметры

  • images (ImageInput) — Изображение для предобработки. Ожидается одно изображение или пакет изображений
  • return_tensors (str или TensorType, необязательный) — Тип возвращаемых тензоров.

Предобработка изображения или пакета изображений.

TimmWrapperModel

класс transformers.TimmWrapperModel

< >

( config: TimmWrapperConfig )

Обёртка для моделей timm, используемая в transformers.

forward

< >

( pixel_values: FloatTensoroutput_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.FloatTensor)

Параметры

  • pixel_values (torch.FloatTensor формы (batch_size, num_channels, image_size, image_size)) — Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью TimmWrapperImageProcessor. Подробности см. в TimmWrapperImageProcessor.call() (processor_class использует TimmWrapperImageProcessor для обработки изображений).
  • output_attentions (bool, необязательный) — Возвращать или нет тензоры внимания всех слоев внимания. Не совместимо с моделями, обёрнутыми через timm.
  • output_hidden_states (bool, необязательный) — Возвращать ли скрытые состояния всех слоёв. Не совместимо с моделями, обёрнутыми в timm.
  • return_dict (bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.
  • do_pooling (bool, необязательный) — Выполнять ли пулинг для last_hidden_state в TimmWrapperModel. Если передано None, используется значение do_pooling из конфигурации.
  • use_cache (bool, необязательный) — Если установлено в True, возвращаются состояния ключей и значений past_key_values, которые можно использовать для ускорения декодирования (см. past_key_values).

Возвращает

TimmWrapperModelOutput или tuple(torch.FloatTensor)

Объект TimmWrapperModelOutput или кортеж из torch.FloatTensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (TimmWrapperConfig) и входных данных.

Метод forward класса TimmWrapperModel переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • last_hidden_state (torch.FloatTensor) — Состояние последнего скрытого слоя модели, выводимое до применения классификационной головы.
  • pooler_output (torch.FloatTensor, optional) — Пул-вывод, полученный из последнего скрытого состояния, если применимо.
  • hidden_states (tuple(torch.FloatTensor), необязательный, возвращается, если задано output_hidden_states=True или config.output_hidden_states=True) — кортеж, содержащий промежуточные скрытые состояния модели на выходе каждого слоя или указанных слоёв.
  • attentions (tuple(torch.FloatTensor), необязательный, возвращается, если задано output_attentions=True или config.output_attentions=True.) — Кортеж, содержащий промежуточные веса внимания модели на выходе каждого слоя. Примечание: В настоящее время модели 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_state

TimmWrapperForImageClassification

класс transformers.TimmWrapperForImageClassification

< >

( config: TimmWrapperConfig )

Обёртка для моделей timm, используемая в transformers для классификации изображений.

forward

< >

( pixel_values: FloatTensorlabels: 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.FloatTensor)

Параметры

  • pixel_values (torch.FloatTensor формы (batch_size, num_channels, image_size, image_size)) — Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью TimmWrapperImageProcessor. Подробности см. в TimmWrapperImageProcessor.call() (processor_class использует TimmWrapperImageProcessor для обработки изображений).
  • labels (torch.LongTensor формы (batch_size,), необязательный) — Метки для вычисления функции потерь классификации/регрессии изображений. Индексы должны находиться в диапазоне [0, ..., config.num_labels - 1]. Если config.num_labels == 1, вычисляется функция потерь регрессии (среднеквадратичная ошибка), если config.num_labels > 1 — функция потерь классификации (кросс-энтропия).
  • output_attentions (bool, необязательный) — Возвращать или нет тензоры внимания всех слоев внимания. Не совместимо с моделями, обёрнутыми через timm.
  • output_hidden_states (bool, необязательный) — Возвращать ли скрытые состояния всех слоёв. Не совместимо с моделями, обёрнутыми в timm.
  • return_dict (bool, необязательный) — Возвращать ли ModelOutput вместо обычного кортежа. **kwargs: Дополнительные именованные аргументы, передаваемые в forward-метод модели timm.

Возвращает

ImageClassifierOutput или tuple(torch.FloatTensor)

Объект ImageClassifierOutput или кортеж torch.FloatTensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (TimmWrapperConfig) и входных данных.

Метод forward класса TimmWrapperForImageClassification переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • loss (torch.FloatTensor формы (1,), необязательный, возвращается, если передан labels) — Потери классификации (или регрессии, если config.num_labels==1).

  • logits (torch.FloatTensor формы (batch_size, config.num_labels)) — оценки для классификации (или регрессии, если config.num_labels==1) (до применения SoftMax).

  • hidden_states (tuple(torch.FloatTensor), необязательный, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — Кортеж torch.FloatTensor (один для вывода слоя встраиваний, если модель имеет такой слой, + один для вывода каждого этапа) формы (batch_size, sequence_length, hidden_size). Скрытые состояния (также называемые картами признаков) модели на выходе каждого этапа.

  • attentions (tuple(torch.FloatTensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — кортеж torch.FloatTensor (по одному на каждый слой) формы (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)
Update on GitHub