Transformers documentation

HuBERT

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Bu model 2021-06-14 tarihinde HF papers'ta yayımlandı ve 2021-06-16 tarihinde Hugging Face Transformers'a katkıda bulunuldu.

FlashAttention SDPA

HuBERT

HuBERT, BERT benzeri bir tahmin kaybı için hizalanmış hedef etiketleri kümeleyen ve modeli sürekli girdiler üzerinde hem akustik hem de dil modellemesi öğrenmeye zorlamak amacıyla tahmin kaybını yalnızca maskelenmiş bölgeler üzerinde uygulayan, kendiliğinden denetimli bir konuşma modelidir. Bu model, konuşma başına birden çok ses birimi, ön eğitim sırasında sözlük bulunmaması ve açık segmentasyon olmadan değişken uzunlukta ses birimleri gibi zorlukları ele alır.

Tüm orijinal HuBERT kontrol noktalarını HuBERT koleksiyonunda bulabilirsiniz.

Bu model patrickvonplaten tarafından katkıda bulunmuştur.

Farklı ses görevlerine HuBERT'i nasıl uygulayacağınızla ilgili daha fazla örnek için sağ kenar çubuğundaki HuBERT modellerine tıklayın.

Aşağıdaki örnek, Pipeline veya AutoModel sınıfı ile konuşmanın otomatik olarak metne dönüştürülmesini göstermektedir.

Pipeline
AutoModel
from transformers import pipeline


pipeline = pipeline(
    task="automatic-speech-recognition",
    model="facebook/hubert-large-ls960-ft",
    device=0
)

pipeline("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/1.flac")

Kantizasyon

Quantization, ağırlıkları daha düşük bir hassasiyetle temsil ederek büyük modellerin bellek yükünü azaltır. Daha fazla kullanılabilir quantization backend'i için Quantization genel bakışına başvurun.

Aşağıdaki örnek, ağırlıkları 4-bite küçültmek için bitsandbytes kullanır.

import torch
from datasets import load_dataset

from transformers import AutoModelForCTC, AutoProcessor, BitsAndBytesConfig


bnb_config = BitsAndBytesConfig(
    load_in_8bit=True,
    llm_int8_threshold=6.0
)

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

processor = AutoProcessor.from_pretrained("facebook/hubert-base-ls960")
model = AutoModelForCTC.from_pretrained("facebook/hubert-base-ls960", quantization_config=bnb_config, device_map="auto", attn_implementation="sdpa")

inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt").to(model.device)
with torch.no_grad():
    logits = model(**inputs).logits
predicted_ids = torch.argmax(logits, dim=-1)

transcription = processor.batch_decode(predicted_ids)
print(transcription[0])

Notlar

  • HuBERT modelleri, 16 kHz örneklem hızıyla örneklendirilmiş 1 boyutlu bir float dizisi olarak ham ses girdisi bekler.

HubertConfig

sınıf transformers.HubertConfig

< >

( 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_layer_norm: bool = Truefeat_proj_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 = 16conv_pos_batch_norm: bool = Falsedo_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 = 0ctc_loss_reduction: str = 'sum'ctc_zero_infinity: bool = Falseuse_weighted_layer_sum: bool = Falseclassifier_proj_size: int = 256pad_token_id: int | None = 0bos_token_id: int | None = 1eos_token_id: int | list[int] | None = 2 )

