Transformers documentation
Splinter
Эта модель была опубликована в HF papers 02.01.2021 и добавлена в Hugging Face Transformers 17.08.2021.
Splinter
Обзор
Модель Splinter была предложена в работе Few-Shot Question Answering by Pretraining Span Selection авторов Ori Ram, Yuval Kirstain, Jonathan Berant, Amir Globerson, Omer Levy. Splinter — это трансформер только с энкодером (похожий на BERT), предварительно обученный на задаче повторяющегося выбора фрагментов (span selection) на большом корпусе, включающем Wikipedia и Toronto Book Corpus.
Аннотация из статьи следующая:
На нескольких бенчмарках по ответам на вопросы предобученные модели достигли уровня, сопоставимого с человеком, благодаря дообучению на порядка 100 000 размеченных вопросов и ответов. Мы рассматриваем более реалистичный сценарий few-shot, в котором доступно лишь несколько сотен обучающих примеров, и наблюдаем, что стандартные модели показывают низкие результаты, что подчеркивает расхождение между текущими целями предобучения и задачей ответов на вопросы. Мы предлагаем новую схему предобучения, адаптированную для ответов на вопросы: повторяющийся выбор фрагментов (recurring span selection). Дано отрывок текста с несколькими наборами повторяющихся фрагментов; в каждом наборе мы маскируем все повторяющиеся фрагменты, кроме одного, и просим модель выбрать правильный фрагмент в отрывке для каждого замаскированного. Замаскированные фрагменты заменяются специальным токеном, который рассматривается как представление вопроса и впоследствии используется при дообучении для выбора фрагмента-ответа. Полученная модель демонстрирует неожиданно хорошие результаты на нескольких бенчмарках (например, F1 72.7 на SQuAD всего с 128 обучающими примерами), сохраняя при этом конкурентоспособную производительность в условиях с большим объемом данных.
Эта модель была предоставлена yuvalkirstain и oriram. Исходный код можно найти здесь.
Советы по использованию
- Модель Splinter обучалась предсказывать фрагменты текста с ответами, используя специальный токен [QUESTION]. Эти токены формируют контекст для представлений вопроса, которые затем используются для предсказания ответов. Этот слой называется QASS и является поведением по умолчанию в классе SplinterForQuestionAnswering. Таким образом:
- Используйте SplinterTokenizer (вместо BertTokenizer), так как он уже содержит этот специальный токен. Кроме того, по умолчанию он использует этот токен, когда заданы две последовательности.
- Обратите внимание на токен вопроса — он может быть критически важен для успеха вашей модели, особенно в few-shot режиме.
- Обратите внимание, что для каждого размера Splinter существует два разных контрольных пункта. По сути, они идентичны, за исключением того, что в одном из них также присутствуют предобученные веса слоя QASS (tau/splinter-base-qass и tau/splinter-large-qass), а в другом — нет (tau/splinter-base и tau/splinter-large). Это сделано для поддержки случайной инициализации данного слоя при дообучении, что, как показано в статье, даёт лучшие результаты в некоторых случаях.
Ресурсы
SplinterConfig
класс transformers.SplinterConfig
< 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 = 30522hidden_size: int = 768num_hidden_layers: int = 12num_attention_heads: int = 12intermediate_size: int = 3072hidden_act: str = 'gelu'hidden_dropout_prob: float | int = 0.1attention_probs_dropout_prob: float | int = 0.1max_position_embeddings: int = 512type_vocab_size: int = 2initializer_range: float = 0.02layer_norm_eps: float = 1e-12pad_token_id: int | None = 0bos_token_id: int | None = Noneeos_token_id: int | list[int] | None = Nonequestion_token_id: int = 104 )
Параметры
- vocab_size (
int, необязательный, по умолчанию30522) — Размер словаря модели. Определяет количество различных токенов, которые могут быть представлены вinput_ids. - hidden_size (
int, необязательный, по умолчанию768) — Размерность скрытых представлений. - num_hidden_layers (
int, необязательный, по умолчанию12) — Количество скрытых слоев в декодере Transformer. - num_attention_heads (
int, необязательный, по умолчанию12) — Количество головок внимания в каждом слое внимания декодера Transformer. - intermediate_size (
int, необязательный, по умолчанию3072) — Размерность представлений MLP. - hidden_act (
str, необязательный, по умолчаниюgelu) — Нелинейная функция активации (функция или строка) в декодере. Например,"gelu","relu","silu"и т. д. - hidden_dropout_prob (
Union[float, int], необязательный, по умолчанию0.1) — Вероятность dropout для всех полносвязных слоёв в блоках эмбеддингов, энкодера и пулера. - attention_probs_dropout_prob (
Union[float, int], необязательный, по умолчанию0.1) — Коэффициент dropout для вероятностей внимания. - max_position_embeddings (
int, необязательный, по умолчанию512) — Максимальная длина последовательности, с которой может использоваться эта модель. - type_vocab_size (
int, необязательный, по умолчанию2) — Размер словаря дляtoken_type_ids. - initializer_range (
float, необязательный, по умолчанию0.02) — Стандартное отклонение truncated_normal_initializer, используемое для инициализации всех матриц весов. - layer_norm_eps (
float, необязательный, по умолчанию1e-12) — Значение epsilon, используемое слоями нормализации. - pad_token_id (
int, необязательный, по умолчанию0) — Идентификатор токена, используемого для дополнения (padding) в словаре. - bos_token_id (
int, необязательный) — Идентификатор токена, используемого для обозначения начала потока в словаре. - eos_token_id (
Union[int, list[int]], необязательный) — Идентификатор токена, используемого для обозначения конца потока в словаре. - question_token_id (
int, необязательный, по умолчанию 104) — Идентификатор токена[QUESTION].
Это класс конфигурации для хранения настроек модели SplinterModel. Он используется для создания модели Splinter в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации tau/splinter-base
Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.
Пример:
>>> from transformers import SplinterModel, SplinterConfig
>>> # Initializing a Splinter tau/splinter-base style configuration
>>> configuration = SplinterConfig()
>>> # Initializing a model from the tau/splinter-base style configuration
>>> model = SplinterModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configSplinterTokenizer
класс transformers.SplinterTokenizer
< source >( vocab: str | dict[str, int] | None = Nonedo_lower_case: bool = Trueunk_token: str = '[UNK]'sep_token: str = '[SEP]'pad_token: str = '[PAD]'cls_token: str = '[CLS]'mask_token: str = '[MASK]'question_token: str = '[QUESTION]'tokenize_chinese_chars: bool = Truestrip_accents: bool | None = None**kwargs )
Параметры
- vocab_file (
str, необязательный) — Путь к файлу словаря. - tokenizer_file (
str, необязательный) — Путь к JSON-файлу tokenizers, содержащему сериализацию токенизатора. - do_lower_case (
bool, необязательный, по умолчаниюTrue) — Определяет, нужно ли приводить входные данные к нижнему регистру при токенизации. - unk_token (
str, необязательный, по умолчанию"[UNK]") — Токен неизвестного слова. Токен, отсутствующий в словаре, не может быть преобразован в ID, поэтому вместо него используется этот токен. - sep_token (
str, необязательный, по умолчанию"[SEP]") — Токен-разделитель, используемый при построении последовательности из нескольких последовательностей. - pad_token (
str, необязательный, по умолчанию"[PAD]") — Токен, используемый для выравнивания, например, при пакетной обработке последовательностей разной длины. - cls_token (
str, необязательный, по умолчанию"[CLS]") — Токен классификатора, используемый при классификации последовательностей. - mask_token (
str, необязательный, по умолчанию"[MASK]") — Токен, используемый для маскирования значений. - question_token (
str, необязательный, по умолчанию"[QUESTION]") — Токен, используемый для построения представлений вопросов. - tokenize_chinese_chars (
bool, необязательный, по умолчаниюTrue) — Указывает, следует ли токенизировать китайские иероглифы. - strip_accents (
bool, необязательный) — Удалять или нет все диакритические знаки. Если этот параметр не указан, его значение определяется по значению параметраlowercase. - vocab (
str,dictилиlist, необязательный) — Пользовательский словарь. Если не указан, создается минимальный словарь.
Создайте токенизатор Splinter (на базе библиотеки tokenizers от HuggingFace). Основан на WordPiece.
Этот токенизатор наследуется от TokenizersBackend, который содержит большинство основных методов. За дополнительной информацией об этих методах следует обращаться к этому суперклассу.
get_special_tokens_mask
< source >( token_ids_0: list[int]token_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
Параметры
- token_ids_0 — список идентификаторов для (возможно, уже отформатированной) последовательности.
- token_ids_1 — Не используется, если
already_has_special_tokens=True. В этом случае должно быть None. - already_has_special_tokens — Указывает, содержит ли последовательность уже отформатированные специальные токены.
Возвращает
Список целых чисел в диапазоне [0, 1]
1 для специального токена, 0 для токена последовательности.
Получить идентификаторы последовательностей из списка токенов, в который не добавлены специальные токены.
Для быстрых токенизаторов коллабораторы данных вызывают этот метод с already_has_special_tokens=True, чтобы построить маску для уже отформатированной последовательности. В этом случае мы вычисляем маску, проверяя принадлежность элементов к all_special_ids.
SplinterModel
класс transformers.SplinterModel
< source >( config: SplinterConfig )
Параметры
- config (SplinterConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель Splinter без дополнительных слоёв, выводящая «сырые» скрытые состояния.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutput or tuple(torch.FloatTensor)
Параметры
- input_ids (
torch.Tensorформы(batch_size, sequence_length), необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию padding игнорируется.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- token_type_ids (
torch.LongTensorформыbatch_size, sequence_length, , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- position_ids (
torch.LongTensorформыbatch_size, sequence_length, , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбранные в диапазоне[0, config.max_position_embeddings - 1]. - inputs_embeds (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.
Возвращает
BaseModelOutput или tuple(torch.FloatTensor)
Объект BaseModelOutput или кортеж из
torch.FloatTensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (SplinterConfig) и входных данных.
Метод forward класса SplinterModel переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
last_hidden_state (
torch.FloatTensorформы(batch_size, sequence_length, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя модели.hidden_states (
tuple(torch.FloatTensor), необязательный, возвращается, если переданоoutput_hidden_states=Trueили еслиconfig.output_hidden_states=True) — кортеж изtorch.FloatTensor(один для вывода слоя встраиваний, если модель имеет такой слой, + один для вывода каждого слоя) формы(batch_size, sequence_length, hidden_size).Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
attentions (
tuple(torch.FloatTensor), необязательный, возвращается, если переданоoutput_attentions=Trueили еслиconfig.output_attentions=True) — Кортежtorch.FloatTensor(по одному для каждого слоя) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
SplinterForQuestionAnswering
класс transformers.SplinterForQuestionAnswering
< source >( config: SplinterConfig )
Параметры
- config (SplinterConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Трансформер Splinter с головой классификации пропусков (span classification head) сверху для задач извлекающего вопросно-ответного типа, таких как SQuAD (линейный слой поверх выходных скрытых состояний для вычисления span start logits и span end logits).
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonestart_positions: typing.Optional[torch.LongTensor] = Noneend_positions: typing.Optional[torch.LongTensor] = Nonequestion_positions: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → QuestionAnsweringModelOutput or tuple(torch.FloatTensor)
Параметры
- input_ids (
torch.Tensorформы(batch_size, sequence_length), необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию padding игнорируется.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- token_type_ids (
torch.LongTensorформыbatch_size, sequence_length, , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- position_ids (
torch.LongTensorформыbatch_size, sequence_length, , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбранные в диапазоне[0, config.max_position_embeddings - 1]. - inputs_embeds (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. - start_positions (
torch.LongTensorформы(batch_size,), необязательный) — Метки для позиции (индекса) начала размеченного фрагмента, используемые для вычисления функции потерь классификации токенов. Позиции ограничиваются длиной последовательности (sequence_length). Позиции, выходящие за пределы последовательности, не учитываются при вычислении функции потерь. - end_positions (
torch.LongTensorформы(batch_size,), необязательный) — Метки для позиции (индекса) конца размеченного фрагмента, используемые для вычисления функции потерь классификации токенов. Позиции ограничиваются длиной последовательности (sequence_length). Позиции, выходящие за пределы последовательности, не учитываются при вычислении функции потерь. - question_positions (
torch.LongTensorформы(batch_size, num_questions), необязательный) — Позиции всех токенов вопросов. Если указано, start_logits и end_logits будут иметь форму(batch_size, num_questions, sequence_length). Если равно None, start_logits и end_logits будут рассчитаны только для первого токена вопроса в каждой последовательности батча и будут иметь форму(batch_size, sequence_length).
Возвращает
QuestionAnsweringModelOutput или tuple(torch.FloatTensor)
Объект QuestionAnsweringModelOutput или кортеж
torch.FloatTensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (SplinterConfig) и входных данных.
Метод forward класса SplinterForQuestionAnswering переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
torch.FloatTensorформы(1,), необязательный, возвращается, если заданlabels) — Суммарная функция потерь для извлечения пролёгов представляет собой сумму кросс-энтропии для начальной и конечной позиций.start_logits (
torch.FloatTensorформы(batch_size, sequence_length)) — Оценки начала спана (до SoftMax).end_logits (
torch.FloatTensorформы(batch_size, sequence_length)) — Оценки конца спана (до SoftMax).hidden_states (
tuple(torch.FloatTensor), необязательный, возвращается, если переданоoutput_hidden_states=Trueили еслиconfig.output_hidden_states=True) — кортеж изtorch.FloatTensor(один для вывода слоя встраиваний, если модель имеет такой слой, + один для вывода каждого слоя) формы(batch_size, sequence_length, hidden_size).Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
attentions (
tuple(torch.FloatTensor), необязательный, возвращается, если переданоoutput_attentions=Trueили еслиconfig.output_attentions=True) — Кортежtorch.FloatTensor(по одному для каждого слоя) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Пример:
>>> from transformers import AutoTokenizer, SplinterForQuestionAnswering
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("tau/splinter-base")
>>> model = SplinterForQuestionAnswering.from_pretrained("tau/splinter-base")
>>> 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)
...SplinterForPreTraining
класс transformers.SplinterForPreTraining
< source >( config: SplinterConfig )
Параметры
- config (SplinterConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель Splinter для задачи выбора повторяющихся фрагментов, выполняемой на этапе предварительного обучения. Отличие от задачи QA заключается в том, что у нас нет вопроса, а вместо этого используются несколько токенов-вопросов, заменяющих вхождения повторяющихся фрагментов.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonestart_positions: typing.Optional[torch.LongTensor] = Noneend_positions: typing.Optional[torch.LongTensor] = Nonequestion_positions: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SplinterForPreTrainingOutput or tuple(torch.FloatTensor)
Параметры
- input_ids (
torch.LongTensorформы(batch_size, num_questions, sequence_length)) — Индексы токенов входной последовательности в словаре.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- token_type_ids (
torch.LongTensorформыbatch_size, num_questions, sequence_length, необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- position_ids (
torch.LongTensorформыbatch_size, num_questions, sequence_length, , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбранные в диапазоне[0, config.max_position_embeddings - 1]. - inputs_embeds (
torch.FloatTensorформы(batch_size, num_questions, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем позволяет внутренняя матрица поиска встраиваний модели. - start_positions (
torch.LongTensorформы(batch_size, num_questions), необязательный) — Метки для позиции (индекса) начала размеченного фрагмента, используемые для вычисления функции потерь классификации токенов. Позиции ограничиваются длиной последовательности (sequence_length). Позиции, выходящие за пределы последовательности, не учитываются при вычислении функции потерь. - end_positions (
torch.LongTensorформы(batch_size, num_questions), необязательный) — Метки для позиции (индекса) конца размеченного фрагмента, используемые для вычисления потерь классификации токенов. Позиции ограничиваются длиной последовательности (sequence_length). Позиции, выходящие за пределы последовательности, не учитываются при вычислении потерь. - question_positions (
torch.LongTensorформы(batch_size, num_questions), необязательный) — Позиции всех токенов вопросов. Если указано, start_logits и end_logits будут иметь форму(batch_size, num_questions, sequence_length). Если равно None, start_logits и end_logits будут рассчитаны только для первого токена вопроса в каждой последовательности батча и будут иметь форму(batch_size, sequence_length).
Возвращает
SplinterForPreTrainingOutput или tuple(torch.FloatTensor)
Объект SplinterForPreTrainingOutput или кортеж из
torch.FloatTensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (SplinterConfig) и входных данных.
Метод forward класса SplinterForPreTraining переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
torch.FloatTensorформы(1,), необязательный, возвращается, если указаны начальные и конечные позиции) — Суммарная потеря извлечения пропусков представляет собой сумму потерь Cross-Entropy для начальных и конечных позиций.start_logits (
torch.FloatTensorформы(batch_size, num_questions, sequence_length)) — Оценки начала пропусков (до SoftMax).end_logits (
torch.FloatTensorформы(batch_size, num_questions, sequence_length)) — Оценки конца пропозитива (до SoftMax).hidden_states (
tuple[torch.FloatTensor], необязательный, возвращается, если переданоoutput_hidden_states=Trueили еслиconfig.output_hidden_states=True) — Кортежtorch.FloatTensor(один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы(batch_size, sequence_length, hidden_size).Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
attentions (
tuple[torch.FloatTensor], необязательный, возвращается при передачеoutput_attentions=Trueили когдаconfig.output_attentions=True) — Кортежtorch.FloatTensor(по одному для каждого слоя) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.