Transformers documentation

UniSpeech

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Эта модель была опубликована в HF papers 19.01.2021 и добавлена в Hugging Face Transformers 26.10.2021.

UniSpeech

FlashAttention SDPA

Обзор

Модель UniSpeech была предложена в работе UniSpeech: Unified Speech Representation Learning with Labeled and Unlabeled Data авторами Chengyi Wang, Yu Wu, Yao Qian, Kenichi Kumatani, Shujie Liu, Furu Wei, Michael Zeng, Xuedong Huang.

Аннотация из статьи следующая:

В данной статье мы предлагаем единый подход к предварительному обучению, названный UniSpeech, для обучения речевых представлений с использованием как размеченных, так и неразмеченных данных, в котором надзорное обучение фонетического CTC и контрастное самообучение с учётом фонетики выполняются в режиме многозадачного обучения. Полученные представления способны улавливать информацию, более тесно связанную с фонетической структурой, и улучшать обобщение на другие языки и области применения. Мы оцениваем эффективность UniSpeech для кросс-лингвального обучения представлений на публичном корпусе CommonVoice. Результаты показывают, что UniSpeech превосходит самообучение с предварительным обучением и надзорное обучение с переносом для распознавания речи, обеспечивая снижение относительной частоты ошибок на уровне фонем максимум на 13,4% и 17,8% соответственно (в среднем по всем языкам тестирования). Переносимость UniSpeech также продемонстрирована на задаче распознавания речи со сменой домена, а именно: снижение относительной частоты ошибок на уровне слов на 6% по сравнению с предыдущим подходом.

Эта модель была предоставлена пользователем patrickvonplaten. Код авторов можно найти здесь.

Советы по использованию

  • UniSpeech — это модель для обработки речи, которая принимает массив float, соответствующий исходной волновой форме речевого сигнала. Для извлечения признаков используйте Wav2Vec2Processor.
  • Модель UniSpeech можно дообучить с использованием connectionist temporal classification (CTC), поэтому вывод модели необходимо декодировать с помощью Wav2Vec2CTCTokenizer.

Ресурсы

UniSpeechConfig

класс transformers.UniSpeechConfig

< >

( 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 = 32hidden_size: int = 768num_hidden_layers: int = 12num_attention_heads: int = 12intermediate_size: int = 3072hidden_act: str = 'gelu'hidden_dropout: float | int = 0.1activation_dropout: float | int = 0.1attention_dropout: float | int = 0.1feat_proj_dropout: float | int = 0.0feat_quantizer_dropout: float | int = 0.0final_dropout: float | int = 0.1layerdrop: float | int = 0.1initializer_range: float = 0.02layer_norm_eps: float = 1e-05feat_extract_norm: str = 'group'feat_extract_activation: str = 'gelu'conv_dim: list[int] | tuple[int, ...] = (512, 512, 512, 512, 512, 512, 512)conv_stride: list[int] | tuple[int, ...] = (5, 2, 2, 2, 2, 2, 2)conv_kernel: list[int] | tuple[int, ...] = (10, 3, 3, 3, 3, 2, 2)conv_bias: bool = Falsenum_conv_pos_embeddings: int = 128num_conv_pos_embedding_groups: int = 16do_stable_layer_norm: bool = Falseapply_spec_augment: bool = Truemask_time_prob: float | int = 0.05mask_time_length: int = 10mask_time_min_masks: int = 2mask_feature_prob: float | int = 0.0mask_feature_length: int = 10mask_feature_min_masks: int = 0num_codevectors_per_group: int = 320num_codevector_groups: int = 2contrastive_logits_temperature: float = 0.1num_negatives: int = 100codevector_dim: int = 256proj_codevector_dim: int = 256diversity_loss_weight: float = 0.1ctc_loss_reduction: str = 'mean'ctc_zero_infinity: bool = Falseuse_weighted_layer_sum: bool = Falseclassifier_proj_size: int = 256num_ctc_classes: int = 80pad_token_id: int | None = 0bos_token_id: int | None = 1eos_token_id: int | list[int] | None = 2replace_prob: float | int = 0.5 )

