Transformers documentation
Funnel Transformer
Эта модель была опубликована в HF papers 05.06.2020 и добавлена в Hugging Face Transformers 16.11.2020.
Funnel Transformer
Обзор
Модель Funnel Transformer была предложена в статье Funnel-Transformer: Filtering out Sequential Redundancy for Efficient Language Processing. Это двунаправленная трансформерная модель, подобная BERT, но с операцией пулинга после каждого блока слоев, что немного напоминает традиционные свёрточные нейронные сети (CNN) в области компьютерного зрения.
Аннотация из статьи следующая:
В связи с успехами предобучения языковых моделей крайне важно разрабатывать более эффективные архитектуры с хорошей масштабируемостью, способные использовать обширные размеченные данные с меньшими затратами. Для повышения эффективности мы рассматриваем часто упускаемую из виду избыточность при поддержании полного представления на уровне токенов, особенно для задач, требующих лишь одновекторного представления последовательности. Исходя из этого, мы предлагаем Funnel-Transformer, который постепенно сжимает последовательность скрытых состояний до более короткой, тем самым снижая вычислительные затраты. Более того, за счет перераспределения сэкономленных FLOPs, полученных за счет сокращения длины, на построение более глубокой или широкой модели, мы дополнительно увеличиваем емкость модели. Кроме того, для выполнения предсказаний на уровне токенов, необходимых для типичных целей предобучения, Funnel-Transformer способен восстанавливать глубокое представление для каждого токена из сокращенной скрытой последовательности с помощью декодера. Экспериментально показано, что при сопоставимых или меньших затратах FLOPs Funnel-Transformer превосходит стандартный Transformer на широком спектре задач последовательного предсказания, включая классификацию текста, понимание языка и понимание прочитанного.
Эта модель была предоставлена пользователем sgugger. Исходный код можно найти здесь.
Советы по использованию
- Поскольку Funnel Transformer использует пулинг, длина последовательности скрытых состояний изменяется после каждого блока слоёв. Таким образом, их длина уменьшается вдвое, что ускоряет вычисление следующих скрытых состояний. В результате базовая модель имеет итоговую длину последовательности, равную четверти исходной. Эту модель можно использовать напрямую для задач, требующих лишь обобщения предложения (например, классификации последовательности или выбора из нескольких вариантов). Для других задач используется полная модель; эта полная модель содержит декодер, который увеличивает размерность итоговых скрытых состояний до той же длины последовательности, что и на входе.
- Для задач, таких как классификация, это не является проблемой, но для задач вроде masked language modeling или token classification нам нужна скрытая последовательность (hidden state) с той же длиной последовательности, что и у исходного входа. В таких случаях финальные скрытые состояния (final hidden states) интерполируются (upsampled) до длины входной последовательности и проходят через два дополнительных слоя. Именно поэтому для каждой контрольной точки (checkpoint) существует две версии. Версия с суффиксом “-base” содержит только три блока, тогда как версия без этого суффикса включает три блока и голову интерполяции (upsampling head) с её дополнительными слоями.
- Чекпоинты Funnel Transformer доступны в полной и базовой версиях. Первые следует использовать для FunnelModel, FunnelForPreTraining, FunnelForMaskedLM, FunnelForTokenClassification и FunnelForQuestionAnswering. Вторые — для FunnelBaseModel, FunnelForSequenceClassification и FunnelForMultipleChoice.
Ресурсы
- Руководство по задаче классификации текста
- Руководство по задаче классификации токенов
- Руководство по задаче вопрос-ответ
- Руководство по задаче маскированного языкового моделирования
- Руководство по задаче с множественным выбором
FunnelConfig
класс transformers.FunnelConfig
< 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 = Nonevocab_size: int = 30522block_sizes: list[int] | tuple[int, ...] = (4, 4, 4)block_repeats: list[int] | None = Nonenum_decoder_layers: int = 2d_model: int = 768n_head: int = 12d_head: int = 64d_inner: int = 3072hidden_act: str = 'gelu_new'hidden_dropout: float | int = 0.1attention_dropout: float | int = 0.1activation_dropout: float | int = 0.0initializer_range: float = 0.1initializer_std: float | None = Nonelayer_norm_eps: float = 1e-09pooling_type: str = 'mean'attention_type: str = 'relative_shift'separate_cls: bool = Truetruncate_seq: bool = Truepool_q_only: bool = Truepad_token_id: int | None = Nonetie_word_embeddings: bool = True )
Параметры
- vocab_size (
int, необязательный, по умолчанию30522) — Размер словаря модели. Определяет количество различных токенов, которые могут быть представлены вinput_ids. - block_sizes (
list[int], необязательный, по умолчанию[4, 4, 4]) — Размеры блоков, используемых в модели. - block_repeats (
list[int], необязательный) — Если передан, каждый слой каждого блока повторяется указанное количество раз. - num_decoder_layers (
int, необязательный, по умолчанию 2) — Количество слоев в декодере (при использовании не базовой модели). - d_model (
int, необязательный, по умолчанию768) — Размер слоёв кодировщика и пулер-слоя. - n_head (
int, необязательный, по умолчанию12) — Количество головок внимания в каждом слое внимания декодера Transformer. - d_head (
int, необязательный, по умолчанию64) — Размер измерения головы внимания. Если значение равно None, по умолчанию используется hidden_size // num_attention_heads - d_inner (
int, необязательный, по умолчанию3072) — Размерность представлений MLP. - hidden_act (
str, необязательный, по умолчаниюgelu_new) — Нелинейная функция активации (функция или строка) в декодере. Например,"gelu","relu","silu"и т. д. - hidden_dropout (
Union[float, int], необязательный, по умолчанию0.1) — Вероятность dropout для всех полносвязных слоёв в эмбеддингах, энкодере и пуллере. - attention_dropout (
Union[float, int], необязательный, по умолчанию0.1) — Коэффициент dropout для вероятностей внимания. - activation_dropout (
Union[float, int], необязательный, по умолчанию0.0) — Коэффициент dropout для активаций внутри полносвязного слоя. - initializer_range (
float, необязательный, по умолчанию0.1) — Стандартное отклонение truncated_normal_initializer, используемое для инициализации всех матриц весов. - initializer_std (
float, необязательный) — Стандартное отклонение truncated_normal_initializer для инициализации всех матриц весов. - layer_norm_eps (
float, необязательный, по умолчанию1e-09) — Значение epsilon, используемое слоями нормализации. - pooling_type (
str, необязательный, по умолчанию"mean") — Допустимые значения:"mean"или"max". Способ выполнения пулинга в начале каждого блока. - attention_type (
str, необязательный, по умолчанию"relative_shift") — Допустимые значения:"relative_shift"или"factorized". Первое значение обеспечивает более высокую скорость на CPU/GPU, а второе — на TPU. - separate_cls (
bool, необязательный, по умолчаниюTrue) — Указывает, нужно ли разделять токен cls при применении пулинга. - truncate_seq (
bool, необязательный, по умолчаниюTrue) — При использованииseparate_clsопределяет, нужно ли усекать последний токен при пулинге, чтобы избежать длины последовательности, не кратной 2. - pool_q_only (
bool, необязательный, по умолчаниюTrue) — Определяет, применять ли пулинг только к query или к query, key и values в слоях внимания. - pad_token_id (
int, необязательный) — Идентификатор токена, используемого для выравнивания в словаре. - tie_word_embeddings (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли связывать веса эмбеддингов согласно маппингуtied_weights_keysмодели.
This is the configuration class to store the configuration of a (‘FunnelModel’, ‘FunnelBaseModel’). It is used to instantiate a Funnel model according to the specified arguments, defining the model architecture. Instantiating a configuration with the defaults will yield a similar configuration to that of the funnel-transformer/small
Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.
FunnelTokenizer
класс transformers.FunnelTokenizer
< source >( vocab: str | dict[str, int] | None = Nonedo_lower_case: bool = Trueunk_token: str = '<unk>'sep_token: str = '<sep>'pad_token: str = '<pad>'cls_token: str = '<cls>'mask_token: str = '<mask>'bos_token: str = '<s>'eos_token: str = '</s>'clean_text: bool = Truetokenize_chinese_chars: bool = Truestrip_accents: bool | None = Nonewordpieces_prefix: str = '##'**kwargs )
Параметры
- vocab_file (
str) — Файл, содержащий словарь. - do_lower_case (
bool, необязательный, по умолчаниюTrue) — Определяет, нужно ли приводить входные данные к нижнему регистру при токенизации. - unk_token (
str, необязательный, по умолчанию"<unk>") — Токен неизвестного слова. Токен, отсутствующий в словаре, не может быть преобразован в ID, поэтому вместо него используется этот токен. - sep_token (
str, необязательный, по умолчанию"<sep>") — Токен-разделитель, который используется при построении последовательности из нескольких последовательностей, например, двух последовательностей для классификации последовательностей или текста и вопроса для ответа на вопросы. Он также используется в качестве последнего токена в последовательности, построенной со специальными токенами. - pad_token (
str, необязательный, по умолчанию"<pad>") — Токен, используемый для выравнивания, например, при пакетной обработке последовательностей разной длины. - cls_token (
str, необязательный, по умолчанию"<cls>") — Токен классификатора, используемый при классификации последовательности (классификация всей последовательности, а не посимвольная классификация). Это первый токен последовательности, если она построена со специальными токенами. - mask_token (
str, необязательный, по умолчанию"<mask>") — Токен, используемый для маскирования значений. Это тот токен, который применяется при обучении модели с использованием masked language modeling. Именно этот токен модель будет пытаться предсказать. - clean_text (
bool, необязательный, по умолчаниюTrue) — Определяет, нужно ли очищать текст перед токенизацией, удаляя управляющие символы и заменяя все пробельные символы на стандартный пробел. - tokenize_chinese_chars (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли токенизировать китайские иероглифы. Для японского языка эту опцию, скорее всего, нужно отключить (см. этот вопрос). - bos_token (
str,optional, по умолчанию"<s>") — Токен начала предложения. - eos_token (
str,optional, по умолчанию"</s>") — Токен конца предложения. - strip_accents (
bool, необязательный) — Удалять ли все диакритические знаки. Если этот параметр не указан, его значение определяется по значению параметраlowercase(как в оригинальном BERT). - wordpieces_prefix (
str, необязательный, по умолчанию"##") — Префикс для подслов. - vocab (
strилиdict[str, int], необязательный) — Пользовательский словарь.
Создайте токенизатор Funnel Transformer (на базе библиотеки tokenizers от HuggingFace). Основан на WordPiece.
Этот токенизатор наследуется от TokenizersBackend, который содержит большинство основных методов. За дополнительной информацией об этих методах следует обращаться к этому суперклассу.
get_special_tokens_mask
< source >( token_ids_0: list[int]token_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
Параметры
- token_ids_0 — список идентификаторов для (возможно, уже отформатированной) последовательности.
- token_ids_1 — Не используется, если
already_has_special_tokens=True. В этом случае должно быть None. - already_has_special_tokens — Указывает, содержит ли последовательность уже отформатированные специальные токены.
Возвращает
Список целых чисел в диапазоне [0, 1]
1 для специального токена, 0 для токена последовательности.
Получить идентификаторы последовательностей из списка токенов, в который не добавлены специальные токены.
Для быстрых токенизаторов коллабораторы данных вызывают этот метод с already_has_special_tokens=True, чтобы построить маску для уже отформатированной последовательности. В этом случае мы вычисляем маску, проверяя принадлежность элементов к all_special_ids.
Выводы, специфичные для воронки
класс transformers.models.funnel.modeling_funnel.FunnelForPreTrainingOutput
< source >( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor] | None = Noneattentions: tuple[torch.Tensor] | None = None )
Параметры
- loss (
*optional*, возвращается, если заданlabels,torch.Tensorформы(1,)) — Суммарное значение функции потерь для ELECTRA-style objective. - logits (
torch.Tensorформы(batch_size, sequence_length)) — Оценки предсказаний головы (оценки для каждого токена до 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, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Тип результата FunnelForPreTraining.
FunnelBaseModel
класс transformers.FunnelBaseModel
< source >( config: FunnelConfig )
Параметры
- config (FunnelConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Базовая модель Funnel Transformer, которая выводит необработанные скрытые состояния (hidden states) без слоя апсемплинга (также называемого декодером) или какой-либо специфичной для задачи головы.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutput or tuple(torch.Tensor)
Параметры
- input_ids (
torch.Tensorформы(batch_size, sequence_length), необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию padding игнорируется.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- token_type_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- position_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. - output_attentions (
bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описанииattentionsв разделе возвращаемых тензоров. - output_hidden_states (
bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описанииhidden_statesсреди возвращаемых тензоров. - return_dict (
bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.
Возвращает
BaseModelOutput или tuple(torch.Tensor)
Объект BaseModelOutput или кортеж из
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (FunnelConfig) и входных данных.
Метод forward модели FunnelBaseModel переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
last_hidden_state (
torch.Tensorформы(batch_size, sequence_length, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя модели.hidden_states (
tuple(torch.Tensor), optional, возвращается, если передано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, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Пример:
>>> from transformers import AutoTokenizer, FunnelBaseModel
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("funnel-transformer/small")
>>> model = FunnelBaseModel.from_pretrained("funnel-transformer/small")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_stateFunnelModel
класс transformers.FunnelModel
< source >( config: FunnelConfig )
Параметры
- config (FunnelConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Базовая модель Funnel, выводящая необработанные скрытые состояния без какого-либо специализированного слоя наверху.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutput or tuple(torch.Tensor)
Параметры
- input_ids (
torch.Tensorформы(batch_size, sequence_length), необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию padding игнорируется.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- token_type_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- inputs_embeds (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. - output_attentions (
bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описанииattentionsв разделе возвращаемых тензоров. - output_hidden_states (
bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описанииhidden_statesсреди возвращаемых тензоров. - return_dict (
bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.
Возвращает
BaseModelOutput или tuple(torch.Tensor)
Объект BaseModelOutput или кортеж из
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (FunnelConfig) и входных данных.
Метод forward модели FunnelModel переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
last_hidden_state (
torch.Tensorформы(batch_size, sequence_length, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя модели.hidden_states (
tuple(torch.Tensor), optional, возвращается, если передано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, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
FunnelModelForPreTraining
класс transformers.FunnelForPreTraining
< source >( config: FunnelConfig )
Параметры
- config (FunnelConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Funnel Transformer с бинарной классификационной головой, используемой во время предварительного обучения для идентификации сгенерированных токенов.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → FunnelForPreTrainingOutput or tuple(torch.Tensor)
Параметры
- input_ids (
torch.Tensorформы(batch_size, sequence_length), необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию padding игнорируется.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- token_type_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- inputs_embeds (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. - labels (
torch.LongTensorформы(batch_size, sequence_length), , необязательный) — Метки для вычисления потери в стиле ELECTRA. Вход должен быть последовательностью токенов (см.input_idsв docstring). Значения индексов должны быть в диапазоне[0, 1]:- 0 означает, что токен является исходным токеном,
- 1 означает, что токен был заменён.
- output_attentions (
bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описанииattentionsв разделе возвращаемых тензоров. - output_hidden_states (
bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описанииhidden_statesсреди возвращаемых тензоров. - return_dict (
bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.
Возвращает
FunnelForPreTrainingOutput или tuple(torch.Tensor)
Объект FunnelForPreTrainingOutput или кортеж
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (FunnelConfig) и входных данных.
Метод forward класса FunnelForPreTraining переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
*optional*, возвращается, если заданlabels,torch.Tensorформы(1,)) — Суммарная функция потерь для цели в стиле ELECTRA.logits (
torch.Tensorформы(batch_size, sequence_length)) — Оценки предсказаний головы (оценки для каждого токена до 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, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Примеры:
>>> from transformers import AutoTokenizer, FunnelForPreTraining
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("funnel-transformer/small")
>>> model = FunnelForPreTraining.from_pretrained("funnel-transformer/small")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> logits = model(**inputs).logitsFunnelForMaskedLM
класс transformers.FunnelForMaskedLM
< source >( config: FunnelConfig )
Параметры
- config (FunnelConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель-воронка с головкой language modeling наверху.”
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → MaskedLMOutput or tuple(torch.Tensor)
Параметры
- input_ids (
torch.Tensorформы(batch_size, sequence_length), необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию padding игнорируется.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- token_type_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- inputs_embeds (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. - labels (
torch.LongTensorформы(batch_size, sequence_length), необязательный) — Метки для вычисления потерь маскированного языкового моделирования. Индексы должны находиться в диапазоне[-100, 0, ..., config.vocab_size](см. docstringinput_ids). Токены с индексами, установленными в-100, игнорируются (маскируются); потери вычисляются только для токенов с метками в диапазоне[0, ..., config.vocab_size]. - output_attentions (
bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описанииattentionsв разделе возвращаемых тензоров. - output_hidden_states (
bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описанииhidden_statesсреди возвращаемых тензоров. - return_dict (
bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.
Возвращает
MaskedLMOutput или tuple(torch.Tensor)
Объект MaskedLMOutput или кортеж
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (FunnelConfig) и входных данных.
Метод forward класса FunnelForMaskedLM переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
torch.Tensorформы(1,), необязательный, возвращается, если переданlabels) — Потери маскированного языкового моделирования (MLM).logits (
torch.Tensorформы(batch_size, sequence_length, config.vocab_size)) — Оценки предсказаний языковой модели (оценки для каждого токена словаря до применения SoftMax).hidden_states (
tuple(torch.Tensor), optional, возвращается, если передано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, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Пример:
>>> from transformers import AutoTokenizer, FunnelForMaskedLM
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("funnel-transformer/small")
>>> model = FunnelForMaskedLM.from_pretrained("funnel-transformer/small")
>>> inputs = tokenizer("The capital of France is <mask>.", return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> # retrieve index of <mask>
>>> mask_token_index = (inputs.input_ids == tokenizer.mask_token_id)[0].nonzero(as_tuple=True)[0]
>>> predicted_token_id = logits[0, mask_token_index].argmax(axis=-1)
>>> tokenizer.decode(predicted_token_id)
...
>>> labels = tokenizer("The capital of France is Paris.", return_tensors="pt")["input_ids"]
>>> # mask labels of non-<mask> tokens
>>> labels = torch.where(inputs.input_ids == tokenizer.mask_token_id, labels, -100)
>>> outputs = model(**inputs, labels=labels)
>>> round(outputs.loss.item(), 2)
...FunnelForSequenceClassification
класс transformers.FunnelForSequenceClassification
< source >( config: FunnelConfig )
Параметры
- config (FunnelConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Funnel Transformer с головной частью для классификации/регрессии последовательности (два линейных слоя поверх первого временного шага последнего скрытого состояния), например, для задач GLUE.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → SequenceClassifierOutput or tuple(torch.Tensor)
Параметры
- input_ids (
torch.Tensorформы(batch_size, sequence_length), необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию padding игнорируется.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- token_type_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- inputs_embeds (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. - labels (
torch.LongTensorформы(batch_size,), необязательный) — Метки для вычисления функции потерь классификации/регрессии последовательности. Индексы должны находиться в диапазоне[0, ..., config.num_labels - 1]. Еслиconfig.num_labels == 1, вычисляется функция потерь регрессии (среднеквадратичная ошибка), еслиconfig.num_labels > 1, вычисляется функция потерь классификации (кросс-энтропия). - output_attentions (
bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описанииattentionsв разделе возвращаемых тензоров. - output_hidden_states (
bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описанииhidden_statesсреди возвращаемых тензоров. - return_dict (
bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.
Возвращает
SequenceClassifierOutput или tuple(torch.Tensor)
Объект SequenceClassifierOutput или кортеж из
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (FunnelConfig) и входных данных.
Метод forward класса FunnelForSequenceClassification переопределяет специальный метод __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), optional, возвращается, если передано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, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Пример классификации с одной меткой:
>>> import torch
>>> from transformers import AutoTokenizer, FunnelForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("funnel-transformer/small")
>>> model = FunnelForSequenceClassification.from_pretrained("funnel-transformer/small")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
...
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = FunnelForSequenceClassification.from_pretrained("funnel-transformer/small", num_labels=num_labels)
>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...Пример многоклассовой классификации:
>>> import torch
>>> from transformers import AutoTokenizer, FunnelForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("funnel-transformer/small")
>>> model = FunnelForSequenceClassification.from_pretrained("funnel-transformer/small", problem_type="multi_label_classification")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = FunnelForSequenceClassification.from_pretrained(
... "funnel-transformer/small", num_labels=num_labels, problem_type="multi_label_classification"
... )
>>> labels = torch.sum(
... torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).lossFunnelForMultipleChoice
класс transformers.FunnelForMultipleChoice
< source >( config: FunnelConfig )
Параметры
- config (FunnelConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Funnel с головной частью для классификации с множественным выбором (линейный слой поверх пул-вывода и softmax), например, для задач RocStories/SWAG.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → MultipleChoiceModelOutput or tuple(torch.Tensor)
Параметры
- input_ids (
torch.Tensorформы(batch_size, sequence_length), необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию padding игнорируется.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- token_type_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- inputs_embeds (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. - labels (
torch.LongTensorформы(batch_size,), необязательный) — Метки для вычисления функции потерь классификации с множественным выбором. Индексы должны находиться в диапазоне[0, ..., num_choices-1], гдеnum_choices— размер второго измерения входных тензоров. (См.input_idsвыше) - output_attentions (
bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описанииattentionsв разделе возвращаемых тензоров. - output_hidden_states (
bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описанииhidden_statesсреди возвращаемых тензоров. - return_dict (
bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.
Возвращает
MultipleChoiceModelOutput или tuple(torch.Tensor)
Объект MultipleChoiceModelOutput или кортеж
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (FunnelConfig) и входных данных.
Метод forward класса FunnelForMultipleChoice переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
torch.Tensorформы (1,), необязательный, возвращается, если заданlabels) — Потери классификации.logits (
torch.Tensorформы(batch_size, num_choices)) — num_choices — это второе измерение входных тензоров (см. input_ids выше).Оценки классификации (до SoftMax).
hidden_states (
tuple(torch.Tensor), optional, возвращается, если передано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, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Пример:
>>> from transformers import AutoTokenizer, FunnelForMultipleChoice
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("funnel-transformer/small")
>>> model = FunnelForMultipleChoice.from_pretrained("funnel-transformer/small")
>>> prompt = "In Italy, pizza served in formal settings, such as at a restaurant, is presented unsliced."
>>> choice0 = "It is eaten with a fork and a knife."
>>> choice1 = "It is eaten while held in the hand."
>>> labels = torch.tensor(0).unsqueeze(0) # choice0 is correct (according to Wikipedia ;)), batch size 1
>>> encoding = tokenizer([prompt, prompt], [choice0, choice1], return_tensors="pt", padding=True)
>>> outputs = model(**{k: v.unsqueeze(0) for k, v in encoding.items()}, labels=labels) # batch size is 1
>>> # the linear classifier still needs to be trained
>>> loss = outputs.loss
>>> logits = outputs.logitsFunnelForTokenClassification
класс transformers.FunnelForTokenClassification
< source >( config: FunnelConfig )
Параметры
- config (FunnelConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Funnel transformer с головой для классификации токенов (линейный слой поверх выходных скрытых состояний), например, для задач распознавания именованных сущностей (NER).
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → TokenClassifierOutput or tuple(torch.Tensor)
Параметры
- input_ids (
torch.Tensorформы(batch_size, sequence_length), необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию padding игнорируется.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- token_type_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- inputs_embeds (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. - labels (
torch.LongTensorформы(batch_size, sequence_length), необязательный) — Метки для вычисления функции потерь классификации токенов. Индексы должны находиться в диапазоне[0, ..., config.num_labels - 1]. - output_attentions (
bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описанииattentionsв разделе возвращаемых тензоров. - output_hidden_states (
bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описанииhidden_statesсреди возвращаемых тензоров. - return_dict (
bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.
Возвращает
TokenClassifierOutput или tuple(torch.Tensor)
Объект TokenClassifierOutput или кортеж из
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (FunnelConfig) и входных данных.
Метод forward класса FunnelForTokenClassification переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
torch.Tensorформы(1,), необязательный, возвращается, если заданlabels) — Потери классификации.logits (
torch.Tensorформы(batch_size, sequence_length, config.num_labels)) — Оценки классификации (до SoftMax).hidden_states (
tuple(torch.Tensor), optional, возвращается, если передано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, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Пример:
>>> from transformers import AutoTokenizer, FunnelForTokenClassification
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("funnel-transformer/small")
>>> model = FunnelForTokenClassification.from_pretrained("funnel-transformer/small")
>>> inputs = tokenizer(
... "HuggingFace is a company based in Paris and New York", add_special_tokens=False, return_tensors="pt"
... )
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_token_class_ids = logits.argmax(-1)
>>> # Note that tokens are classified rather then input words which means that
>>> # there might be more predicted token classes than words.
>>> # Multiple token classes might account for the same word
>>> predicted_tokens_classes = [model.config.id2label[t.item()] for t in predicted_token_class_ids[0]]
>>> predicted_tokens_classes
...
>>> labels = predicted_token_class_ids
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...FunnelForQuestionAnswering
класс transformers.FunnelForQuestionAnswering
< source >( config: FunnelConfig )
Параметры
- config (FunnelConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Funnel transformer с головой для классификации пропусков (span classification) для задач извлекающего вопросно-ответного типа, таких как SQuAD (линейный слой поверх выходных скрытых состояний для вычисления span start logits и span end logits).
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonestart_positions: typing.Optional[torch.Tensor] = Noneend_positions: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → QuestionAnsweringModelOutput or tuple(torch.Tensor)
Параметры
- input_ids (
torch.Tensorформы(batch_size, sequence_length), необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию padding игнорируется.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- token_type_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- inputs_embeds (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. - start_positions (
torch.Tensorформы(batch_size,), необязательный) — Метки для позиции (индекса) начала размеченного фрагмента, используемые для вычисления функции потерь классификации токенов. Позиции ограничиваются длиной последовательности (sequence_length). Позиции, выходящие за пределы последовательности, не учитываются при вычислении функции потерь. - end_positions (
torch.Tensorформы(batch_size,), необязательный) — Метки для позиции (индекса) конца размеченного фрагмента, используемые для вычисления функции потерь классификации токенов. Позиции ограничиваются длиной последовательности (sequence_length). Позиции, выходящие за пределы последовательности, не учитываются при вычислении функции потерь. - output_attentions (
bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описанииattentionsв разделе возвращаемых тензоров. - output_hidden_states (
bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описанииhidden_statesсреди возвращаемых тензоров. - return_dict (
bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.
Возвращает
QuestionAnsweringModelOutput или tuple(torch.Tensor)
Объект QuestionAnsweringModelOutput или кортеж
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (FunnelConfig) и входных данных.
Метод FunnelForQuestionAnswering forward переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
torch.Tensorформы(1,), необязательный, возвращается, если заданlabels) — Суммарная функция потерь для извлечения пролёгов представляет собой сумму кросс-энтропии для начальных и конечных позиций.start_logits (
torch.Tensorформы(batch_size, sequence_length)) — Оценки начала спана (до SoftMax).end_logits (
torch.Tensorформы(batch_size, sequence_length)) — Оценки конца пролета (до SoftMax).hidden_states (
tuple(torch.Tensor), optional, возвращается, если передано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, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Пример:
>>> from transformers import AutoTokenizer, FunnelForQuestionAnswering
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("funnel-transformer/small")
>>> model = FunnelForQuestionAnswering.from_pretrained("funnel-transformer/small")
>>> question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"
>>> inputs = tokenizer(question, text, return_tensors="pt")
>>> with torch.no_grad():
... outputs = model(**inputs)
>>> answer_start_index = outputs.start_logits.argmax()
>>> answer_end_index = outputs.end_logits.argmax()
>>> predict_answer_tokens = inputs.input_ids[0, answer_start_index : answer_end_index + 1]
>>> tokenizer.decode(predict_answer_tokens, skip_special_tokens=True)
...
>>> # target is "nice puppet"
>>> target_start_index = torch.tensor([14])
>>> target_end_index = torch.tensor([15])
>>> outputs = model(**inputs, start_positions=target_start_index, end_positions=target_end_index)
>>> loss = outputs.loss
>>> round(loss.item(), 2)
...