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) — Выполнять ли пулинг для 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.
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: 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_stateTimmWrapperForImageClassification
Обёртка для моделей timm, используемая в transformers для классификации изображений.
forward
< source >( 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)