Transformers documentation
RegNet
Эта модель была опубликована в HF papers 30.03.2020 и добавлена в Hugging Face Transformers 07.04.2022.
RegNet
Обзор
Модель RegNet была предложена в статье Designing Network Design Spaces Илии Радосавовичем, Раджем Пратиком Косараджу, Россом Гиршиком, Каймингом Хэ и Пьотром Долларом.
Авторы проектируют пространства поиска для выполнения поиска нейронной архитектуры (NAS). Они начинают с пространства поиска высокой размерности и итеративно сокращают его, эмпирически применяя ограничения на основе моделей с наилучшими показателями, выбранных из текущего пространства поиска.
Аннотация из статьи следующая:
В данной работе мы предлагаем новую парадигму проектирования сетей. Наша цель — содействовать углублению понимания процессов проектирования сетей и выявлению принципов, которые обобщаются на различные условия. Вместо того чтобы сосредотачиваться на проектировании отдельных экземпляров сетей, мы проектируем пространства проектирования, параметризующие популяции сетей. Общий процесс аналогичен классическому ручному проектированию сетей, но поднимается на уровень пространства проектирования. Используя нашу методологию, мы исследуем структурный аспект проектирования сетей и приходим к низкоразмерному пространству проектирования, состоящему из простых и регулярных сетей, которые мы называем RegNet. Ключевой инсайт параметризации RegNet удивительно прост: ширины и глубины хороших сетей могут быть описаны квантованной линейной функцией. Мы анализируем пространство проектирования RegNet и получаем интересные результаты, не соответствующие текущей практике проектирования сетей. Пространство проектирования RegNet обеспечивает простые и быстрые сети, которые хорошо работают в широком диапазоне режимов по числу операций с плавающей точкой (FLOPs). При сопоставимых условиях обучения и количестве FLOPs модели RegNet превосходят популярные модели EfficientNet, при этом их скорость на GPU может быть выше в 5 раз.
Эта модель была предоставлена Francesco. Исходный код можно найти здесь.
The huge 10B model from Self-supervised Pretraining of Visual Features in the Wild, trained on one billion Instagram images, is available on the hub
Ресурсы
Список официальных ресурсов Hugging Face и сообщества (отмечены значком 🌎), которые помогут вам начать работу с RegNet.
- RegNetForImageClassification поддерживается в этом ноутбуке.
- См. также: Руководство по задаче классификации изображений
Если вы хотите предложить ресурс для включения в этот раздел, пожалуйста, создайте Pull Request, и мы его рассмотрим! В идеале ресурс должен демонстрировать что-то новое, а не дублировать уже имеющийся.
RegNetConfig
класс transformers.RegNetConfig
< 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 = Nonenum_channels: int = 3embedding_size: int = 32hidden_sizes: list[int] | tuple[int, ...] = (128, 192, 512, 1088)depths: list[int] | tuple[int, ...] = (2, 6, 12, 2)groups_width: int = 64layer_type: str = 'y'hidden_act: str = 'relu'downsample_in_first_stage: bool = True )
Параметры
- num_channels (
int, необязательный, по умолчанию3) — Количество входных каналов. - embedding_size (
int, необязательный, по умолчанию32) — Размерность эмбеддингов и скрытых состояний. - hidden_sizes (
Union[list[int], tuple[int, ...]], необязательный, по умолчанию(128, 192, 512, 1088)) — Размерность (hidden size) на каждом этапе модели. - depths (
Union[list[int], tuple[int, ...]], необязательный, по умолчанию(2, 6, 12, 2)) — Глубина каждого слоя в Transformer. - groups_width (
int, необязательный, по умолчанию 64) — Ширина группы для каждого этапа. - layer_type (
str, optional, defaults to"y") — The layer to use, it can be either"x" or“y”. Anxlayer is a ResNet's BottleNeck layer withreductionfixed to1. While aylayer is ax` but with squeeze and excitation. Please refer to the paper for a detailed explanation of how these layers were constructed. - hidden_act (
str, необязательный, по умолчаниюrelu) — Нелинейная функция активации (функция или строка) в декодере. Например,"gelu","relu","silu"и т. д. - downsample_in_first_stage (
bool, необязательный, по умолчаниюFalse) — ЕслиTrue, первый этап выполняет даунсемплинг входных данных сstride, равным 2.
Это класс конфигурации для хранения настроек модели RegNetModel. Он используется для создания модели Regnet в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации facebook/regnet-y-040
Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.
Пример:
>>> from transformers import RegNetConfig, RegNetModel
>>> # Initializing a RegNet regnet-y-40 style configuration
>>> configuration = RegNetConfig()
>>> # Initializing a model from the regnet-y-40 style configuration
>>> model = RegNetModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configRegNetModel
класс transformers.RegNetModel
< source >( config: RegNetConfig )
Параметры
- config (RegNetConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель Regnet без дополнительных слоёв, выводящая необработанные скрытые состояния.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( pixel_values: Tensoroutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutputWithPoolingAndNoAttention or tuple(torch.Tensor)
Параметры
- pixel_values (
torch.Tensorформы(batch_size, num_channels, image_size, image_size)) — Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью ConvNextImageProcessor. Подробности см. в ConvNextImageProcessor.call() (processor_classиспользует ConvNextImageProcessor для обработки изображений). - output_hidden_states (
bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описанииhidden_statesсреди возвращаемых тензоров. - return_dict (
bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.
Возвращает
BaseModelOutputWithPoolingAndNoAttention или tuple(torch.Tensor)
BaseModelOutputWithPoolingAndNoAttention или кортеж из
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (RegNetConfig) и входных данных.
Метод forward класса RegNetModel переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
last_hidden_state (
torch.Tensorформы(batch_size, num_channels, height, width)) — Последовательность скрытых состояний на выходе последнего слоя модели.pooler_output (
torch.Tensorформы(batch_size, hidden_size)) — Скрытое состояние последнего слоя после операции пулинга по пространственным измерениям.hidden_states (
tuple(torch.Tensor), необязательный, возвращается, если переданоoutput_hidden_states=Trueили еслиconfig.output_hidden_states=True) — Кортеж изtorch.Tensor(один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы(batch_size, num_channels, height, width).Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
RegNetForImageClassification
класс transformers.RegNetForImageClassification
< source >( config: RegNetConfig )
Параметры
- config (RegNetConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель RegNet с головной частью для классификации изображений (линейный слой поверх пуллованных признаков), например, для ImageNet.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( pixel_values: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → ImageClassifierOutputWithNoAttention or tuple(torch.Tensor)
Параметры
- pixel_values (
torch.Tensorформы(batch_size, num_channels, image_size, image_size), необязательный) — Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью ConvNextImageProcessor. Подробности см. в ConvNextImageProcessor.call() (processor_classиспользует ConvNextImageProcessor для обработки изображений). - labels (
torch.LongTensorформы(batch_size,), необязательный) — Метки для вычисления функции потерь классификации/регрессии изображений. Индексы должны находиться в диапазоне[0, ..., config.num_labels - 1]. Еслиconfig.num_labels > 1, вычисляется функция потерь классификации (Cross-Entropy). - output_hidden_states (
bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описанииhidden_statesсреди возвращаемых тензоров. - return_dict (
bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.
Возвращает
ImageClassifierOutputWithNoAttention или tuple(torch.Tensor)
Объект ImageClassifierOutputWithNoAttention или кортеж
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (RegNetConfig) и входных данных.
Метод forward класса RegNetForImageClassification переопределяет специальный метод __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, num_channels, height, width). Скрытые состояния (также называемые картами признаков) модели на выходе каждого этапа.
Пример:
>>> from transformers import AutoImageProcessor, RegNetForImageClassification
>>> import torch
>>> from datasets import load_dataset
>>> dataset = load_dataset("huggingface/cats-image")
>>> image = dataset["test"]["image"][0]
>>> image_processor = AutoImageProcessor.from_pretrained("facebook/regnet-y-040")
>>> model = RegNetForImageClassification.from_pretrained("facebook/regnet-y-040")
>>> inputs = image_processor(image, return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_label = logits.argmax(-1).item()
>>> print(model.config.id2label[predicted_label])
...