Parametreler

  • vocab_size (int, isteğe bağlı, varsayılan 32) — Modelin sözlük boyutu. input_ids tarafından temsil edilebilecek farklı token sayısını tanımlar.
  • hidden_size (int, isteğe bağlı, varsayılan 768) — Gizli temsillerin boyutu.
  • num_hidden_layers (int, isteğe bağlı, varsayılan 12) — Transformer çözücüdeki gizli katman sayısı.
  • num_attention_heads (int, isteğe bağlı, varsayılan 12) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.
  • intermediate_size (int, isteğe bağlı, varsayılan 3072) — MLP temsillerinin boyutu.
  • hidden_act (str, isteğe bağlı, varsayılan gelu) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, "gelu", "relu", "silu" vb.
  • hidden_dropout (Union[float, int], isteğe bağlı, varsayılan 0.1) — Gömme, kodlayıcı ve havuzlayıcıdaki tüm tam bağlı katmanlar için dropout olasılığı.
  • activation_dropout (Union[float, int], isteğe bağlı, varsayılan 0.1) — Tamamen bağlı katmandaki aktivasyonlar için dropout oranı.
  • attention_dropout (Union[float, int], isteğe bağlı, varsayılan 0.1) — Dikkat olasılıkları için dropout oranı.
  • feat_proj_layer_norm (bool, isteğe bağlı, varsayılan True) — Özellik kodlayıcısının çıktısına LayerNorm uygulanıp uygulanmayacağı.
  • feat_proj_dropout (float, isteğe bağlı, varsayılan 0.0) — Özellik kodlayıcısının çıktısı için dropout olasılığı.
  • final_dropout (float, isteğe bağlı, varsayılan 0.1) — Wav2Vec2ForCTC'nin son projeksiyon katmanı için dropout olasılığı.
  • layerdrop (Union[float, int], isteğe bağlı, varsayılan 0.1) — LayerDrop olasılığı. Daha fazla ayrıntı için [LayerDrop makalesine](bkz. https://huggingface.co/papers/1909.11556) bakın.
  • initializer_range (float, isteğe bağlı, varsayılan 0.02) — Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.
  • layer_norm_eps (float, isteğe bağlı, varsayılan 1e-05) — Katman normalizasyon katmanları tarafından kullanılan epsilon.
  • feat_extract_norm (str, isteğe bağlı, varsayılan "group") — Özellik kodlayıcıdaki 1B sarmal katmanlara uygulanacak norm. Sadece ilk 1B sarmal katman için grup normalizasyonu olan "group" veya tüm 1B sarmal katmanlar için katman normalizasyonu olan "layer" değerlerinden biri.
  • 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], isteğe bağlı, varsayılan (512, 512, 512, 512, 512, 512, 512)) — Özellik kodlayıcıdaki her 1B konvolüsyon katmanının giriş ve çıkış kanal sayısını tanımlayan tamsayı bir demeti. conv_dim'in uzunluğu, 1B konvolüsyon katmanlarının sayısını belirler.
  • conv_stride (tuple[int], isteğe bağlı, varsayılan (5, 2, 2, 2, 2, 2, 2)) — Özellik kodlayıcıdaki her 1B konvolüsyon katmanının stride değerini tanımlayan tamsayılar dizisi. conv_stride'ün uzunluğu, konvolüsyon katmanlarının sayısını belirler ve conv_dim'in uzunluğuyla eşleşmelidir.
  • conv_kernel (tuple[int], isteğe bağlı, varsayılan (10, 3, 3, 3, 3, 3, 3)) — Özellik kodlayıcıdaki her 1D konvolüsyon katmanının çekirdek boyutunu tanımlayan tamsayılar dizisi. conv_kernel'in uzunluğu, konvolüsyon katmanlarının sayısını belirler ve conv_dim'in uzunluğuyla eşleşmelidir.
  • conv_bias (bool, isteğe bağlı, varsayılan False) — 1D konvolüsyonel katmanların bir sapma (bias) içerip içermediğini belirtir.
  • num_conv_pos_embeddings (int, isteğe bağlı, varsayılan 128) — Konvolüsyonel konumsal gömme sayısı. 1D konvolüsyonel konumsal gömme katmanının çekirdek boyutunu tanımlar.
  • num_conv_pos_embedding_groups (int, isteğe bağlı, varsayılan 16) — 1D konvolüsyonel konumsal gömme katmanının grup sayısı.
  • conv_pos_batch_norm (bool, isteğe bağlı, varsayılan False) — conv_pos içinde weight norm yerine batch norm kullanılıp kullanılmayacağı
  • do_stable_layer_norm (bool, isteğe bağlı, varsayılan False) — Transformer kodlayıcısında stable layer norm mimarisinin uygulanıp uygulanmayacağını belirtir. do_stable_layer_norm is True, layer norm'un dikkat katmanından önce uygulanmasına karşılık gelirken, do_stable_layer_norm is False dikkat katmanından sonra uygulanmasına karşılık gelir.
  • apply_spec_augment (bool, isteğe bağlı, varsayılan True) — Özellik kodlayıcısının çıktılarında SpecAugment veri artırma uygulayıp uygulamayacağı. Referans için bkz. 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, isteğe bağlı, varsayılan 10) — Zaman ekseni boyunca vektör aralığının uzunluğu.
  • mask_time_min_masks (int, isteğe bağlı, varsayılan 2), — Zaman ekseninde, her zaman adımı için, mask_feature_prob değerinden bağımsız olarak üretilen, mask_feature_length uzunluğundaki maskelerin minimum sayısı. Yalnızca ”mask_time_prob*len(time_axis)/mask_time_length < mask_time_min_masks” durumu geçerliyse ilgili.
  • 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_prob (Union[float, int], isteğe bağlı, varsayılan 0.0) — Özellik ekseni boyunca maskelenecek tüm özellik vektörlerinin yüzdesi (0 ile 1 arasında). Maskeleme işlemi, eksen üzerinde mask_feature_prob*len(feature_axis)/mask_time_length bağımsız maske üretir. Maskelenecek vektör aralığının başlangıcı olarak seçilecek her özellik vektörünün olasılığından yola çıkarak akıl yürütülüyorsa, mask_feature_prob değeri prob_vector_start*mask_feature_length olmalıdır. Dikkat edin, örtüşme, maskelenen vektörlerin gerçek yüzdesini azaltabilir. Bu, yalnızca apply_spec_augment değeri True ise geçerlidir.
  • mask_feature_length (int, isteğe bağlı, varsayılan 10) — Özellik ekseni boyunca vektör aralığının uzunluğu.
  • mask_feature_min_masks (int, isteğe bağlı, varsayılan 0), — Her zaman adımında, mask_feature_prob değerinden bağımsız olarak, özellik ekseni boyunca üretilen mask_feature_length uzunluğundaki maskelerin minimum sayısı. Yalnızca ”mask_feature_prob*len(feature_axis)/mask_feature_length < mask_feature_min_masks” koşulu sağlandığında geçerlidir.
  • ctc_loss_reduction (str, isteğe bağlı, varsayılan "sum") — torch.nn.CTCLoss çıktısına uygulanacak indirgemeyi belirtir. Yalnızca bir HubertForCTC örneğinin eğitimi sırasında geçerlidir.
  • ctc_loss_reduction (str, isteğe bağlı, varsayılan sum) — torch.nn.CTCLoss çıktısına uygulanacak indirgeme yöntemini belirtir. Yalnızca eğitim sırasında geçerlidir.
  • ctc_zero_infinity (bool, isteğe bağlı, varsayılan False) — torch.nn.CTCLoss için sonsuz kayıpları ve ilişkili gradyanları sıfırlayıp sıfırlamayacağı. Sonsuz kayıplar, girdilerin hedeflerle hizalanmak için çok kısa olması durumunda ortaya çıkar. Yalnızca bir HubertForCTC örneğinin eğitimi sırasında geçerlidir.
  • use_weighted_layer_sum (bool, isteğe bağlı, varsayılan False) — Öğrenilen ağırlıklarla katman çıktıları için ağırlıklı ortalama kullanılıp kullanılmayacağı. Yalnızca HubertForSequenceClassification bir örneği kullanıldığında geçerlidir.
  • classifier_proj_size (int, isteğe bağlı, varsayılan 256) — Sınıflandırma için token ortalama havuzlamadan önceki projeksiyonun boyutluğu.
  • pad_token_id (int, isteğe bağlı, varsayılan 0) — Sözlükte dolgu için kullanılan token kimliği.
  • bos_token_id (int, isteğe bağlı, varsayılan 1) — Sözlükte akış başlangıcı için kullanılan token kimliği.
  • eos_token_id (Union[int, list[int]], isteğe bağlı, varsayılan 2) — Sözlükte akış sonu için kullanılan token kimliği.

