Transformers documentation
XLNet
Эта модель была опубликована в HF papers 19.06.2019 и добавлена в Hugging Face Transformers 16.11.2020.
XLNet
Обзор
Модель XLNet была предложена в статье XLNet: Generalized Autoregressive Pretraining for Language Understanding Zhilin Yang, Zihang Dai, Yiming Yang, Jaime Carbonell, Ruslan Salakhutdinov, Quoc V. Le. XLnet представляет собой расширение модели Transformer-XL, обученной с использованием авторегрессионного метода для изучения двунаправленных контекстов путём максимизации ожидаемой вероятности по всем перестановкам порядка факторизации входной последовательности.
Аннотация из статьи следующая:
Благодаря способности моделировать двунаправленный контекст, предобучение на основе денормализующего автокодирования, как в BERT, обеспечивает лучшие результаты по сравнению с подходами предобучения, основанными на авторегрессионном языковом моделировании. Однако, полагаясь на искажение входных данных с помощью масок, BERT игнорирует зависимости между замаскированными позициями и страдает от рассогласования между этапами предобучения и дообучения. Учитывая эти преимущества и недостатки, мы предлагаем XLNet — обобщенный метод авторегрессионного предобучения, который (1) позволяет обучаться двунаправленным контекстам, максимизируя ожидаемую правдоподобность по всем перестановкам порядка факторизации, и (2) преодолевает ограничения BERT благодаря своей авторегрессионной формулировке. Кроме того, XLNet интегрирует идеи из Transformer-XL, передовой авторегрессионной модели, в процесс предобучения. Эмпирически, при сопоставимых условиях экспериментов, XLNet превосходит BERT на 20 задачах, часто с большим отрывом, включая ответы на вопросы, естественное языковое рассуждение, анализ тональности и ранжирование документов.
Эта модель была предоставлена пользователем thomwolf. Исходный код можно найти здесь.
Советы по использованию
- Конкретный шаблон внимания можно контролировать на этапах обучения и тестирования с помощью входного параметра
perm_mask. - В связи с трудностями обучения полностью авто-регрессивной модели при различных порядках факторизации, XLNet предобучается с использованием в качестве целевых только подмножества выходных токенов, которые выбираются с помощью входного параметра
target_mapping. - Чтобы использовать XLNet для последовательного декодирования (т. е. не в полностью двунаправленном режиме), используйте входы
perm_maskиtarget_mappingдля управления диапазоном внимания и выводами - XLNet — одна из немногих моделей, не имеющих ограничения на длину последовательности.
- XLNet — это не традиционная авторегрессионная модель, но использует стратегию обучения, основанную на ней. Он переставляет токены в предложении, а затем позволяет модели использовать последние n токенов для предсказания токена n+1. Поскольку всё это делается с помощью маски, предложение фактически подаётся в модель в правильном порядке, но вместо маскирования первых n токенов для n+1, XLNet использует маску, которая скрывает предыдущие токены в некоторой заданной перестановке 1,…,длина последовательности.
- XLNet также использует тот же механизм рекуррентности, что и Transformer-XL, для построения долгосрочных зависимостей.
Ресурсы
- Руководство по задаче классификации текста
- Руководство по задаче классификации токенов
- Руководство по задаче вопрос-ответ
- Руководство по задаче каузального языкового моделирования
- Руководство по задаче с множественным выбором
XLNetConfig
класс transformers.XLNetConfig
< 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 = 32000d_model: int = 1024n_layer: int = 24n_head: int = 16d_inner: int = 4096d_head: int | None = Noneff_activation: str = 'gelu'attn_type: str = 'bi'initializer_range: float = 0.02layer_norm_eps: float = 1e-12dropout: float | int = 0.1mem_len: int | None = 512reuse_len: int | None = Noneuse_mems_eval: bool = Trueuse_mems_train: bool = Falsebi_data: bool = Falseclamp_len: int = -1same_length: bool = Falsesummary_type: str = 'last'summary_use_proj: bool = Truesummary_activation: str = 'tanh'summary_last_dropout: float | int = 0.1start_n_top: int = 5end_n_top: int = 5pad_token_id: int | None = 5bos_token_id: int | None = 1eos_token_id: int | list[int] | None = 2tie_word_embeddings: bool = True )
Параметры
- vocab_size (
int, необязательный, по умолчанию32000) — Размер словаря модели. Определяет количество различных токенов, которые могут быть представлены вinput_ids. - d_model (
int, необязательный, по умолчанию1024) — Размер слоев кодировщика и пулер-слоя. - n_layer (
int, необязательный, по умолчанию24) — Количество скрытых слоев в декодере Transformer. - n_head (
int, необязательный, по умолчанию16) — Количество голок внимания в каждом слое внимания декодера Transformer. - d_inner (
int, необязательный, по умолчанию4096) — Размерность представлений MLP. - d_head (
int, необязательный) — Размер измерения головы внимания. Если значение равно None, по умолчанию используется hidden_size // num_attention_heads - ff_activation (
strилиCallable, необязательный, по умолчанию"gelu") — Нелинейная функция активации (функция или строка). Если передана строка, поддерживаются значения"gelu","relu","silu"и"gelu_new". - attn_type (
str, необязательный, по умолчанию"bi") — Тип внимания, используемый моделью. Установите"bi"для XLNet и"uni"для Transformer-XL. - initializer_range (
float, необязательный, по умолчанию0.02) — Стандартное отклонение truncated_normal_initializer, используемое для инициализации всех матриц весов. - layer_norm_eps (
float, необязательный, по умолчанию1e-12) — Значение epsilon, используемое слоями нормализации. - dropout (
Union[float, int], необязательный, по умолчанию0.1) — Коэффициент для всех слоёв dropout. - mem_len (
intorNone, необязательный) — Количество токенов для кэширования. Пары ключ/значение, которые уже были предварительно вычислены в предыдущем проходе, не будут вычисляться повторно. Подробности см. в быстром старте. - reuse_len (
int, необязательный) — Количество токенов в текущей партии, которые будут закэшированы и переиспользованы в будущем. - use_mems_eval (
bool, необязательный, по умолчаниюTrue) — Указывает, следует ли модели использовать механизм рекуррентной памяти в режиме оценки. - use_mems_train (
bool, optional, defaults toFalse) — Whether or not the model should make use of the recurrent memory mechanism in train mode.For pretraining, it is recommended to set `use_mems_train` to `True`. For fine-tuning, it is recommended to set `use_mems_train` to `False` as discussed [here](https://github.com/zihangdai/xlnet/issues/41#issuecomment-505102587). If `use_mems_train` is set to `True`, one has to make sure that the train batches are correctly pre-processed, *e.g.* `batch_1 = [[This line is], [This is the]]` and `batch_2 = [[ the first line], [ second line]]` and that all batches are of equal size. - bi_data (
bool, необязательный, по умолчаниюFalse) — Использовать ли двунаправленный входной конвейер. Обычно устанавливается вTrueпри предварительном обучении и вFalseпри дообучении. - clamp_len (
int, необязательный, по умолчанию -1) — Ограничивает все относительные расстояния, превышающие clamp_len. Установка этого атрибута в -1 означает, что ограничение не применяется. - same_length (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли использовать одинаковую длину внимания для каждого токена. - summary_type (
str, необязательный, по умолчанию — «last») — Аргумент, используемый при суммаризации последовательности. Применяется в моделях классификации последовательностей и выбора из нескольких вариантов. Должен быть одним из следующих значений:"last": использовать скрытое состояние последнего токена (как в XLNet)."first": использовать скрытое состояние первого токена (как в BERT)."mean": вычислить среднее значение скрытых состояний всех токенов."cls_index": укажите Tensor с позицией токена классификации (как в GPT/GPT-2)."attn": пока не реализовано, используйте multi-head attention.
- summary_use_proj (
bool, необязательный, по умолчаниюTrue) — Аргумент, используемый при выполнении сводки последовательности. Применяется в моделях классификации последовательностей и множественного выбора. Определяет, следует ли добавлять проекцию после извлечения вектора. - summary_activation (
str, необязательный) — Аргумент, используемый при выполнении сводки последовательности. Применяется в моделях классификации последовательностей и множественного выбора. Передайте"tanh", чтобы применить активацию tanh к выходу; любое другое значение приведет к отсутствию активации. - summary_last_dropout (
float, необязательный, по умолчанию 0.1) — Используется в моделях классификации последовательностей и множественного выбора. Коэффициент dropout, применяемый после проекции и функции активации. - start_n_top (
int, необязательный, по умолчанию 5) — Используется в скрипте оценки SQuAD. - end_n_top (
int, необязательный, по умолчанию 5) — Используется в скрипте оценки SQuAD. - pad_token_id (
int, необязательный, по умолчанию5) — Идентификатор токена, используемого для выравнивания в словаре. - bos_token_id (
int, необязательный, по умолчанию1) — Идентификатор токена, используемого для обозначения начала потока в словаре. - eos_token_id (
Union[int, list[int]], необязательный, по умолчанию2) — Идентификатор токена, используемого для обозначения конца потока в словаре. - tie_word_embeddings (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли связывать веса эмбеддингов согласно маппингуtied_weights_keysмодели.
Это класс конфигурации для хранения конфигурации XLNetModel. Он используется для создания модели Xlnet в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации xlnet/xlnet-large-cased
Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.
Примеры:
>>> from transformers import XLNetConfig, XLNetModel
>>> # Initializing a XLNet configuration
>>> configuration = XLNetConfig()
>>> # Initializing a model (with random weights) from the configuration
>>> model = XLNetModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configXLNetTokenizer
класс transformers.XLNetTokenizer
< source >( vocab: str | list[tuple[str, float]] | None = Noneunk_id: int = 0do_lower_case = Falseremove_space = Truekeep_accents = Falsebos_token = '<s>'eos_token = '</s>'unk_token = '<unk>'sep_token = '<sep>'pad_token = '<pad>'cls_token = '<cls>'mask_token = '<mask>'_spm_precompiled_charsmap = Noneadditional_special_tokens = None**kwargs )
Параметры
- vocab (
list of tuples, необязательный) — Список кортежей (token, score) для модели Unigram. Если не указан, используется пустой список. - unk_id (
int, необязательный, по умолчанию 0) — Идентификатор токена неизвестного слова в словаре. - do_lower_case (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли приводить входные данные к нижнему регистру при токенизации. - remove_space (
bool, необязательный, по умолчаниюTrue) — Указывает, следует ли удалять пробелы при токенизации (убирать лишние пробелы в начале и в конце строки). - keep_accents (
bool, необязательный, по умолчаниюFalse) — Сохранять ли диакритические знаки при токенизации. - bos_token (
str, необязательный, по умолчанию"<s>") — Токен начала последовательности, использовавшийся при предварительном обучении. Может использоваться в качестве токена классификатора последовательности. При построении последовательности с помощью специальных токенов этот токен не используется для обозначения начала последовательности. Вместо него используется cls_token.При построении последовательности с использованием специальных токенов этот токен не используется для начала последовательности. В качестве токена начала последовательности используется
cls_token. - eos_token (
str, необязательный, по умолчанию"</s>") — Токен конца последовательности. При построении последовательности с использованием специальных токенов этот токен не используется для обозначения конца последовательности. Вместо него используется sep_token.При построении последовательности с использованием специальных токенов для обозначения конца последовательности не используется этот токен. Используется токен
sep_token. - unk_token (
str, необязательный, по умолчанию"<unk>") — Токен неизвестного слова. Токен, отсутствующий в словаре, не может быть преобразован в ID, поэтому вместо него используется этот токен. - sep_token (
str, необязательный, по умолчанию"<sep>") — Токен-разделитель, который используется при построении последовательности из нескольких последовательностей, например, двух последовательностей для классификации последовательностей или текста и вопроса для ответа на вопросы. Он также используется в качестве последнего токена в последовательности, построенной со специальными токенами. - pad_token (
str, необязательный, по умолчанию"<pad>") — Токен, используемый для выравнивания, например, при пакетной обработке последовательностей разной длины. - cls_token (
str, необязательный, по умолчанию"<cls>") — Токен классификатора, используемый при классификации последовательности (классификация всей последовательности, а не посимвольная классификация). Это первый токен последовательности, если она построена со специальными токенами. - mask_token (
str, необязательный, по умолчанию"<mask>") — Токен, используемый для маскирования значений. Это тот токен, который применяется при обучении модели с использованием masked language modeling. Именно этот токен модель будет пытаться предсказать. - additional_special_tokens (
list[str], необязательный, по умолчанию["<eop>", "<eod>"]) — Дополнительные специальные токены, используемые токенизатором.
Создайте токенизатор XLNet (на базе библиотеки tokenizers от HuggingFace). Основан на Unigram.
Этот токенизатор наследуется от 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.
Специфические выходные данные XLNet
класс transformers.models.xlnet.modeling_xlnet.XLNetModelOutput
< source >( last_hidden_state: Tensormems: list[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )
Параметры
- last_hidden_state (
torch.Tensorформы(batch_size, num_predict, hidden_size)) — Последовательность скрытых состояний на последнем слое модели.num_predictсоответствуетtarget_mapping.shape[1]. Еслиtarget_mappingравноNone, тоnum_predictсоответствуетsequence_length. - mems (
list[torch.Tensor]длинойconfig.n_layers) — Содержит предварительно вычисленные скрытые состояния. Может использоваться (см. входmems) для ускорения последовательного декодирования. Идентификаторы токенов, для которых прошлые состояния переданы в эту модель, не следует передавать какinput_ids, поскольку они уже были вычислены. - 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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Тип возвращаемого значения XLNetModel.
класс transformers.models.xlnet.modeling_xlnet.XLNetLMHeadModelOutput
< source >( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonemems: list[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )
Параметры
- loss (
torch.Tensorформы (1,), необязательный, возвращается, если заданlabels) — Потеря языковой модели (для предсказания следующего токена). - logits (
torch.Tensorформы(batch_size, num_predict, config.vocab_size)) — Оценки предсказаний языковой модели (оценки для каждого токена словаря до SoftMax).num_predictсоответствуетtarget_mapping.shape[1]. Еслиtarget_mappingравноNone, тоnum_predictсоответствуетsequence_length. - mems (
list[torch.Tensor]длинойconfig.n_layers) — Содержит предварительно вычисленные скрытые состояния. Может использоваться (см. входmems) для ускорения последовательного декодирования. Идентификаторы токенов, для которых прошлые состояния переданы в эту модель, не следует передавать какinput_ids, поскольку они уже были вычислены. - 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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Тип возвращаемого значения XLNetLMHeadModel.
класс transformers.models.xlnet.modeling_xlnet.XLNetForSequenceClassificationOutput
< source >( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonemems: list[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )
Параметры
- loss (
torch.Tensorформы(1,), необязательный, возвращается, если заданlabel) — Потери классификации (или регрессии, если config.num_labels==1). - logits (
torch.Tensorформы(batch_size, config.num_labels)) — Оценки классификации (или регрессии, если config.num_labels==1) до применения SoftMax. - mems (
list[torch.Tensor]длинойconfig.n_layers) — Содержит предварительно вычисленные скрытые состояния. Может использоваться (см. входmems) для ускорения последовательного декодирования. Идентификаторы токенов, для которых прошлые состояния переданы в эту модель, не следует передавать какinput_ids, поскольку они уже были вычислены. - 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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Тип результата XLNetForSequenceClassification.
класс transformers.models.xlnet.modeling_xlnet.XLNetForMultipleChoiceOutput
< source >( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonemems: list[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )
Параметры
- loss (
torch.Tensorформы (1,), необязательный, возвращается, если заданlabels) — Потери классификации. - logits (
torch.Tensorформы(batch_size, num_choices)) — num_choices — это второе измерение входных тензоров (см. input_ids выше).Оценки классификации (до SoftMax).
- mems (
list[torch.Tensor]длинойconfig.n_layers) — Содержит предварительно вычисленные скрытые состояния. Может использоваться (см. входmems) для ускорения последовательного декодирования. Идентификаторы токенов, для которых прошлые состояния переданы в эту модель, не следует передавать какinput_ids, поскольку они уже были вычислены. - 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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Тип результата XLNetForMultipleChoice.
класс transformers.models.xlnet.modeling_xlnet.XLNetForTokenClassificationOutput
< source >( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonemems: list[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )
Параметры
- loss (
torch.Tensorформы(1,), необязательный, возвращается, если заданlabels) — Потери классификации. - logits (
torch.Tensorформы(batch_size, sequence_length, config.num_labels)) — Оценки классификации (до SoftMax). - mems (
list[torch.Tensor]длинойconfig.n_layers) — Содержит предварительно вычисленные скрытые состояния. Может использоваться (см. входmems) для ускорения последовательного декодирования. Идентификаторы токенов, для которых прошлые состояния переданы в эту модель, не следует передавать какinput_ids, поскольку они уже были вычислены. - 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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Тип возвращаемого значения XLNetForTokenClassificationOutput.
класс transformers.models.xlnet.modeling_xlnet.XLNetForQuestionAnsweringSimpleOutput
< source >( loss: typing.Optional[torch.Tensor] = Nonestart_logits: typing.Optional[torch.Tensor] = Noneend_logits: typing.Optional[torch.Tensor] = Nonemems: list[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )
Параметры
- loss (
torch.Tensorформы(1,), необязательный, возвращается, если заданlabels) — Полная функция потерь для извлечения пролётов представляет собой сумму кросс-энтропии для начальных и конечных позиций. - start_logits (
torch.Tensorформы(batch_size, sequence_length,)) — Оценки начала пролёта (до SoftMax). - end_logits (
torch.Tensorформы(batch_size, sequence_length,)) — Оценки конца пролета (до SoftMax). - mems (
list[torch.Tensor]длинойconfig.n_layers) — Содержит предварительно вычисленные скрытые состояния. Может использоваться (см. входmems) для ускорения последовательного декодирования. Идентификаторы токенов, для которых прошлые состояния переданы в эту модель, не следует передавать какinput_ids, поскольку они уже были вычислены. - 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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Тип возвращаемого значения XLNetForQuestionAnsweringSimple.
класс transformers.models.xlnet.modeling_xlnet.XLNetForQuestionAnsweringOutput
< source >( loss: typing.Optional[torch.Tensor] = Nonestart_top_log_probs: typing.Optional[torch.Tensor] = Nonestart_top_index: typing.Optional[torch.LongTensor] = Noneend_top_log_probs: typing.Optional[torch.Tensor] = Noneend_top_index: typing.Optional[torch.LongTensor] = Nonecls_logits: typing.Optional[torch.Tensor] = Nonemems: list[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )
Параметры
- loss (
torch.Tensorформы(1,), необязательный, возвращается, если заданы иstart_positions, иend_positions) — Потери классификации, представленные как сумма потерь классификации начального токена, конечного токена (а также is_impossible, если он задан). - start_top_log_probs (
torch.Tensorформы(batch_size, config.start_n_top), необязательный, возвращается, еслиstart_positionsилиend_positionsне указаны) — Логарифмические вероятности для config.start_n_top наиболее вероятных стартовых токенов (поиск по лучам). - start_top_index (
torch.LongTensorформы(batch_size, config.start_n_top), необязательный, возвращается, еслиstart_positionsилиend_positionsне переданы) — Индексы для config.start_n_top наиболее вероятных вариантов стартового токена (поиск по лучам). - end_top_log_probs (
torch.Tensorформы(batch_size, config.start_n_top * config.end_n_top), необязательный, возвращается, еслиstart_positionsилиend_positionsне указаны) — Логарифмические вероятности для топ-config.start_n_top * config.end_n_topвариантов конечных токенов (beam-search). - end_top_index (
torch.LongTensorформы(batch_size, config.start_n_top * config.end_n_top), необязательный, возвращается, еслиstart_positionsилиend_positionsне заданы) — Индексы дляconfig.start_n_top * config.end_n_topнаиболее вероятных вариантов конечного токена (поиск по лучам). - cls_logits (
torch.Tensorформы(batch_size,), необязательный, возвращается, еслиstart_positionsилиend_positionsне указаны) — Логарифмические вероятности для меткиis_impossibleответов. - mems (
list[torch.Tensor]длинойconfig.n_layers) — Содержит предварительно вычисленные скрытые состояния. Может использоваться (см. входmems) для ускорения последовательного декодирования. Идентификаторы токенов, для которых прошлые состояния переданы в эту модель, не следует передавать какinput_ids, поскольку они уже были вычислены. - 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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Тип возвращаемого значения XLNetForQuestionAnswering.
XLNetModel
класс transformers.XLNetModel
< source >( config: XLNetConfig )
Параметры
- config (XLNetConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель Xlnet, выводящая необработанные скрытые состояния без какого-либо специализированного слоя наверху.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonemems: typing.Optional[torch.Tensor] = Noneperm_mask: typing.Optional[torch.Tensor] = Nonetarget_mapping: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinput_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_mems: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → XLNetModelOutput 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 для токенов, которые замаскированы.
- mems (
list[torch.Tensor]длинойconfig.n_layers) — Содержит предварительно вычисленные скрытые состояния (см.memsв выводе ниже). Можно использовать для ускорения последовательного декодирования. Токены, для которых уже предоставлены прошлые состояния, не следует передавать в качествеinput_ids, так как они уже были обработаны.use_memsдолжно быть установлено вTrue, чтобы использоватьmems. - perm_mask (
torch.Tensorформы(batch_size, sequence_length, sequence_length), необязательный) — Маска, указывающая шаблон внимания для каждого входного токена со значениями из диапазона[0, 1]:- если
perm_mask[k, i, j] = 0, то i обращается к j в батче k; - если
perm_mask[k, i, j] = 1, то i не обращается к j в батче k.
Если не задано, каждый токен обращается ко всем остальным (полное двунаправленное внимание). Используется только во время предварительного обучения (для определения порядка факторизации) или при последовательном декодировании (генерация).
- если
- target_mapping (
torch.Tensorформы(batch_size, num_predict, sequence_length), необязательный) — Маска, указывающая, какие выходные токены использовать. Еслиtarget_mapping[k, i, j] = 1, то i-й прогноз в батче k соответствует j-му токену. Используется только во время предварительного обучения для частичного прогнозирования или последовательного декодирования (генерации). - token_type_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- input_mask (
torch.Tensorс формойbatch_size, sequence_length, , необязательный) — Маска для предотвращения применения внимания к индексам токенов отступов. Отрицательное значениеattention_mask, то есть 0 для реальных токенов и 1 для отступов, что сохранено для совместимости с исходной кодовой базой.Значения маски, выбранные в диапазоне
[0, 1]:- 1 для токенов, которые замаскированы,
- 0 для токенов, которые не замаскированы.
Можно использовать только один из
input_maskиattention_mask. - inputs_embeds (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. - use_mems (
bool, необязательный) — Указывает, следует ли использовать состояния памяти для ускорения последовательного декодирования. Если установлено значениеTrue, модель будет использовать скрытые состояния из предыдущих проходов для вычисления внимания, что может значительно повысить производительность при задачах последовательного декодирования. - output_attentions (
bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описанииattentionsв разделе возвращаемых тензоров. - output_hidden_states (
bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описанииhidden_statesсреди возвращаемых тензоров. - return_dict (
bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.
Возвращает
XLNetModelOutput или tuple(torch.Tensor)
Объект XLNetModelOutput или кортеж
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (XLNetConfig) и входных данных.
Метод forward модели XLNetModel переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
last_hidden_state (
torch.Tensorформы(batch_size, num_predict, hidden_size)) — Последовательность скрытых состояний на последнем слое модели.num_predictсоответствуетtarget_mapping.shape[1]. Еслиtarget_mappingравноNone, тоnum_predictсоответствуетsequence_length.mems (
list[torch.Tensor]длинойconfig.n_layers) — содержит предварительно вычисленные скрытые состояния. Может использоваться (см. входmems) для ускорения последовательного декодирования. Идентификаторы токенов, для которых прошлые состояния переданы в эту модель, не следует передавать какinput_ids, поскольку они уже были вычислены.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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
XLNetLMHeadModel
класс transformers.XLNetLMHeadModel
< source >( config: XLNetConfig )
Параметры
- config (XLNetConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель XLNet с головкой для моделирования языка сверху (линейный слой с весами, связанными с входными эмбеддингами).
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonemems: typing.Optional[torch.Tensor] = Noneperm_mask: typing.Optional[torch.Tensor] = Nonetarget_mapping: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinput_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneuse_mems: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs ) → XLNetLMHeadModelOutput 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 для токенов, которые замаскированы.
- mems (
list[torch.Tensor]длинойconfig.n_layers) — Содержит предварительно вычисленные скрытые состояния (см.memsв выводе ниже). Можно использовать для ускорения последовательного декодирования. Токены, для которых уже предоставлены прошлые состояния, не следует передавать в качествеinput_ids, так как они уже были обработаны.use_memsдолжно быть установлено вTrue, чтобы использоватьmems. - perm_mask (
torch.Tensorформы(batch_size, sequence_length, sequence_length), необязательный) — Маска, указывающая шаблон внимания для каждого входного токена со значениями из диапазона[0, 1]:- если
perm_mask[k, i, j] = 0, то i обращается к j в батче k; - если
perm_mask[k, i, j] = 1, то i не обращается к j в батче k.
Если не задано, каждый токен обращается ко всем остальным (полное двунаправленное внимание). Используется только во время предварительного обучения (для определения порядка факторизации) или при последовательном декодировании (генерация).
- если
- target_mapping (
torch.Tensorформы(batch_size, num_predict, sequence_length), необязательный) — Маска, указывающая, какие выходные токены использовать. Еслиtarget_mapping[k, i, j] = 1, то i-й прогноз в батче k соответствует j-му токену. Используется только во время предварительного обучения для частичного прогнозирования или последовательного декодирования (генерации). - token_type_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- input_mask (
torch.Tensorс формойbatch_size, sequence_length, , необязательный) — Маска для предотвращения применения внимания к индексам токенов отступов. Отрицательное значениеattention_mask, то есть 0 для реальных токенов и 1 для отступов, что сохранено для совместимости с исходной кодовой базой.Значения маски, выбранные в диапазоне
[0, 1]:- 1 для токенов, которые замаскированы,
- 0 для токенов, которые не замаскированы.
Можно использовать только один из
input_maskиattention_mask. - inputs_embeds (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. - labels (
torch.LongTensorформы(batch_size, num_predict), необязательный) — Метки для моделирования языка с маскированием.num_predictсоответствуетtarget_mapping.shape[1]. Еслиtarget_mappingравноNone, тоnum_predictсоответствуетsequence_length.Метки должны соответствовать замаскированным входным словам, которые необходимо предсказать, и зависят от
target_mapping. Обратите внимание, что для выполнения стандартного авто-регрессивного моделирования языка токендолжен быть добавлен к input_ids(см. функциюprepare_inputs_for_generationи примеры ниже)Индексы выбираются из диапазона
[-100, 0, ..., config.vocab_size]. Все метки, установленные в-100, игнорируются; функция потерь вычисляется только для меток из диапазона[0, ..., config.vocab_size]. - use_mems (
bool, необязательный) — Указывает, следует ли использовать состояния памяти для ускорения последовательного декодирования. Если установлено значениеTrue, модель будет использовать скрытые состояния из предыдущих проходов для вычисления внимания, что может значительно повысить производительность при задачах последовательного декодирования. - output_attentions (
bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описанииattentionsв разделе возвращаемых тензоров. - output_hidden_states (
bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описанииhidden_statesсреди возвращаемых тензоров. - return_dict (
bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа. - logits_to_keep (
Union[int, torch.Tensor], необязательный, по умолчанию0) — Если передано значение типаint, вычисляет logits для последнихlogits_to_keepтокенов. Если указано0, logits вычисляются для всехinput_ids(особый случай). Для генерации нужны logits только последнего токена, и вычисление их только для этого токена позволяет сэкономить память, что становится весьма значимым для длинных последовательностей или большого размера словаря. Если передано значение типаtorch.Tensor, оно должно быть одномерным и соответствовать индексам, которые нужно сохранить в измерении длины последовательности. Это полезно при использовании упакованного формата тензоров (один размер для batch и длины последовательности).
Возвращает
XLNetLMHeadModelOutput или tuple(torch.Tensor)
Объект XLNetLMHeadModelOutput или кортеж
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (XLNetConfig) и входных данных.
Метод forward модели XLNetLMHeadModel переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
torch.Tensorформы (1,), необязательный, возвращается, если заданlabels) — Потери языковой модели (для предсказания следующего токена).logits (
torch.Tensorформы(batch_size, num_predict, config.vocab_size)) — Оценки предсказаний языковой модели (оценки для каждого токена словаря до применения SoftMax).num_predictсоответствуетtarget_mapping.shape[1]. Еслиtarget_mappingравноNone, тоnum_predictсоответствуетsequence_length.mems (
list[torch.Tensor]длинойconfig.n_layers) — содержит предварительно вычисленные скрытые состояния. Может использоваться (см. входmems) для ускорения последовательного декодирования. Идентификаторы токенов, для которых прошлые состояния переданы в эту модель, не следует передавать какinput_ids, поскольку они уже были вычислены.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, XLNetLMHeadModel
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("xlnet/xlnet-large-cased")
>>> model = XLNetLMHeadModel.from_pretrained("xlnet/xlnet-large-cased")
>>> # We show how to setup inputs to predict a next token using a bi-directional context.
>>> input_ids = torch.tensor(
... tokenizer.encode("Hello, my dog is very <mask>", add_special_tokens=False)
... ).unsqueeze(
... 0
... ) # We will predict the masked token
>>> perm_mask = torch.zeros((1, input_ids.shape[1], input_ids.shape[1]), dtype=torch.float)
>>> perm_mask[:, :, -1] = 1.0 # Previous tokens don't see last token
>>> target_mapping = torch.zeros(
... (1, 1, input_ids.shape[1]), dtype=torch.float
... ) # Shape [1, 1, seq_length] => let's predict one token
>>> target_mapping[
... 0, 0, -1
... ] = 1.0 # Our first (and only) prediction will be the last token of the sequence (the masked token)
>>> outputs = model(input_ids, perm_mask=perm_mask, target_mapping=target_mapping)
>>> next_token_logits = outputs[
... 0
... ] # Output has shape [target_mapping.size(0), target_mapping.size(1), config.vocab_size]
>>> # The same way can the XLNetLMHeadModel be used to be trained by standard auto-regressive language modeling.
>>> input_ids = torch.tensor(
... tokenizer.encode("Hello, my dog is very <mask>", add_special_tokens=False)
... ).unsqueeze(
... 0
... ) # We will predict the masked token
>>> labels = torch.tensor(tokenizer.encode("cute", add_special_tokens=False)).unsqueeze(0)
>>> assert labels.shape[0] == 1, "only one word will be predicted"
>>> perm_mask = torch.zeros((1, input_ids.shape[1], input_ids.shape[1]), dtype=torch.float)
>>> perm_mask[
... :, :, -1
... ] = 1.0 # Previous tokens don't see last token as is done in standard auto-regressive lm training
>>> target_mapping = torch.zeros(
... (1, 1, input_ids.shape[1]), dtype=torch.float
... ) # Shape [1, 1, seq_length] => let's predict one token
>>> target_mapping[
... 0, 0, -1
... ] = 1.0 # Our first (and only) prediction will be the last token of the sequence (the masked token)
>>> outputs = model(input_ids, perm_mask=perm_mask, target_mapping=target_mapping, labels=labels)
>>> loss = outputs.loss
>>> next_token_logits = (
... outputs.logits
... ) # Logits have shape [target_mapping.size(0), target_mapping.size(1), config.vocab_size]XLNetForSequenceClassification
класс transformers.XLNetForSequenceClassification
< source >( config: XLNetConfig )
Параметры
- config (XLNetConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель XLNet с головой для классификации/регрессии последовательности (линейный слой поверх пул-вывода), например, для задач GLUE.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonemems: typing.Optional[torch.Tensor] = Noneperm_mask: typing.Optional[torch.Tensor] = Nonetarget_mapping: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinput_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneuse_mems: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → XLNetForSequenceClassificationOutput 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 для токенов, которые замаскированы.
- mems (
list[torch.Tensor]длинойconfig.n_layers) — Содержит предварительно вычисленные скрытые состояния (см.memsв выводе ниже). Можно использовать для ускорения последовательного декодирования. Токены, для которых уже предоставлены прошлые состояния, не следует передавать в качествеinput_ids, так как они уже были обработаны.use_memsдолжно быть установлено вTrue, чтобы использоватьmems. - perm_mask (
torch.Tensorформы(batch_size, sequence_length, sequence_length), необязательный) — Маска, указывающая шаблон внимания для каждого входного токена со значениями из диапазона[0, 1]:- если
perm_mask[k, i, j] = 0, то i обращается к j в батче k; - если
perm_mask[k, i, j] = 1, то i не обращается к j в батче k.
Если не задано, каждый токен обращается ко всем остальным (полное двунаправленное внимание). Используется только во время предварительного обучения (для определения порядка факторизации) или при последовательном декодировании (генерация).
- если
- target_mapping (
torch.Tensorформы(batch_size, num_predict, sequence_length), необязательный) — Маска, указывающая, какие выходные токены использовать. Еслиtarget_mapping[k, i, j] = 1, то i-й прогноз в батче k соответствует j-му токену. Используется только во время предварительного обучения для частичного прогнозирования или последовательного декодирования (генерации). - token_type_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- input_mask (
torch.Tensorс формойbatch_size, sequence_length, , необязательный) — Маска для предотвращения применения внимания к индексам токенов отступов. Отрицательное значениеattention_mask, то есть 0 для реальных токенов и 1 для отступов, что сохранено для совместимости с исходной кодовой базой.Значения маски, выбранные в диапазоне
[0, 1]:- 1 для токенов, которые замаскированы,
- 0 для токенов, которые не замаскированы.
Можно использовать только один из
input_maskиattention_mask. - 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, вычисляется функция потерь классификации (кросс-энтропия). - use_mems (
bool, необязательный) — Указывает, следует ли использовать состояния памяти для ускорения последовательного декодирования. Если установлено значениеTrue, модель будет использовать скрытые состояния из предыдущих проходов для вычисления внимания, что может значительно повысить производительность при задачах последовательного декодирования. - output_attentions (
bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описанииattentionsв разделе возвращаемых тензоров. - output_hidden_states (
bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описанииhidden_statesсреди возвращаемых тензоров. - return_dict (
bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.
Возвращает
XLNetForSequenceClassificationOutput или tuple(torch.Tensor)
Объект XLNetForSequenceClassificationOutput или кортеж
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (XLNetConfig) и входных данных.
Метод forward класса XLNetForSequenceClassification переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
torch.Tensorформы(1,), необязательный, возвращается, если заданlabel) — Потери классификации (или регрессии, если config.num_labels==1).logits (
torch.Tensorформы(batch_size, config.num_labels)) — Оценки для классификации (или регрессии, если config.num_labels==1) до применения SoftMax.mems (
list[torch.Tensor]длинойconfig.n_layers) — содержит предварительно вычисленные скрытые состояния. Может использоваться (см. входmems) для ускорения последовательного декодирования. Идентификаторы токенов, для которых прошлые состояния переданы в эту модель, не следует передавать какinput_ids, поскольку они уже были вычислены.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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Пример классификации с одной меткой:
>>> import torch
>>> from transformers import AutoTokenizer, XLNetForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("xlnet/xlnet-large-cased")
>>> model = XLNetForSequenceClassification.from_pretrained("xlnet/xlnet-large-cased")
>>> 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 = XLNetForSequenceClassification.from_pretrained("xlnet/xlnet-large-cased", num_labels=num_labels)
>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...Пример многоклассовой классификации:
>>> import torch
>>> from transformers import AutoTokenizer, XLNetForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("xlnet/xlnet-large-cased")
>>> model = XLNetForSequenceClassification.from_pretrained("xlnet/xlnet-large-cased", 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 = XLNetForSequenceClassification.from_pretrained(
... "xlnet/xlnet-large-cased", 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).lossXLNetForMultipleChoice
класс transformers.XLNetForMultipleChoice
< source >( config: XLNetConfig )
Параметры
- config (XLNetConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель Xlnet с головой для классификации с множественным выбором (линейный слой поверх пуллинг-выхода и softmax), например, для задач RocStories/SWAG.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinput_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonemems: typing.Optional[torch.Tensor] = Noneperm_mask: typing.Optional[torch.Tensor] = Nonetarget_mapping: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneuse_mems: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → XLNetForMultipleChoiceOutput or tuple(torch.Tensor)
Параметры
- input_ids (
torch.LongTensorформы(batch_size, num_choices, sequence_length)) — Индексы токенов входной последовательности в словаре.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- token_type_ids (
torch.LongTensorформы(batch_size, num_choices, sequence_length), необязательный) — Индексы сегментов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- input_mask (
torch.Tensorформыbatch_size, num_choices, sequence_length, необязательный) — Маска для предотвращения применения внимания к индексам токенов отступов. Отрицательное значениеattention_mask, то есть 0 для реальных токенов и 1 для отступов, что сохранено для совместимости с исходной кодовой базой.Значения маски, выбранные в диапазоне
[0, 1]:- 1 для токенов, которые замаскированы,
- 0 для токенов, которые не замаскированы.
Можно использовать только один из
input_maskиattention_mask. - attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- mems (
list[torch.Tensor]длинойconfig.n_layers) — Содержит предварительно вычисленные скрытые состояния (см.memsв выводе ниже). Можно использовать для ускорения последовательного декодирования. Токены, для которых уже предоставлены прошлые состояния, не следует передавать в качествеinput_ids, так как они уже были обработаны.use_memsдолжно быть установлено вTrue, чтобы использоватьmems. - perm_mask (
torch.Tensorформы(batch_size, sequence_length, sequence_length), необязательный) — Маска, указывающая шаблон внимания для каждого входного токена со значениями из диапазона[0, 1]:- если
perm_mask[k, i, j] = 0, то i обращается к j в батче k; - если
perm_mask[k, i, j] = 1, то i не обращается к j в батче k.
Если не задано, каждый токен обращается ко всем остальным (полное двунаправленное внимание). Используется только во время предварительного обучения (для определения порядка факторизации) или при последовательном декодировании (генерация).
- если
- target_mapping (
torch.Tensorформы(batch_size, num_predict, sequence_length), необязательный) — Маска, указывающая, какие выходные токены использовать. Еслиtarget_mapping[k, i, j] = 1, то i-й прогноз в батче k соответствует j-му токену. Используется только во время предварительного обучения для частичного прогнозирования или последовательного декодирования (генерации). - inputs_embeds (
torch.Tensorформы(batch_size, num_choices, sequence_length, hidden_size), необязательный) — При необходимости вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем позволяет внутренняя матрица поиска встраиваний модели. - labels (
torch.LongTensorформы(batch_size,), необязательный) — Метки для вычисления функции потерь классификации с множественным выбором. Индексы должны находиться в диапазоне `[0, …, - use_mems (
bool, необязательный) — Указывает, следует ли использовать состояния памяти для ускорения последовательного декодирования. Если установлено значениеTrue, модель будет использовать скрытые состояния из предыдущих проходов для вычисления внимания, что может значительно повысить производительность при задачах последовательного декодирования. - output_attentions (
bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описанииattentionsв разделе возвращаемых тензоров. - output_hidden_states (
bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описанииhidden_statesсреди возвращаемых тензоров. - return_dict (
bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.
Возвращает
XLNetForMultipleChoiceOutput или tuple(torch.Tensor)
Объект XLNetForMultipleChoiceOutput или кортеж
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (XLNetConfig) и входных данных.
Метод forward класса XLNetForMultipleChoice переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
torch.Tensorформы (1,), необязательный, возвращается, если заданlabels) — Потери классификации.logits (
torch.Tensorформы(batch_size, num_choices)) — num_choices — это второе измерение входных тензоров (см. input_ids выше).Оценки классификации (до SoftMax).
mems (
list[torch.Tensor]длинойconfig.n_layers) — содержит предварительно вычисленные скрытые состояния. Может использоваться (см. входmems) для ускорения последовательного декодирования. Идентификаторы токенов, для которых прошлые состояния переданы в эту модель, не следует передавать какinput_ids, поскольку они уже были вычислены.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, XLNetForMultipleChoice
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("xlnet/xlnet-large-cased")
>>> model = XLNetForMultipleChoice.from_pretrained("xlnet/xlnet-large-cased")
>>> 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.logitsXLNetForTokenClassification
класс transformers.XLNetForTokenClassification
< source >( config: XLNetConfig )
Параметры
- config (XLNetConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Трансформер Xlnet с головой для классификации токенов (линейный слой поверх выходных скрытых состояний), например, для задач распознавания именованных сущностей (NER).
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonemems: typing.Optional[torch.Tensor] = Noneperm_mask: typing.Optional[torch.Tensor] = Nonetarget_mapping: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinput_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneuse_mems: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → XLNetForTokenClassificationOutput 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 для токенов, которые замаскированы.
- mems (
list[torch.Tensor]длинойconfig.n_layers) — Содержит предварительно вычисленные скрытые состояния (см.memsв выводе ниже). Можно использовать для ускорения последовательного декодирования. Токены, для которых уже предоставлены прошлые состояния, не следует передавать в качествеinput_ids, так как они уже были обработаны.use_memsдолжно быть установлено вTrue, чтобы использоватьmems. - perm_mask (
torch.Tensorформы(batch_size, sequence_length, sequence_length), необязательный) — Маска, указывающая шаблон внимания для каждого входного токена со значениями из диапазона[0, 1]:- если
perm_mask[k, i, j] = 0, то i обращается к j в батче k; - если
perm_mask[k, i, j] = 1, то i не обращается к j в батче k.
Если не задано, каждый токен обращается ко всем остальным (полное двунаправленное внимание). Используется только во время предварительного обучения (для определения порядка факторизации) или при последовательном декодировании (генерация).
- если
- target_mapping (
torch.Tensorформы(batch_size, num_predict, sequence_length), необязательный) — Маска, указывающая, какие выходные токены использовать. Еслиtarget_mapping[k, i, j] = 1, то i-й прогноз в батче k соответствует j-му токену. Используется только во время предварительного обучения для частичного прогнозирования или последовательного декодирования (генерации). - token_type_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- input_mask (
torch.Tensorс формойbatch_size, sequence_length, , необязательный) — Маска для предотвращения применения внимания к индексам токенов отступов. Отрицательное значениеattention_mask, то есть 0 для реальных токенов и 1 для отступов, что сохранено для совместимости с исходной кодовой базой.Значения маски, выбранные в диапазоне
[0, 1]:- 1 для токенов, которые замаскированы,
- 0 для токенов, которые не замаскированы.
Можно использовать только один из
input_maskиattention_mask. - inputs_embeds (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. - labels (
torch.LongTensorформы(batch_size,), необязательный) — Метки для вычисления функции потерь классификации с множественным выбором. Индексы должны находиться в диапазоне[0, ..., num_choices], где num_choices — размер второй размерности входных тензоров (см. input_ids выше). - use_mems (
bool, необязательный) — Использовать ли состояния памяти для ускорения последовательного декодирования. Если установлено вTrue, модель будет использовать скрытые состояния из предыдущих проходов для вычисления внимания, что может значительно повысить производительность при последовательном декодировании. Состояния памяти для ускорения последовательного декодирования. Если установлено вTrue, модель будет использовать скрытые состояния из предыдущих проходов для вычисления внимания, что может значительно повысить производительность при последовательном декодировании. - output_attentions (
bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описанииattentionsв разделе возвращаемых тензоров. - output_hidden_states (
bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описанииhidden_statesсреди возвращаемых тензоров. - return_dict (
bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.
Возвращает
XLNetForTokenClassificationOutput или tuple(torch.Tensor)
Объект XLNetForTokenClassificationOutput или кортеж
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (XLNetConfig) и входных данных.
Метод forward класса XLNetForTokenClassification переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
torch.Tensorформы(1,), необязательный, возвращается, если заданlabels) — Потери классификации.logits (
torch.Tensorформы(batch_size, sequence_length, config.num_labels)) — Оценки классификации (до SoftMax).mems (
list[torch.Tensor]длинойconfig.n_layers) — содержит предварительно вычисленные скрытые состояния. Может использоваться (см. входmems) для ускорения последовательного декодирования. Идентификаторы токенов, для которых прошлые состояния переданы в эту модель, не следует передавать какinput_ids, поскольку они уже были вычислены.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, XLNetForTokenClassification
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("xlnet/xlnet-large-cased")
>>> model = XLNetForTokenClassification.from_pretrained("xlnet/xlnet-large-cased")
>>> 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)
...XLNetForQuestionAnsweringSimple
класс transformers.XLNetForQuestionAnsweringSimple
< source >( config: XLNetConfig )
Параметры
- config (XLNetConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель XLNet с головой для классификации пропусков, предназначенной для задач извлекающего ответа на вопросы, таких как 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] = Nonemems: typing.Optional[torch.Tensor] = Noneperm_mask: typing.Optional[torch.Tensor] = Nonetarget_mapping: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinput_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonestart_positions: typing.Optional[torch.Tensor] = Noneend_positions: typing.Optional[torch.Tensor] = Noneuse_mems: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → XLNetForQuestionAnsweringSimpleOutput 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 для токенов, которые замаскированы.
- mems (
list[torch.Tensor]длинойconfig.n_layers) — Содержит предварительно вычисленные скрытые состояния (см.memsв выводе ниже). Можно использовать для ускорения последовательного декодирования. Токены, для которых уже предоставлены прошлые состояния, не следует передавать в качествеinput_ids, так как они уже были обработаны.use_memsдолжно быть установлено вTrue, чтобы использоватьmems. - perm_mask (
torch.Tensorформы(batch_size, sequence_length, sequence_length), необязательный) — Маска, указывающая шаблон внимания для каждого входного токена со значениями из диапазона[0, 1]:- если
perm_mask[k, i, j] = 0, то i обращается к j в батче k; - если
perm_mask[k, i, j] = 1, то i не обращается к j в батче k.
Если не задано, каждый токен обращается ко всем остальным (полное двунаправленное внимание). Используется только во время предварительного обучения (для определения порядка факторизации) или при последовательном декодировании (генерация).
- если
- target_mapping (
torch.Tensorформы(batch_size, num_predict, sequence_length), необязательный) — Маска, указывающая, какие выходные токены использовать. Еслиtarget_mapping[k, i, j] = 1, то i-й прогноз в батче k соответствует j-му токену. Используется только во время предварительного обучения для частичного прогнозирования или последовательного декодирования (генерации). - token_type_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- input_mask (
torch.Tensorс формойbatch_size, sequence_length, , необязательный) — Маска для предотвращения применения внимания к индексам токенов отступов. Отрицательное значениеattention_mask, то есть 0 для реальных токенов и 1 для отступов, что сохранено для совместимости с исходной кодовой базой.Значения маски, выбранные в диапазоне
[0, 1]:- 1 для токенов, которые замаскированы,
- 0 для токенов, которые не замаскированы.
Можно использовать только один из
input_maskиattention_mask. - 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). Позиции, выходящие за пределы последовательности, не учитываются при вычислении функции потерь. - use_mems (
bool, необязательный) — Указывает, следует ли использовать состояния памяти для ускорения последовательного декодирования. Если установлено значениеTrue, модель будет использовать скрытые состояния из предыдущих проходов для вычисления внимания, что может значительно повысить производительность при задачах последовательного декодирования. - output_attentions (
bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описанииattentionsв разделе возвращаемых тензоров. - output_hidden_states (
bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описанииhidden_statesсреди возвращаемых тензоров. - return_dict (
bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.
Возвращает
XLNetForQuestionAnsweringSimpleOutput или tuple(torch.Tensor)
Объект XLNetForQuestionAnsweringSimpleOutput или кортеж
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (XLNetConfig) и входных данных.
Метод forward класса XLNetForQuestionAnsweringSimple переопределяет специальный метод __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).mems (
list[torch.Tensor]длинойconfig.n_layers) — содержит предварительно вычисленные скрытые состояния. Может использоваться (см. входmems) для ускорения последовательного декодирования. Идентификаторы токенов, для которых прошлые состояния переданы в эту модель, не следует передавать какinput_ids, поскольку они уже были вычислены.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, XLNetForQuestionAnsweringSimple
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("xlnet/xlnet-large-cased")
>>> model = XLNetForQuestionAnsweringSimple.from_pretrained("xlnet/xlnet-large-cased")
>>> 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)
...XLNetForQuestionAnswering
класс transformers.XLNetForQuestionAnswering
< source >( config: XLNetConfig )
Параметры
- config (XLNetConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Трансформер Xlnet с головой для классификации пропусков, предназначенной для задач извлекающего ответа на вопросы, таких как 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] = Nonemems: typing.Optional[torch.Tensor] = Noneperm_mask: typing.Optional[torch.Tensor] = Nonetarget_mapping: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinput_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonestart_positions: typing.Optional[torch.Tensor] = Noneend_positions: typing.Optional[torch.Tensor] = Noneis_impossible: typing.Optional[torch.Tensor] = Nonecls_index: typing.Optional[torch.Tensor] = Nonep_mask: typing.Optional[torch.Tensor] = Noneuse_mems: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → XLNetForQuestionAnsweringOutput 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 для токенов, которые замаскированы.
- mems (
list[torch.Tensor]длинойconfig.n_layers) — Содержит предварительно вычисленные скрытые состояния (см.memsв выводе ниже). Можно использовать для ускорения последовательного декодирования. Токены, для которых уже предоставлены прошлые состояния, не следует передавать в качествеinput_ids, так как они уже были обработаны.use_memsдолжно быть установлено вTrue, чтобы использоватьmems. - perm_mask (
torch.Tensorформы(batch_size, sequence_length, sequence_length), необязательный) — Маска, указывающая шаблон внимания для каждого входного токена со значениями из диапазона[0, 1]:- если
perm_mask[k, i, j] = 0, то i обращается к j в батче k; - если
perm_mask[k, i, j] = 1, то i не обращается к j в батче k.
Если не задано, каждый токен обращается ко всем остальным (полное двунаправленное внимание). Используется только во время предварительного обучения (для определения порядка факторизации) или при последовательном декодировании (генерация).
- если
- target_mapping (
torch.Tensorформы(batch_size, num_predict, sequence_length), необязательный) — Маска, указывающая, какие выходные токены использовать. Еслиtarget_mapping[k, i, j] = 1, то i-й прогноз в батче k соответствует j-му токену. Используется только во время предварительного обучения для частичного прогнозирования или последовательного декодирования (генерации). - token_type_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- input_mask (
torch.Tensorс формойbatch_size, sequence_length, , необязательный) — Маска для предотвращения применения внимания к индексам токенов отступов. Отрицательное значениеattention_mask, то есть 0 для реальных токенов и 1 для отступов, что сохранено для совместимости с исходной кодовой базой.Значения маски, выбранные в диапазоне
[0, 1]:- 1 для токенов, которые замаскированы,
- 0 для токенов, которые не замаскированы.
Можно использовать только один из
input_maskиattention_mask. - 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). Позиции, выходящие за пределы последовательности, не учитываются при вычислении функции потерь. - is_impossible (
torch.LongTensorформы(batch_size,), необязательный) — Метки, указывающие, есть ли у вопроса ответ или нет (SQuAD 2.0) - cls_index (
torch.LongTensorформы(batch_size,), необязательный) — Метки для позиции (индекса) токена классификации, используемого в качестве входа для вычисления правдоподобия ответа. - p_mask (
torch.Tensorформы(batch_size, sequence_length), необязательный) — Необязательная маска токенов, которые не могут входить в ответ (например, [CLS], [PAD], …). Значение 1.0 означает, что токен должен быть замаскирован. Значение 0.0 означает, что токен не замаскирован. - use_mems (
bool, необязательный) — Указывает, следует ли использовать состояния памяти для ускорения последовательного декодирования. Если установлено значениеTrue, модель будет использовать скрытые состояния из предыдущих проходов для вычисления внимания, что может значительно повысить производительность при задачах последовательного декодирования. - output_attentions (
bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описанииattentionsв разделе возвращаемых тензоров. - output_hidden_states (
bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описанииhidden_statesсреди возвращаемых тензоров. - return_dict (
bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.
Возвращает
XLNetForQuestionAnsweringOutput или tuple(torch.Tensor)
Объект XLNetForQuestionAnsweringOutput или кортеж из
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (XLNetConfig) и входных данных.
Метод forward класса XLNetForQuestionAnswering переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
torch.Tensorформы(1,), необязательный, возвращается, если заданы иstart_positions, иend_positions) — Потери классификации, представленные как сумма потерь классификации начального токена, конечного токена (а также is_impossible, если он задан).start_top_log_probs (
torch.Tensorформы(batch_size, config.start_n_top), необязательный, возвращается, еслиstart_positionsилиend_positionsне указаны) — Логарифмические вероятности для config.start_n_top наиболее вероятных стартовых токенов (поиск по лучам).start_top_index (
torch.LongTensorформы(batch_size, config.start_n_top), необязательный, возвращается, еслиstart_positionsилиend_positionsне заданы) — Индексы для config.start_n_top наиболее вероятных вариантов стартового токена (поиск по лучам).end_top_log_probs (
torch.Tensorформы(batch_size, config.start_n_top * config.end_n_top), необязательный, возвращается, еслиstart_positionsилиend_positionsне указаны) — логарифмические вероятности дляconfig.start_n_top * config.end_n_topнаиболее вероятных вариантов конечного токена (beam-search).end_top_index (
torch.LongTensorформы(batch_size, config.start_n_top * config.end_n_top), необязательный, возвращается, еслиstart_positionsилиend_positionsне переданы) — Индексы для топ-config.start_n_top * config.end_n_topвариантов конечных токенов (beam-search).cls_logits (
torch.Tensorформы(batch_size,), необязательный, возвращается, еслиstart_positionsилиend_positionsне указаны) — логарифмические вероятности для меткиis_impossibleответов.mems (
list[torch.Tensor]длинойconfig.n_layers) — содержит предварительно вычисленные скрытые состояния. Может использоваться (см. входmems) для ускорения последовательного декодирования. Идентификаторы токенов, для которых прошлые состояния переданы в эту модель, не следует передавать какinput_ids, поскольку они уже были вычислены.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, XLNetForQuestionAnswering
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("xlnet/xlnet-base-cased")
>>> model = XLNetForQuestionAnswering.from_pretrained("xlnet/xlnet-base-cased")
>>> input_ids = torch.tensor(tokenizer.encode("Hello, my dog is cute", add_special_tokens=True)).unsqueeze(
... 0
... ) # Batch size 1
>>> start_positions = torch.tensor([1])
>>> end_positions = torch.tensor([3])
>>> outputs = model(input_ids, start_positions=start_positions, end_positions=end_positions)
>>> loss = outputs.loss