Transformers documentation
ELECTRA
Эта модель была опубликована в HF papers 23.03.2020 и добавлена в Hugging Face Transformers 16.11.2020.
ELECTRA
ELECTRA изменяет цель предобучения традиционных моделей маскированного языка, таких как BERT. Вместо того чтобы просто маскировать токены и просить модель предсказать их, ELECTRA обучает две модели: генератор и дискриминатор. Генератор заменяет некоторые токены на правдоподобные альтернативы, а дискриминатор (модель, которую вы будете использовать) учится определять, какие токены являются оригинальными, а какие были заменены. Такой подход к обучению очень эффективен и позволяет масштабироваться до более крупных моделей, значительно снижая вычислительные затраты.
Этот подход чрезвычайно эффективен, поскольку ELECTRA обучается на каждом токене во входных данных, а не только на замаскированных. Именно поэтому даже небольшие модели ELECTRA могут сопоставляться с гораздо более крупными моделями или превосходить их, используя значительно меньше вычислительных ресурсов.
Все исходные контрольные точки ELECTRA можно найти в релизе ELECTRA.
Щёлкните по правой боковой панели, чтобы увидеть дополнительные примеры использования ELECTRA для различных языковых задач, таких как классификация последовательностей, классификация токенов и ответы на вопросы.
Приведённый ниже пример показывает, как классифицировать текст с помощью Pipeline или класса AutoModel.
from transformers import pipeline
classifier = pipeline(
task="text-classification",
model="bhadresh-savani/electra-base-emotion",
device=0
)
classifier("This restaurant has amazing food!")import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained(
"bhadresh-savani/electra-base-emotion",
)
model = AutoModelForSequenceClassification.from_pretrained(
"bhadresh-savani/electra-base-emotion", device_map="auto",
)
inputs = tokenizer("ELECTRA is more efficient than BERT", return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs)
logits = outputs.logits
predicted_class_id = logits.argmax(dim=-1).item()
predicted_label = model.config.id2label[predicted_class_id]
print(f"Predicted label: {predicted_label}")Примечания
ELECTRA состоит из двух трансформерных моделей: генератора (G) и дискриминатора (D). Для большинства задач, решаемых на основе предобученной модели, используйте модель-дискриминатор (об этом свидетельствует наличие
*-discriminatorв её названии), а не генератор.ELECTRA выпускается в трёх размерах: small (14 млн параметров), base (110 млн параметров) и large (335 млн параметров).
ELECTRA может использовать размер эмбеддинга меньше, чем размер скрытого слоя, для повышения эффективности. Если
embedding_sizeменьше, чемhidden_sizeв конфигурации, между ними подключается проекционный слой.При использовании пакетных входных данных с заполнением убедитесь, что вы применяете маски внимания, чтобы модель не обращала внимание на токены заполнения.
# Example of properly handling padding with attention masks inputs = tokenizer(["Short text", "This is a much longer text that needs padding"], padding=True, return_tensors="pt") outputs = model(**inputs) # automatically uses the attention_maskПри использовании дискриминатора для задачи нижнего уровня его можно загрузить в любой из классов моделей ELECTRA (ElectraForSequenceClassification, ElectraForTokenClassification и т. д.).
ElectraConfig
класс transformers.ElectraConfig
< 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 = 30522embedding_size: int = 128hidden_size: int = 256num_hidden_layers: int = 12num_attention_heads: int = 4intermediate_size: int = 1024hidden_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-12summary_type: str = 'first'summary_use_proj: bool = Truesummary_activation: str = 'gelu'summary_last_dropout: float | int = 0.1pad_token_id: int | None = 0use_cache: bool = Trueclassifier_dropout: float | int | None = Noneis_decoder: bool = Falseadd_cross_attention: bool = Falsebos_token_id: int | None = Noneeos_token_id: int | list[int] | None = Nonetie_word_embeddings: bool = True )
Параметры
- vocab_size (
int, необязательный, по умолчанию30522) — Размер словаря модели. Определяет количество различных токенов, которые могут быть представлены вinput_ids. - embedding_size (
int, необязательный, по умолчанию128) — Размерность эмбеддингов и скрытых состояний. - hidden_size (
int, необязательный, по умолчанию256) — Размерность скрытых представлений. - num_hidden_layers (
int, необязательный, по умолчанию12) — Количество скрытых слоев в декодере Transformer. - num_attention_heads (
int, необязательный, по умолчанию4) — Количество головок внимания в каждом слое внимания декодера Transformer. - intermediate_size (
int, необязательный, по умолчанию1024) — Размерность представлений 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, используемое слоями нормализации. - summary_type (
str, необязательный, по умолчанию"first") — Аргумент, используемый при суммаризации последовательности. Применяется в моделях классификации последовательностей и выбора из нескольких вариантов. Должен быть одним из следующих значений:"last": использовать скрытое состояние последнего токена (как в XLNet)."first": использовать скрытое состояние первого токена (как в BERT)."mean": вычислить среднее значение скрытых состояний всех токенов."cls_index": укажите Tensor с позицией токена классификации (как в GPT/GPT-2)."attn": пока не реализовано, используйте multi-head attention.
- summary_use_proj (
bool, необязательный, по умолчаниюTrue) — Аргумент, используемый при выполнении сводки последовательности. Применяется в моделях классификации последовательностей и множественного выбора. Определяет, следует ли добавлять проекцию после извлечения вектора. - summary_activation (
str, необязательный) — Аргумент, используемый при выполнении сводки последовательности. Применяется в моделях классификации последовательностей и множественного выбора. Передайте"gelu", чтобы применить активацию gelu к выходу; любое другое значение приведет к отсутствию активации. - summary_last_dropout (
float, необязательный, по умолчанию 0.0) — Аргумент, используемый при формировании сводки последовательности. Применяется в моделях классификации последовательностей и выбора из нескольких вариантов. Коэффициент dropout, применяемый после проекции и функции активации. - pad_token_id (
int, необязательный, по умолчанию0) — Идентификатор токена, используемого для дополнения (padding) в словаре. - use_cache (
bool, необязательный, по умолчаниюTrue) — Указывает, должен ли модель возвращать последние ключи/значения внимания (не используется во всех моделях). Актуально только еслиconfig.is_decoder=Trueили если модель является генеративной моделью только с декодером. - classifier_dropout (
Union[float, int], необязательный) — Коэффициент dropout для классификатора. - is_decoder (
bool, необязательный, по умолчаниюFalse) — Указывает, используется ли модель в качестве декодера. ЕслиFalse, модель используется как энкодер. - add_cross_attention (
bool, необязательный, по умолчаниюFalse) — Указывает, следует ли добавлять слои кросс-внимания в модель. - bos_token_id (
int, необязательный) — Идентификатор токена, используемого для обозначения начала потока в словаре. - eos_token_id (
Union[int, list[int]], необязательный) — Идентификатор токена, используемого для обозначения конца потока в словаре. - tie_word_embeddings (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли связывать веса эмбеддингов согласно маппингуtied_weights_keysмодели.
Это класс конфигурации для хранения настроек модели ElectraModel. Он используется для создания модели Electra в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации google/electra-small-discriminator
Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.
Примеры:
>>> from transformers import ElectraConfig, ElectraModel
>>> # Initializing a ELECTRA electra-base-uncased style configuration
>>> configuration = ElectraConfig()
>>> # Initializing a model (with random weights) from the electra-base-uncased style configuration
>>> model = ElectraModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configElectraTokenizer
класс transformers.BertTokenizer
< 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]'tokenize_chinese_chars: bool = Truestrip_accents: bool | None = None**kwargs )
Параметры
- vocab (
strилиdict[str, int], необязательный) — Пользовательский словарь. Если не указан, словарь загружается изvocab_file. - do_lower_case (
bool, необязательный, по умолчаниюTrue) — Определяет, нужно ли приводить входные данные к нижнему регистру при токенизации. - unk_token (
str, необязательный, по умолчанию"[UNK]") — Токен неизвестного слова. Токен, отсутствующий в словаре, не может быть преобразован в ID, поэтому вместо него используется этот токен. - sep_token (
str, необязательный, по умолчанию"[SEP]") — Токен-разделитель, который используется при построении последовательности из нескольких последовательностей, например, двух последовательностей для классификации последовательностей или текста и вопроса для ответа на вопросы. Он также используется в качестве последнего токена в последовательности, построенной со специальными токенами. - pad_token (
str, необязательный, по умолчанию"[PAD]") — Токен, используемый для выравнивания, например, при пакетной обработке последовательностей разной длины. - cls_token (
str, необязательный, по умолчанию"[CLS]") — Токен классификатора, используемый при классификации последовательности (классификация всей последовательности, а не посимвольная классификация). Это первый токен последовательности, если она построена со специальными токенами. - mask_token (
str, необязательный, по умолчанию"[MASK]") — Токен, используемый для маскирования значений. Это тот токен, который применяется при обучении модели с использованием masked language modeling. Именно этот токен модель будет пытаться предсказать. - tokenize_chinese_chars (
bool, необязательный, по умолчаниюTrue) — Указывает, следует ли токенизировать китайские иероглифы. - strip_accents (
bool, необязательный) — Удалять ли все диакритические знаки. Если этот параметр не указан, его значение определяется по значению параметраlowercase(как в оригинальном BERT).
Создайте токенизатор BERT (на базе библиотеки tokenizers от HuggingFace). Основан на WordPiece.
Этот токенизатор наследуется от TokenizersBackend, который содержит большинство основных методов. За дополнительной информацией об этих методах следует обращаться к этому суперклассу.
Специфические выходные данные Electra
класс transformers.models.electra.modeling_electra.ElectraForPreTrainingOutput
< source >( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor] | None = Noneattentions: tuple[torch.Tensor] | None = None )
Параметры
- loss (
*optional*, возвращается, если заданlabels,torch.Tensorформы(1,)) — Суммарная функция потерь для задачи ELECTRA. - logits (
torch.Tensorформы(batch_size, sequence_length)) — Оценки предсказаний головы (оценки для каждого токена до SoftMax). - hidden_states (
tuple[torch.Tensor], необязательный, возвращается, еслиoutput_hidden_states=Trueпередан или еслиconfig.output_hidden_states=True) — кортежtorch.Tensor(по одному для вывода слоя встраиваний, если модель имеет слой встраиваний, + по одному для вывода каждого слоя) формы(batch_size, sequence_length, hidden_size).Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
- attentions (
tuple[torch.Tensor], необязательный, возвращается, еслиoutput_attentions=Trueпередан или еслиconfig.output_attentions=True) — Кортежtorch.Tensor(по одному для каждого слоя) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Тип возвращаемого значения ElectraForPreTraining.
ElectraModel
класс transformers.ElectraModel
< source >( config: ElectraConfig )
Параметры
- config (ElectraConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Базовая модель Electra, выводящая необработанные скрытые состояния без какого-либо специализированного слоя.
Эта модель наследуется от 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] = Noneencoder_hidden_states: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = Nonepast_key_values: list[torch.Tensor] | None = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithCrossAttentions or tuple(torch.Tensor)
Параметры
- input_ids (
torch.Tensorформы(batch_size, sequence_length), необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию padding игнорируется.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- token_type_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- position_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. - encoder_hidden_states (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — Последовательность скрытых состояний на выходе последнего слоя энкодера. Используется в кросс-внимании, если модель настроена как декодер. - encoder_attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения внимания к индексам токенов отступов во входных данных энкодера. Эта маска используется в кросс-внимании, если модель настроена как декодер. Значения маски из[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- past_key_values (
list[torch.Tensor], необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно этоpast_key_values, возвращённые моделью на предыдущем этапе декодирования, когдаuse_cache=Trueилиconfig.use_cache=True.В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если
past_key_valuesне переданы, по умолчанию будет инициализирован DynamicCache.Модель будет выводить тот же формат кэша, который был передан на вход.
Если используются
past_key_values, ожидается, что пользователь передаст только необработанныеinput_ids(те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы(batch_size, unprocessed_length), а не всеinput_idsформы(batch_size, sequence_length). - use_cache (
bool, необязательный) — Если установлено вTrue, возвращаются состояния ключей и значенийpast_key_values, которые можно использовать для ускорения декодирования (см.past_key_values).
Возвращает
BaseModelOutputWithCrossAttentions или tuple(torch.Tensor)
Объект BaseModelOutputWithCrossAttentions или кортеж
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (ElectraConfig) и входных данных.
Метод forward модели ElectraModel переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
last_hidden_state (
torch.Tensorформы(batch_size, sequence_length, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя модели.hidden_states (
tuple(torch.Tensor), optional, возвращается, если переданоoutput_hidden_states=Trueили еслиconfig.output_hidden_states=True) — кортеж изtorch.Tensor(один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы(batch_size, sequence_length, hidden_size).Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
attentions (
tuple(torch.Tensor), необязательный, возвращается при передачеoutput_attentions=Trueили приconfig.output_attentions=True) — Кортежtorch.Tensor(по одному на каждый слой) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
cross_attentions (
tuple(torch.Tensor), необязательный, возвращается, если переданоoutput_attentions=Trueиconfig.add_cross_attention=Trueили еслиconfig.output_attentions=True) — Кортежtorch.Tensor(по одному на каждый слой) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания кросс-внимания декодера после softmax внимания, используемые для вычисления взвешенного среднего в головах кросс-внимания.
ElectraForPreTraining
класс transformers.ElectraForPreTraining
< source >( config: ElectraConfig )
Параметры
- config (ElectraConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Electra с бинарной классификационной головой, используемой во время предварительного обучения для идентификации сгенерированных токенов.
Рекомендуется загрузить контрольную точку дискриминатора в эту модель.
Эта модель наследуется от 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] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → ElectraForPreTrainingOutput or tuple(torch.Tensor)
Параметры
- input_ids (
torch.Tensorформы(batch_size, sequence_length), необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию padding игнорируется.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- token_type_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- position_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. - labels (
torch.LongTensorформы(batch_size, sequence_length), , необязательный) — Метки для вычисления потери ELECTRA. Вход должен представлять собой последовательность токенов (см.input_idsдокументацию) Значения индексов должны быть в диапазоне[0, 1]:- 0 означает, что токен является исходным токеном,
- 1 означает, что токен был заменён.
Возвращает
ElectraForPreTrainingOutput или tuple(torch.Tensor)
Объект ElectraForPreTrainingOutput или кортеж из
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (ElectraConfig) и входных данных.
Метод forward класса ElectraForPreTraining переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
*optional*, возвращается, если заданlabels,torch.Tensorформы(1,)) — Суммарная функция потерь для задачи ELECTRA.logits (
torch.Tensorформы(batch_size, sequence_length)) — Оценки предсказаний головы (оценки для каждого токена до SoftMax).hidden_states (
tuple[torch.Tensor], необязательный, возвращается при передачеoutput_hidden_states=Trueили когдаconfig.output_hidden_states=True) — Кортеж изtorch.Tensor(один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы(batch_size, sequence_length, hidden_size).Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
attentions (
tuple[torch.Tensor], необязательный, возвращается при передачеoutput_attentions=Trueили когдаconfig.output_attentions=True) — Кортежtorch.Tensor(по одному на каждый слой) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Примеры:
>>> from transformers import ElectraForPreTraining, AutoTokenizer
>>> import torch
>>> discriminator = ElectraForPreTraining.from_pretrained("google/electra-base-discriminator")
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-base-discriminator")
>>> sentence = "The quick brown fox jumps over the lazy dog"
>>> fake_sentence = "The quick brown fox fake over the lazy dog"
>>> fake_tokens = tokenizer.tokenize(fake_sentence, add_special_tokens=True)
>>> fake_inputs = tokenizer.encode(fake_sentence, return_tensors="pt")
>>> discriminator_outputs = discriminator(fake_inputs)
>>> predictions = torch.round((torch.sign(discriminator_outputs[0]) + 1) / 2)
>>> fake_tokens
['[CLS]', 'the', 'quick', 'brown', 'fox', 'fake', 'over', 'the', 'lazy', 'dog', '[SEP]']
>>> predictions.squeeze().tolist()
[0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0]ElectraForCausalLM
класс transformers.ElectraForCausalLM
< source >( config: ElectraConfig )
Параметры
- config (ElectraConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель ELECTRA с головкой language modeling для дообучения CLM.
Эта модель наследуется от 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] = Noneencoder_hidden_states: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneuse_cache: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → CausalLMOutputWithCrossAttentions or tuple(torch.Tensor)
Параметры
- input_ids (
torch.Tensorформы(batch_size, sequence_length), необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию padding игнорируется.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- token_type_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- position_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. - encoder_hidden_states (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — Последовательность скрытых состояний на выходе последнего слоя энкодера. Используется в кросс-внимании, если модель настроена как декодер. - encoder_attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения внимания к индексам токенов отступов во входных данных энкодера. Эта маска используется в кросс-внимании, если модель настроена как декодер. Значения маски из[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- labels (
torch.LongTensorформы(batch_size, sequence_length), необязательный) — Метки для вычисления потери языкового моделирования слева направо (предсказание следующего слова). Индексы должны находиться в диапазоне[-100, 0, ..., config.vocab_size](см. docstringinput_ids). Токены с индексом-100игнорируются (маскируются); потеря вычисляется только для токенов с метками в диапазоне[0, ..., config.vocab_size] - past_key_values (
~cache_utils.Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно этоpast_key_values, возвращённые моделью на предыдущем этапе декодирования, когдаuse_cache=Trueилиconfig.use_cache=True.В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если
past_key_valuesне переданы, по умолчанию будет инициализирован DynamicCache.Модель будет выводить тот же формат кэша, который был передан на вход.
Если используются
past_key_values, ожидается, что пользователь передаст только необработанныеinput_ids(те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы(batch_size, unprocessed_length), а не всеinput_idsформы(batch_size, sequence_length). - use_cache (
bool, необязательный) — Если установлено вTrue, возвращаются состояния ключей и значенийpast_key_values, которые можно использовать для ускорения декодирования (см.past_key_values). - logits_to_keep (
Union[int, torch.Tensor], необязательный, по умолчанию0) — Если передано значение типаint, вычисляет logits для последнихlogits_to_keepтокенов. Если указано0, logits вычисляются для всехinput_ids(особый случай). Для генерации нужны logits только последнего токена, и вычисление их только для этого токена позволяет сэкономить память, что становится весьма значимым для длинных последовательностей или большого размера словаря. Если передано значение типаtorch.Tensor, оно должно быть одномерным и соответствовать индексам, которые нужно сохранить в измерении длины последовательности. Это полезно при использовании упакованного формата тензоров (один размер для batch и длины последовательности).
Возвращает
CausalLMOutputWithCrossAttentions или tuple(torch.Tensor)
Объект CausalLMOutputWithCrossAttentions или кортеж
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (ElectraConfig) и входных данных.
Метод forward класса ElectraForCausalLM переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
torch.Tensorформы(1,), необязательный, возвращается, если заданlabels) — Потери языковой модели (для предсказания следующего токена).logits (
torch.Tensorформы(batch_size, sequence_length, config.vocab_size)) — Оценки предсказаний языковой модели (оценки для каждого токена словаря до применения SoftMax).hidden_states (
tuple(torch.Tensor), optional, возвращается, если переданоoutput_hidden_states=Trueили еслиconfig.output_hidden_states=True) — кортеж изtorch.Tensor(один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы(batch_size, sequence_length, hidden_size).Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
attentions (
tuple(torch.Tensor), необязательный, возвращается при передачеoutput_attentions=Trueили приconfig.output_attentions=True) — Кортежtorch.Tensor(по одному на каждый слой) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
cross_attentions (
tuple(torch.Tensor), необязательный, возвращается при передачеoutput_attentions=Trueили приconfig.output_attentions=True) — Кортежtorch.Tensor(по одному на каждый слой) формы(batch_size, num_heads, sequence_length, sequence_length).Веса кросс-внимания после softmax внимания, используемые для вычисления взвешенного среднего в головах кросс-внимания.
past_key_values (
Cache, необязательный, возвращается при передачеuse_cache=Trueили когдаconfig.use_cache=True) — это экземпляр Cache. Подробнее см. в нашем руководстве по кэшу kv.Содержит предварительно вычисленные скрытые состояния (ключи и значения в блоках внимания), которые можно использовать (см. вход
past_key_values) для ускорения последовательного декодирования.
Пример:
>>> from transformers import AutoTokenizer, ElectraForCausalLM, ElectraConfig
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-base-generator")
>>> config = ElectraConfig.from_pretrained("google/electra-base-generator")
>>> config.is_decoder = True
>>> model = ElectraForCausalLM.from_pretrained("google/electra-base-generator", config=config)
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> prediction_logits = outputs.logitsElectraForMaskedLM
класс transformers.ElectraForMaskedLM
< source >( config: ElectraConfig )
Параметры
- config (ElectraConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Electra с головкой для моделирования языка.
Хотя в эту модель могут быть загружены как дискриминатор, так и генератор, именно генератор был обучен для задачи маскированного языкового моделирования.
Эта модель наследуется от 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] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MaskedLMOutput or tuple(torch.Tensor)
Параметры
- input_ids (
torch.Tensorформы(batch_size, sequence_length), необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию padding игнорируется.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- token_type_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- position_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. - labels (
torch.LongTensorформы(batch_size, sequence_length), необязательный) — Метки для вычисления потерь маскированного языкового моделирования. Индексы должны находиться в диапазоне[-100, 0, ..., config.vocab_size](см. docstringinput_ids). Токены с индексами, установленными в-100, игнорируются (маскируются); потери вычисляются только для токенов с метками в диапазоне[0, ..., config.vocab_size].
Возвращает
MaskedLMOutput или tuple(torch.Tensor)
Объект MaskedLMOutput или кортеж
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (ElectraConfig) и входных данных.
Метод forward класса ElectraForMaskedLM переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
torch.Tensorформы(1,), необязательный, возвращается, если переданlabels) — Потери маскированного языкового моделирования (MLM).logits (
torch.Tensorформы(batch_size, sequence_length, config.vocab_size)) — Оценки предсказаний языковой модели (оценки для каждого токена словаря до применения SoftMax).hidden_states (
tuple(torch.Tensor), optional, возвращается, если переданоoutput_hidden_states=Trueили еслиconfig.output_hidden_states=True) — кортеж изtorch.Tensor(один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы(batch_size, sequence_length, hidden_size).Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
attentions (
tuple(torch.Tensor), необязательный, возвращается при передачеoutput_attentions=Trueили приconfig.output_attentions=True) — Кортежtorch.Tensor(по одному на каждый слой) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Пример:
>>> from transformers import AutoTokenizer, ElectraForMaskedLM
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-small-discriminator")
>>> model = ElectraForMaskedLM.from_pretrained("google/electra-small-discriminator")
>>> inputs = tokenizer("The capital of France is <mask>.", return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> # retrieve index of <mask>
>>> mask_token_index = (inputs.input_ids == tokenizer.mask_token_id)[0].nonzero(as_tuple=True)[0]
>>> predicted_token_id = logits[0, mask_token_index].argmax(axis=-1)
>>> tokenizer.decode(predicted_token_id)
...
>>> labels = tokenizer("The capital of France is Paris.", return_tensors="pt")["input_ids"]
>>> # mask labels of non-<mask> tokens
>>> labels = torch.where(inputs.input_ids == tokenizer.mask_token_id, labels, -100)
>>> outputs = model(**inputs, labels=labels)
>>> round(outputs.loss.item(), 2)
...ElectraForSequenceClassification
класс transformers.ElectraForSequenceClassification
< source >( config: ElectraConfig )
Параметры
- config (ElectraConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель ELECTRA с головой для классификации/регрессии последовательности (линейный слой поверх пуллинг-выхода), например, для задач GLUE.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SequenceClassifierOutput or tuple(torch.Tensor)
Параметры
- input_ids (
torch.Tensorформы(batch_size, sequence_length), необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию padding игнорируется.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- token_type_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- position_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. - labels (
torch.LongTensorформы(batch_size,), необязательный) — Метки для вычисления функции потерь классификации/регрессии последовательности. Индексы должны находиться в диапазоне[0, ..., config.num_labels - 1]. Еслиconfig.num_labels == 1, вычисляется функция потерь регрессии (среднеквадратичная ошибка), еслиconfig.num_labels > 1, вычисляется функция потерь классификации (кросс-энтропия).
Возвращает
SequenceClassifierOutput или tuple(torch.Tensor)
Объект SequenceClassifierOutput или кортеж из
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (ElectraConfig) и входных данных.
Метод forward класса ElectraForSequenceClassification переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
torch.Tensorформы(1,), необязательный, возвращается, если заданlabels) — Потери классификации (или регрессии, если config.num_labels==1).logits (
torch.Tensorформы(batch_size, config.num_labels)) — Оценки для классификации (или регрессии, если config.num_labels==1) до применения SoftMax.hidden_states (
tuple(torch.Tensor), optional, возвращается, если переданоoutput_hidden_states=Trueили еслиconfig.output_hidden_states=True) — кортеж изtorch.Tensor(один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы(batch_size, sequence_length, hidden_size).Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
attentions (
tuple(torch.Tensor), необязательный, возвращается при передачеoutput_attentions=Trueили приconfig.output_attentions=True) — Кортежtorch.Tensor(по одному на каждый слой) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Пример классификации с одной меткой:
>>> import torch
>>> from transformers import AutoTokenizer, ElectraForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-small-discriminator")
>>> model = ElectraForSequenceClassification.from_pretrained("google/electra-small-discriminator")
>>> 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 = ElectraForSequenceClassification.from_pretrained("google/electra-small-discriminator", num_labels=num_labels)
>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...Пример многоклассовой классификации:
>>> import torch
>>> from transformers import AutoTokenizer, ElectraForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-small-discriminator")
>>> model = ElectraForSequenceClassification.from_pretrained("google/electra-small-discriminator", 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 = ElectraForSequenceClassification.from_pretrained(
... "google/electra-small-discriminator", 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).lossElectraForMultipleChoice
класс transformers.ElectraForMultipleChoice
< source >( config: ElectraConfig )
Параметры
- config (ElectraConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Electra с головой для классификации с множественным выбором (линейный слой поверх пул-вывода и softmax), например, для задач RocStories/SWAG.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MultipleChoiceModelOutput or tuple(torch.Tensor)
Параметры
- input_ids (
torch.LongTensorформы(batch_size, num_choices, 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_choices, sequence_length), необязательный) — Индексы сегментов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- position_ids (
torch.LongTensorформы(batch_size, num_choices, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбранные в диапазоне[0, config.max_position_embeddings - 1]. - inputs_embeds (
torch.Tensorформы(batch_size, num_choices, sequence_length, hidden_size), необязательный) — При необходимости вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем позволяет внутренняя матрица поиска встраиваний модели. - labels (
torch.LongTensorформы(batch_size,), необязательный) — Метки для вычисления функции потерь классификации с множественным выбором. Индексы должны находиться в диапазоне[0, ..., num_choices-1], гдеnum_choices— размер второго измерения входных тензоров. (См.input_idsвыше)
Возвращает
MultipleChoiceModelOutput или tuple(torch.Tensor)
Объект MultipleChoiceModelOutput или кортеж
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (ElectraConfig) и входных данных.
Метод forward класса ElectraForMultipleChoice переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
torch.Tensorформы (1,), необязательный, возвращается, если заданlabels) — Потери классификации.logits (
torch.Tensorформы(batch_size, num_choices)) — num_choices — это второе измерение входных тензоров (см. input_ids выше).Оценки классификации (до SoftMax).
hidden_states (
tuple(torch.Tensor), optional, возвращается, если переданоoutput_hidden_states=Trueили еслиconfig.output_hidden_states=True) — кортеж изtorch.Tensor(один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы(batch_size, sequence_length, hidden_size).Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
attentions (
tuple(torch.Tensor), необязательный, возвращается при передачеoutput_attentions=Trueили приconfig.output_attentions=True) — Кортежtorch.Tensor(по одному на каждый слой) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Пример:
>>> from transformers import AutoTokenizer, ElectraForMultipleChoice
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-small-discriminator")
>>> model = ElectraForMultipleChoice.from_pretrained("google/electra-small-discriminator")
>>> 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.logitsElectraForTokenClassification
класс transformers.ElectraForTokenClassification
< source >( config: ElectraConfig )
Параметры
- config (ElectraConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Electra с головой для классификации токенов.
В эту модель можно загрузить как дискриминатор, так и генератор.
Эта модель наследуется от 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] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → TokenClassifierOutput or tuple(torch.Tensor)
Параметры
- input_ids (
torch.Tensorформы(batch_size, sequence_length), необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию padding игнорируется.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- token_type_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- position_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. - labels (
torch.LongTensorформы(batch_size, sequence_length), необязательный) — Метки для вычисления функции потерь классификации токенов. Индексы должны находиться в диапазоне[0, ..., config.num_labels - 1].
Возвращает
TokenClassifierOutput или tuple(torch.Tensor)
Объект TokenClassifierOutput или кортеж из
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (ElectraConfig) и входных данных.
Метод forward класса ElectraForTokenClassification переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
torch.Tensorформы(1,), необязательный, возвращается, если заданlabels) — Потери классификации.logits (
torch.Tensorформы(batch_size, sequence_length, config.num_labels)) — Оценки классификации (до SoftMax).hidden_states (
tuple(torch.Tensor), optional, возвращается, если переданоoutput_hidden_states=Trueили еслиconfig.output_hidden_states=True) — кортеж изtorch.Tensor(один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы(batch_size, sequence_length, hidden_size).Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
attentions (
tuple(torch.Tensor), необязательный, возвращается при передачеoutput_attentions=Trueили приconfig.output_attentions=True) — Кортежtorch.Tensor(по одному на каждый слой) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Пример:
>>> from transformers import AutoTokenizer, ElectraForTokenClassification
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-small-discriminator")
>>> model = ElectraForTokenClassification.from_pretrained("google/electra-small-discriminator")
>>> 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)
...ElectraForQuestionAnswering
класс transformers.ElectraForQuestionAnswering
< source >( config: ElectraConfig )
Параметры
- config (ElectraConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Трансформер Electra с головой для классификации пропусков, расположенной сверху, для задач извлекающего ответа на вопросы, таких как 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.Tensor] = Noneend_positions: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → QuestionAnsweringModelOutput or tuple(torch.Tensor)
Параметры
- input_ids (
torch.Tensorформы(batch_size, sequence_length), необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию padding игнорируется.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- token_type_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из[0, 1]:- 0 соответствует токену sentence A,
- 1 соответствует токену sentence B.
- position_ids (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. - start_positions (
torch.Tensorформы(batch_size,), необязательный) — Метки для позиции (индекса) начала размеченного фрагмента, используемые для вычисления функции потерь классификации токенов. Позиции ограничиваются длиной последовательности (sequence_length). Позиции, выходящие за пределы последовательности, не учитываются при вычислении функции потерь. - end_positions (
torch.Tensorформы(batch_size,), необязательный) — Метки для позиции (индекса) конца размеченного фрагмента, используемые для вычисления функции потерь классификации токенов. Позиции ограничиваются длиной последовательности (sequence_length). Позиции, выходящие за пределы последовательности, не учитываются при вычислении функции потерь.
Возвращает
QuestionAnsweringModelOutput или tuple(torch.Tensor)
Объект QuestionAnsweringModelOutput или кортеж
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (ElectraConfig) и входных данных.
Метод forward класса ElectraForQuestionAnswering переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
torch.Tensorформы(1,), необязательный, возвращается, если заданlabels) — Суммарная функция потерь для извлечения пролёгов представляет собой сумму кросс-энтропии для начальных и конечных позиций.start_logits (
torch.Tensorформы(batch_size, sequence_length)) — Оценки начала спана (до SoftMax).end_logits (
torch.Tensorформы(batch_size, sequence_length)) — Оценки конца пролета (до SoftMax).hidden_states (
tuple(torch.Tensor), optional, возвращается, если переданоoutput_hidden_states=Trueили еслиconfig.output_hidden_states=True) — кортеж изtorch.Tensor(один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы(batch_size, sequence_length, hidden_size).Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
attentions (
tuple(torch.Tensor), необязательный, возвращается при передачеoutput_attentions=Trueили приconfig.output_attentions=True) — Кортежtorch.Tensor(по одному на каждый слой) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Пример:
>>> from transformers import AutoTokenizer, ElectraForQuestionAnswering
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-small-discriminator")
>>> model = ElectraForQuestionAnswering.from_pretrained("google/electra-small-discriminator")
>>> 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)
...