Bu, bir HubertModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Hubert modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneklendiğinde, facebook/hubert-base-ls960 ile benzer bir yapılandırma elde edilir.

Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.

Örnek:

>>> from transformers import HubertModel, HubertConfig

>>> # Initializing a Hubert facebook/hubert-base-ls960 style configuration
>>> configuration = HubertConfig()

>>> # Initializing a model from the facebook/hubert-base-ls960 style configuration
>>> model = HubertModel(configuration)

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

HubertModel

sınıf transformers.HubertModel

< >

( config: HubertConfig )

Parametreler

  • config (HubertConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.

Üzerinde herhangi bir özel başlık olmadan ham gizli durumları (hidden-states) üreten çıplak Hubert Modeli.

Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

forward

< >

( input_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonemask_time_indices: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutput or tuple(torch.Tensor)

Parametreler

  • input_values (torch.Tensor, şekli (batch_size, sequence_length), isteğe bağlı) — Giriş ham ses dalgasının ondalık sayı değerleri. Değerler, bir .flac veya .wav ses dosyasını list[float] türünde bir diziye, numpy.ndarray veya torch.Tensor içine yükleyerek elde edilebilir; örneğin örneğin torchcodec kütüphanesi (pip install torchcodec) veya soundfile kütüphanesi (pip install soundfile) üzerinden. Diziyi input_values için hazırlamak için, torch.Tensor türünde bir tensöre dönüştürme ve dolgu (padding) işlemleri için AutoProcessor kullanılmalıdır. Ayrıntılar için Wav2Vec2Processor.call() bölümüne bakın.
  • attention_mask (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.

    Dikkat maskeleri nedir?

  • mask_time_indices (torch.BoolTensor, şekli (batch_size, sequence_length), isteğe bağlı) — Karşıtlı kayıp için çıkarılan özellikleri maskelemek üzere kullanılacak indeksler. Eğitim modundayken, model config.proj_codevector_dim uzayında maskelenmiş çıkarılan özellikleri tahmin etmeyi öğrenir.
  • output_attentions (bool, isteğe bağlı) — Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki attentions bölümüne bakın.
  • output_hidden_states (bool, isteğe bağlı) — Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki hidden_states bölümüne bakın.
  • return_dict (bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi?

Dönüş değeri

BaseModelOutput veya tuple(torch.Tensor)

Bir BaseModelOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (HubertConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

HubertModel forward metodu, __call__ özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine Module örneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

  • last_hidden_state (torch.Tensor, şekli (batch_size, sequence_length, hidden_size)) — Modelin son katmanının çıktısındaki gizli durumlar dizisi.

  • hidden_states (tuple(torch.Tensor), isteğe bağlı, output_hidden_states=True geçirildiğinde veya config.output_hidden_states=True olduğunda döndürülür) — torch.Tensor (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.

  • attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

Örnek:

>>> from transformers import AutoProcessor, HubertModel
>>> from datasets import load_dataset

>>> processor = AutoProcessor.from_pretrained("facebook/hubert-large-ls960-ft")
>>> model = HubertModel.from_pretrained("facebook/hubert-large-ls960-ft")


>>> def map_to_array(example):
...     example["speech"] = example["audio"]["array"]
...     return example


>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> ds = ds.map(map_to_array)

>>> input_values = processor(ds["speech"][0], return_tensors="pt").input_values  # Batch size 1
>>> hidden_states = model(input_values).last_hidden_state

HubertForCTC

sınıf transformers.HubertForCTC

< >

( config: HubertConfigtarget_lang: str | None = None )

Parametreler

  • config (HubertConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.
  • target_lang (str, isteğe bağlı) — Adaptör ağırlıklarının dil kimliği. Adaptör ağırlıkları adapter..safetensors veya adapter..bin biçiminde saklanır. Adaptörler içeren bir HubertForCTC örneği kullanıldığında geçerlidir. Varsayılan olarak ‘eng’ kullanılır.

Üzerinde Bağlantıcı Geçici Sınıflandırma (CTC) için language modeling kafası bulunan Hubert Modeli.

Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

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)

Parametreler

  • input_values (torch.Tensor, şekli (batch_size, sequence_length), isteğe bağlı) — Giriş ham ses dalgasının ondalık sayı değerleri. Değerler, bir .flac veya .wav ses dosyasını list[float] türünde bir diziye, numpy.ndarray veya torch.Tensor içine yükleyerek elde edilebilir; örneğin örneğin torchcodec kütüphanesi (pip install torchcodec) veya soundfile kütüphanesi (pip install soundfile) üzerinden. Diziyi input_values için hazırlamak için, torch.Tensor türünde bir tensöre dönüştürme ve dolgu (padding) işlemleri için AutoProcessor kullanılmalıdır. Ayrıntılar için Wav2Vec2Processor.call() bölümüne bakın.
  • attention_mask (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.

    Dikkat maskeleri nedir?

  • labels (torch.LongTensor, şekli (batch_size, target_length), isteğe bağlı) — Bağlantılı zaman sınıflandırması için etiketler. Not: target_length, çıktı logitlerinin dizi uzunluğundan küçük veya eşit olmalıdır. İndeksler [-100, 0, ..., config.vocab_size - 1] aralığından seçilir. -100 olarak ayarlanan tüm etiketler yok sayılır (maske uygulanır); kayıp yalnızca [0, ..., config.vocab_size - 1] aralığındaki etiketler için hesaplanır.

Dönüş değeri

CausalLMOutput veya tuple(torch.Tensor)

Bir CausalLMOutput veya bir torch.Tensor demeti (return_dict=False geçirildiğinde veya config.return_dict=False olduğunda), yapılandırmaya (HubertConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

HubertForCTC forward metodu, __call__ özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine Module örneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

  • loss (torch.Tensor, şekli (1,), isteğe bağlı, labels sağlandığında döndürülür) — Dil modelleme kaybı (sonraki token tahmini için).

  • logits (torch.Tensor, şekli (batch_size, sequence_length, config.vocab_size)) — Dil modelleme başlığının tahmin puanları (SoftMax öncesi her sözlük jetonu için puanlar).

  • hidden_states (tuple(torch.Tensor), isteğe bağlı, output_hidden_states=True geçirildiğinde veya config.output_hidden_states=True olduğunda döndürülür) — torch.Tensor (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.

  • attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

Örnek:

>>> from transformers import AutoProcessor, HubertForCTC
>>> 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("facebook/hubert-base-ls960")
>>> model = HubertForCTC.from_pretrained("facebook/hubert-base-ls960")

>>> # 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)
...

HubertForSequenceClassification

sınıf transformers.HubertForSequenceClassification

< >

( config: HubertConfig )

Parametreler

  • config (HubertConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.

Üstünde bir dizi sınıflandırma başlığı (toplanmış çıktı üzerinde doğrusal bir katman) bulunan ve SUPERB Keyword Spotting gibi görevler için kullanılan Hubert Modeli.

Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

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)

Parametreler

  • input_values (torch.Tensor, şekli (batch_size, sequence_length)) — Giriş ham ses dalgasının ondalık sayı değerleri. Değerler, bir .flac veya .wav ses dosyasını list[float] türünde bir diziye, numpy.ndarray veya torch.Tensor içine yükleyerek elde edilebilir, örneğin torchcodec kütüphanesi (pip install torchcodec) veya soundfile kütüphanesi (pip install soundfile) aracılığıyla. Diziyi input_values için hazırlamak için, dolgu ve torch.Tensor türünde bir tensöre dönüştürme işlemleri için AutoProcessor kullanılmalıdır. Ayrıntılar için HubertProcessor.__call__ bölümüne bakın.
  • attention_mask (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.

    Dikkat maskeleri nedir?

  • labels (torch.LongTensor, şekli (batch_size,), isteğe bağlı) — Sınıflandırma/geri dönüş kaybını hesaplamak için etiketler. Endeksler [0, ..., config.num_labels - 1] aralığında olmalıdır. config.num_labels == 1 ise bir geri dönüş kaybı (Ortalama Kare kaybı) hesaplanır, config.num_labels > 1 ise bir sınıflandırma kaybı (Çapraz Entropi) hesaplanır.

Dönüş değeri

SequenceClassifierOutput veya tuple(torch.Tensor)

Bir SequenceClassifierOutput veya torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (HubertConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

HubertForSequenceClassification forward metodu, __call__ özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine Module örneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

  • loss (torch.Tensor, şekli (1,), isteğe bağlı, labels sağlandığında döndürülür) — Sınıflandırma (config.num_labels==1 ise regresyon) kaybı.

  • logits (torch.Tensor, şekli (batch_size, config.num_labels)) — Sınıflandırma (veya config.num_labels==1 ise regresyon) puanları (SoftMax öncesi).

  • hidden_states (tuple(torch.Tensor), isteğe bağlı, output_hidden_states=True geçirildiğinde veya config.output_hidden_states=True olduğunda döndürülür) — torch.Tensor (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.

  • attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

Tek etiketli sınıflandırma örneği:

>>> import torch
>>> from transformers import AutoTokenizer, HubertForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/hubert-base-ls960")
>>> model = HubertForSequenceClassification.from_pretrained("facebook/hubert-base-ls960")

>>> 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 = HubertForSequenceClassification.from_pretrained("facebook/hubert-base-ls960", num_labels=num_labels)

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

Çok etiketli sınıflandırma örneği:

>>> import torch
>>> from transformers import AutoTokenizer, HubertForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/hubert-base-ls960")
>>> model = HubertForSequenceClassification.from_pretrained("facebook/hubert-base-ls960", 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 = HubertForSequenceClassification.from_pretrained(
...     "facebook/hubert-base-ls960", 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
Update on GitHub