Параметры

  • vocab_size (int, необязательный, по умолчанию 32) — Размер словаря модели. Определяет количество различных токенов, которые могут быть представлены в 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 (Union[float, int], необязательный, по умолчанию 0.1) — Вероятность dropout для всех полносвязных слоёв в эмбеддингах, энкодере и пуллере.
  • activation_dropout (Union[float, int], необязательный, по умолчанию 0.1) — Коэффициент dropout для активаций внутри полносвязного слоя.
  • attention_dropout (Union[float, int], необязательный, по умолчанию 0.1) — Коэффициент dropout для вероятностей внимания.
  • feat_proj_dropout (float, необязательный, по умолчанию 0.0) — Вероятность dropout для выхода кодировщика признаков.
  • feat_quantizer_dropout (float, необязательный, по умолчанию 0.0) — Вероятность dropout для выхода кодировщика признаков, используемого квантизатором.
  • final_dropout (float, необязательный, по умолчанию 0.1) — Вероятность dropout для последнего проекционного слоя UniSpeechForCTC.
  • layerdrop (Union[float, int], необязательный, по умолчанию 0.1) — Вероятность LayerDrop. Подробности — в [статье о LayerDrop](см. https://huggingface.co/papers/1909.11556).
  • initializer_range (float, необязательный, по умолчанию 0.02) — Стандартное отклонение truncated_normal_initializer, используемое для инициализации всех матриц весов.
  • layer_norm_eps (float, необязательный, по умолчанию 1e-05) — Значение epsilon, используемое слоями нормализации.
  • feat_extract_norm (str, необязательный, по умолчанию "group") — Тип нормализации, применяемой к одномерным свёрточным слоям в кодере признаков. Допустимые значения: "group" — групповая нормализация только для первого одномерного свёрточного слоя, или "layer" — нормализация по слоям для всех одномерных свёрточных слоев.
  • feat_extract_activation (str, *optional*, defaults to “gelu”) -- The non-linear activation function (function or string) in the 1D convolutional layers of the feature extractor. If string, “gelu”, “relu”, “selu”and“gelu_new”` are supported.
  • conv_dim (tuple[int] или list[int], необязательный, по умолчанию (512, 512, 512, 512, 512, 512, 512)) — Кортеж целых чисел, определяющий количество входных и выходных каналов каждого слоя одномерной свёртки в кодировщике признаков. Длина conv_dim определяет количество одномерных свёрточных слоёв.
  • conv_stride (tuple[int] or list[int], необязательный, по умолчанию (5, 2, 2, 2, 2, 2, 2)) — Кортеж целых чисел, определяющий шаг каждого одномерного свёрточного слоя в кодере признаков. Длина conv_stride определяет количество свёрточных слоёв и должна совпадать с длиной conv_dim.
  • conv_kernel (tuple[int] или list[int], необязательный, по умолчанию (10, 3, 3, 3, 3, 2, 2)) — Кортеж целых чисел, определяющий размер ядра каждого одномерного свёрточного слоя в кодировщике признаков. Длина conv_kernel определяет количество свёрточных слоев и должна совпадать с длиной conv_dim.
  • conv_bias (bool, необязательный, по умолчанию False) — Указывает, имеют ли одномерные свёрточные слои смещение (bias).
  • num_conv_pos_embeddings (int, необязательный, по умолчанию 128) — Количество сверточных позиционных эмбеддингов. Определяет размер ядра слоя 1D сверточных позиционных эмбеддингов.
  • num_conv_pos_embedding_groups (int, необязательный, по умолчанию 16) — Количество групп слоя одномерных свёрточных позиционных эмбеддингов.
  • do_stable_layer_norm (bool, необязательный, по умолчанию False) — Определяет, следует ли применять архитектуру стабильного layer norm в кодере Transformer. Если do_stable_layer_norm is True, layer norm применяется перед слоем внимания, а если do_stable_layer_norm is False — после слоя внимания.
  • apply_spec_augment (bool, необязательный, по умолчанию True) — Указывает, следует ли применять аугментацию данных SpecAugment к выходным данным кодировщика признаков. Для справки см. SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition.
  • mask_time_prob (float, optional, defaults to 0.05) — Percentage (between 0 and 1) of all feature vectors along the time axis which will be masked. The masking procedure generates ”mask_time_problen(time_axis)/mask_time_length” independent masks over the axis. If reasoning from the probability of each feature vector to be chosen as the start of the vector span to be masked, mask_time_prob should be `prob_vector_startmask_time_length. Note that overlap may decrease the actual percentage of masked vectors. This is only relevant if apply_spec_augment is True`.
  • mask_time_length (int, необязательный, по умолчанию 10) — Длина векторного диапазона вдоль временной оси.
  • mask_time_min_masks (int, необязательный, по умолчанию 2) — Минимальное количество масок длины mask_feature_length, генерируемых вдоль временной оси, для каждого временного шага, независимо от mask_feature_prob. Актуально только в том случае, если ”mask_time_prob*len(time_axis)/mask_time_length < mask_time_min_masks”
  • mask_feature_prob (float, optional, defaults to 0.0) — Percentage (between 0 and 1) of all feature vectors along the feature axis which will be masked. The masking procedure generates ”mask_feature_problen(feature_axis)/mask_time_length” independent masks over the axis. If reasoning from the probability of each feature vector to be chosen as the start of the vector span to be masked, mask_feature_prob should be `prob_vector_startmask_feature_length. Note that overlap may decrease the actual percentage of masked vectors. This is only relevant if apply_spec_augment is True`.
  • mask_feature_length (int, необязательный, по умолчанию 10) — Длина векторного диапазона вдоль оси признаков.
  • mask_feature_min_masks (int, необязательный, по умолчанию 0) — Минимальное количество масок длины mask_feature_length, генерируемых вдоль оси признаков на каждом шаге, независимо от значения mask_feature_prob. Актуально только если ”mask_feature_prob*len(feature_axis)/mask_feature_length < mask_feature_min_masks”
  • num_codevectors_per_group (int, необязательный, по умолчанию 320) — Количество записей в каждом квантованном кодеке (группе).
  • num_codevector_groups (int, необязательный, по умолчанию 2) — Количество групп кодовекторов для квантования с использованием произвольных кодовекторов.
  • contrastive_logits_temperature (float, необязательный, по умолчанию 0.1) — Температура kappa в контрастивной функции потерь.
  • num_negatives (int, необязательный, по умолчанию 100) — Количество отрицательных выборок для контрастивной функции потерь.
  • codevector_dim (int, необязательный, по умолчанию 256) — Размерность квантованных векторов признаков.
  • proj_codevector_dim (int, необязательный, по умолчанию 256) — Размерность финальной проекции как квантованных, так и трансформерных признаков.
  • diversity_loss_weight (int, необязательный, по умолчанию 0.1) — Вес компонента потерь разнообразия кодовой книги.
  • ctc_loss_reduction (str, необязательный, по умолчанию mean) — Определяет способ агрегации, применяемый к выходу torch.nn.CTCLoss. Актуально только при обучении.
  • ctc_zero_infinity (bool, необязательный, по умолчанию False) — Определяет, следует ли обнулять бесконечные значения потерь и соответствующие градиенты torch.nn.CTCLoss. Бесконечные потери возникают в основном, когда входные последовательности слишком короткие, чтобы их можно было выровнять по целевым. Параметр актуален только при обучении экземпляра UniSpeechForCTC.
  • use_weighted_layer_sum (bool, необязательный, по умолчанию False) — Использовать ли взвешенное среднее выходов слоев с обучаемыми весами. Актуально только при использовании экземпляра UniSpeechForSequenceClassification.
  • classifier_proj_size (int, необязательный, по умолчанию 256) — Размерность проекции перед усреднением токенов для классификации.
  • num_ctc_classes (int, необязательный, по умолчанию 80) — Указывает количество классов (токены фонем и токен пробела) для функции потерь CTC на уровне фонем. Актуально только при использовании экземпляра UniSpeechForPreTraining.
  • pad_token_id (int, необязательный, по умолчанию 0) — Идентификатор токена, используемого для дополнения (padding) в словаре.
  • bos_token_id (int, необязательный, по умолчанию 1) — Идентификатор токена, используемого для обозначения начала потока в словаре.
  • eos_token_id (Union[int, list[int]], необязательный, по умолчанию 2) — Идентификатор токена, используемого для обозначения конца потока в словаре.
  • replace_prob (float, необязательный, по умолчанию 0.5) — Вероятность того, что признак трансформера будет заменён квантованным признаком при предварительном обучении.

Это класс конфигурации для хранения настроек модели UniSpeechModel. Он используется для создания модели Unispeech в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации microsoft/unispeech-large-1500h-cv

Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.

Пример:

>>> from transformers import UniSpeechConfig, UniSpeechModel

>>> # Initializing a UniSpeech facebook/unispeech-base-960h style configuration
>>> configuration = UniSpeechConfig()

>>> # Initializing a model (with random weights) from the facebook/unispeech-base-960h style configuration
>>> model = UniSpeechModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

Специфические выходные данные UniSpeech

класс transformers.models.unispeech.modeling_unispeech.UniSpeechForPreTrainingOutput

< >

( loss: typing.Optional[torch.Tensor] = Noneprojected_states: typing.Optional[torch.Tensor] = Noneprojected_quantized_states: typing.Optional[torch.Tensor] = Nonecodevector_perplexity: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor] | None = Noneattentions: tuple[torch.Tensor] | None = None )

Параметры

  • loss (*optional*, возвращается, когда модель находится в режиме обучения, torch.Tensor формы (1,)) — Суммарная потеря, равная сумме контрастивной потери (L_m) и потери разнообразия (L_d), как указано в официальной статье.
  • projected_states (torch.Tensor формы (batch_size, sequence_length, config.proj_codevector_dim)) — Скрытые состояния модели, спроецированные в config.proj_codevector_dim, которые можно использовать для предсказания замаскированных спроецированных квантованных состояний.
  • projected_quantized_states (torch.Tensor формы (batch_size, sequence_length, config.proj_codevector_dim)) — Квантованные извлечённые векторы признаков, спроецированные в config.proj_codevector_dim, представляющие положительные целевые векторы для контрастного потерь.
  • codevector_perplexity (torch.Tensor формы (1,)) — Переплексия распределения codevector, используемая для измерения разнообразия кодовой книги.
  • 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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Тип выходных данных UniSpeechForPreTrainingOutput, с возможными скрытыми состояниями и вниманиями.

UniSpeechModel

класс transformers.UniSpeechModel

< >

( config: UniSpeechConfig )

Параметры

  • config (UniSpeechConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().

Модель Unispeech без дополнительных слоёв, выводящая необработанные скрытые состояния.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( input_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonemask_time_indices: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Wav2Vec2BaseModelOutput or tuple(torch.Tensor)

Параметры

  • input_values (torch.Tensor формы (batch_size, sequence_length), необязательный) — Значения типа float для входной необработанной звуковой волны. Значения можно получить, загрузив аудиофайл .flac или .wav в массив типа list[float], numpy.ndarray или torch.Tensor, например, с помощью библиотеки torchcodec (pip install torchcodec) или библиотеки soundfile (pip install soundfile). Для подготовки массива в input_values следует использовать AutoProcessor для выравнивания (padding) и преобразования в тензор типа torch.Tensor. Подробности см. в Wav2Vec2Processor.call().
  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • mask_time_indices (torch.BoolTensor формы (batch_size, sequence_length), необязательный) — Индексы для маскирования извлечённых признаков для контрастивной функции потерь. В режиме обучения модель учится предсказывать маскированные извлечённые признаки в пространстве config.proj_codevector_dim.

Возвращает

Wav2Vec2BaseModelOutput или tuple(torch.Tensor)

Объект Wav2Vec2BaseModelOutput или кортеж torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (UniSpeechConfig) и входных данных.

Метод forward модели UniSpeechModel переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • last_hidden_state (torch.Tensor формы (batch_size, sequence_length, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя модели.

  • extract_features (torch.Tensor формы (batch_size, sequence_length, conv_dim[-1])) — Последовательность векторов признаков, извлечённых из последнего свёрточного слоя модели.

  • 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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

UniSpeechForCTC

класс transformers.UniSpeechForCTC

< >

( config: UniSpeechConfigtarget_lang: str | None = None )

Параметры

  • config (UniSpeechConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
  • target_lang (str, необязательный) — Идентификатор языка весов адаптера. Веса адаптера хранятся в формате adapter.<lang>.safetensors или adapter.<lang>.bin. Актуально только при использовании экземпляра UniSpeechForCTC с адаптерами. По умолчанию используется ‘eng’.

Модель UniSpeech с головкой language modeling для Connectionist Temporal Classification (CTC).

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( input_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → CausalLMOutput or tuple(torch.Tensor)

Параметры

  • input_values (torch.Tensor формы (batch_size, sequence_length), необязательный) — Значения типа float для входной необработанной звуковой волны. Значения можно получить, загрузив аудиофайл .flac или .wav в массив типа list[float], numpy.ndarray или torch.Tensor, например, с помощью библиотеки torchcodec (pip install torchcodec) или библиотеки soundfile (pip install soundfile). Для подготовки массива в input_values следует использовать AutoProcessor для выравнивания (padding) и преобразования в тензор типа torch.Tensor. Подробности см. в Wav2Vec2Processor.call().
  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • labels (torch.LongTensor формы (batch_size, target_length), необязательный) — Метки для связного временного классификации (CTC). Обратите внимание, что target_length должен быть меньше или равен длине последовательности выходных логитов. Индексы выбираются из диапазона [-100, 0, ..., config.vocab_size - 1]. Все метки, установленные в -100, игнорируются (маскируются); функция потерь вычисляется только для меток из диапазона [0, ..., config.vocab_size - 1].

Возвращает

CausalLMOutput или tuple(torch.Tensor)

Объект CausalLMOutput или кортеж из torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (UniSpeechConfig) и входных данных.

Метод forward класса UniSpeechForCTC переопределяет специальный метод __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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Пример:

>>> from transformers import AutoProcessor, UniSpeechForCTC
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> processor = AutoProcessor.from_pretrained("microsoft/unispeech-large-1500h-cv")
>>> model = UniSpeechForCTC.from_pretrained("microsoft/unispeech-large-1500h-cv")

>>> # audio file is decoded on the fly
>>> inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> with torch.no_grad():
...     logits = model(**inputs).logits
>>> predicted_ids = torch.argmax(logits, dim=-1)

>>> # transcribe speech
>>> transcription = processor.batch_decode(predicted_ids)
>>> transcription[0]
...

>>> inputs["labels"] = processor(text=dataset[0]["text"], return_tensors="pt").input_ids

>>> # compute loss
>>> loss = model(**inputs).loss
>>> round(loss.item(), 2)
...

UniSpeechForSequenceClassification

класс transformers.UniSpeechForSequenceClassification

< >

( config: UniSpeechConfig )

Параметры

  • config (UniSpeechConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().

Модель UniSpeech с головой последовательной классификации (линейный слой поверх агрегированного вывода) для таких задач, как SUPERB Keyword Spotting.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( input_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SequenceClassifierOutput or tuple(torch.Tensor)

Параметры

  • input_values (torch.Tensor формы (batch_size, sequence_length)) — Значения типа float для входной необработанной звуковой волны. Значения можно получить, загрузив аудиофайл .flac или .wav в массив типа list[float], numpy.ndarray или torch.Tensor, например, с помощью библиотеки torchcodec (pip install torchcodec) или библиотеки soundfile (pip install soundfile). Чтобы подготовить массив для input_values, следует использовать AutoProcessor для выравнивания (padding) и преобразования в тензор типа torch.Tensor. Подробности см. в UniSpeechProcessor.__call__.
  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • 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), содержащий различные элементы в зависимости от конфигурации (UniSpeechConfig) и входных данных.

Метод forward класса UniSpeechForSequenceClassification переопределяет специальный метод __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, UniSpeechForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("microsoft/unispeech-large-1500h-cv")
>>> model = UniSpeechForSequenceClassification.from_pretrained("microsoft/unispeech-large-1500h-cv")

>>> 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 = UniSpeechForSequenceClassification.from_pretrained("microsoft/unispeech-large-1500h-cv", num_labels=num_labels)

>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...

Пример многоклассовой классификации:

>>> import torch
>>> from transformers import AutoTokenizer, UniSpeechForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("microsoft/unispeech-large-1500h-cv")
>>> model = UniSpeechForSequenceClassification.from_pretrained("microsoft/unispeech-large-1500h-cv", 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 = UniSpeechForSequenceClassification.from_pretrained(
...     "microsoft/unispeech-large-1500h-cv", 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).loss

UniSpeechForPreTraining

класс transformers.UniSpeechForPreTraining

< >

( config: UniSpeechConfig )

Параметры

  • config (UniSpeechConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().

Модель UniSpeech с модулем векторной квантизации и потерей CTC для предварительного обучения.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( input_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → UniSpeechForPreTrainingOutput or tuple(torch.Tensor)

Параметры

  • input_values (torch.Tensor формы (batch_size, sequence_length), необязательный) — Значения типа float для входной необработанной звуковой волны. Значения можно получить, загрузив аудиофайл .flac или .wav в массив типа list[float], numpy.ndarray или torch.Tensor, например, с помощью библиотеки torchcodec (pip install torchcodec) или библиотеки soundfile (pip install soundfile). Для подготовки массива в input_values следует использовать AutoProcessor для выравнивания (padding) и преобразования в тензор типа torch.Tensor. Подробности см. в Wav2Vec2Processor.call().
  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

Возвращает

UniSpeechForPreTrainingOutput или tuple(torch.Tensor)

Объект UniSpeechForPreTrainingOutput или кортеж torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (UniSpeechConfig) и входных данных.

Метод UniSpeechForPreTraining forward переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • loss (*optional*, возвращается, когда модель находится в режиме обучения, torch.Tensor формы (1,)) — Суммарная потеря, равная сумме контрастивной потери (L_m) и потери разнообразия (L_d), как описано в официальной статье.

  • projected_states (torch.Tensor формы (batch_size, sequence_length, config.proj_codevector_dim)) — Скрытые состояния модели, спроецированные в config.proj_codevector_dim, которые можно использовать для предсказания замаскированных спроецированных квантованных состояний.

  • projected_quantized_states (torch.Tensor формы (batch_size, sequence_length, config.proj_codevector_dim)) — Квантованные извлечённые векторы признаков, спроецированные в config.proj_codevector_dim, представляющие положительные целевые векторы для контрастного потерь.

  • codevector_perplexity (torch.Tensor формы (1,)) — Переплексность распределения codevector, используемая для измерения разнообразия кодовой книги.

  • hidden_states (tuple[torch.Tensor], необязательный, возвращается при передаче output_hidden_states=True или когда config.output_hidden_states=True) — Кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

    Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.

  • attentions (tuple[torch.Tensor], необязательный, возвращается при передаче output_attentions=True или когда config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Пример:

>>> import torch
>>> from transformers import AutoFeatureExtractor, UniSpeechForPreTraining

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("microsoft/unispeech-large-1500h-cv")
>>> model = UniSpeechForPreTraining.from_pretrained("microsoft/unispeech-large-1500h-cv")
>>> # TODO: Add full pretraining example
Update on GitHub