Transformers documentation
HuBERT
Model ini dipublikasikan di HF papers pada 2021-06-14 dan disumbangkan ke Hugging Face Transformers pada 2021-06-16.
HuBERT
HuBERT adalah model ucapan self-supervised untuk mengklasterkan label target yang selaras untuk kerugian prediksi serupa BERT dan menerapkan kerugian prediksi hanya di wilayah yang dimasker untuk memaksa model mempelajari pemodelan akustik dan bahasa di atas input kontinu. Model ini mengatasi tantangan berupa beberapa unit suara per ucapan, tidak adanya leksikon selama pra-pelatihan, dan unit suara dengan panjang variabel tanpa segmentasi eksplisit.
Anda dapat menemukan semua checkpoint HuBERT asli di bawah koleksi HuBERT.
Model ini disumbangkan oleh patrickvonplaten.
Klik pada model HuBERT di bilah sisi kanan untuk melihat lebih banyak contoh cara menerapkan HuBERT ke berbagai tugas audio.
Contoh di bawah ini menunjukkan cara mentranskripsi ucapan menjadi teks secara otomatis dengan Pipeline atau kelas 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")import torch
from datasets import load_dataset
from transformers import AutoModelForCTC, AutoProcessor
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", 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])Kuantisasi
Quantization mengurangi beban memori model besar dengan merepresentasikan bobot dalam presisi yang lebih rendah. Lihat ringkasan Quantization untuk backend quantization lain yang tersedia.
Contoh di bawah menggunakan bitsandbytes untuk mengkuantisasi bobot menjadi 4-bit.
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])Catatan
- Model HuBERT mengharapkan input audio mentah sebagai array float 1D yang disampel pada 16kHz.
HubertConfig
kelas transformers.HubertConfig
< 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 = 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 )
Parameter
- vocab_size (
int, opsional, default32) — Ukuran kosakata model. Menentukan jumlah token berbeda yang dapat direpresentasikan olehinput_ids. - hidden_size (
int, opsional, default768) — Dimensi dari representasi tersembunyi. - num_hidden_layers (
int, opsional, default12) — Jumlah lapisan tersembunyi dalam decoder Transformer. - num_attention_heads (
int, opsional, default12) — Jumlah attention head untuk setiap lapisan attention di decoder Transformer. - intermediate_size (
int, opsional, default3072) — Dimensi representasi MLP. - hidden_act (
str, opsional, defaultnyagelu) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya,"gelu","relu","silu", dan sebagainya. - hidden_dropout (
Union[float, int], opsional, default0.1) — Probabilitas dropout untuk semua lapisan fully connected di embeddings, encoder, dan pooler. - activation_dropout (
Union[float, int], opsional, defaultnya0.1) — Rasio dropout untuk aktivasi di dalam lapisan fully connected. - attention_dropout (
Union[float, int], opsional, default0.1) — Rasio dropout untuk probabilitas perhatian. - feat_proj_layer_norm (
bool, opsional, defaultnyaTrue) — Apakah akan menerapkan LayerNorm ke output dari feature encoder. - feat_proj_dropout (
float, opsional, default 0.0) — Probabilitas dropout untuk output dari encoder fitur. - final_dropout (
float, opsional, default 0.1) — Probabilitas dropout untuk lapisan proyeksi akhir dari Wav2Vec2ForCTC. - layerdrop (
Union[float, int], opsional, default0.1) — Probabilitas LayerDrop. Lihat [makalah LayerDrop](lihat https://huggingface.co/papers/1909.11556) untuk detail lebih lanjut. - initializer_range (
float, opsional, defaultnya0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot. - layer_norm_eps (
float, opsional, defaultnya1e-05) — Epsilon yang digunakan oleh lapisan normalisasi lapisan. - feat_extract_norm (
str, opsional, default"group") — Norm yang diterapkan pada lapisan konvolusional 1D di feature encoder. Salah satu dari"group"untuk group normalization hanya pada lapisan konvolusional 1D pertama atau"layer"untuk layer normalization pada semua lapisan konvolusional 1D. - 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], opsional, defaultnya(512, 512, 512, 512, 512, 512, 512)) — Tuple dari bilangan bulat yang mendefinisikan jumlah saluran input dan output dari setiap lapisan konvolusional 1D dalam feature encoder. Panjang dari conv_dim mendefinisikan jumlah lapisan konvolusional 1D. - conv_stride (
tuple[int], opsional, default(5, 2, 2, 2, 2, 2, 2)) — Tuple dari bilangan bulat yang mendefinisikan stride dari setiap lapisan konvolusional 1D dalam feature encoder. Panjang dari conv_stride menentukan jumlah lapisan konvolusional dan harus sesuai dengan panjang dari conv_dim. - conv_kernel (
tuple[int], opsional, default(10, 3, 3, 3, 3, 3, 3)) — Tuple dari bilangan bulat yang mendefinisikan ukuran kernel dari setiap lapisan konvolusional 1D dalam feature encoder. Panjang dari conv_kernel mendefinisikan jumlah lapisan konvolusional dan harus sesuai dengan panjang dari conv_dim. - conv_bias (
bool, opsional, defaultnyaFalse) — Apakah lapisan konvolusional 1D memiliki bias. - num_conv_pos_embeddings (
int, opsional, default 128) — Jumlah embedding posisi konvolusional. Menentukan ukuran kernel dari lapisan embedding posisi konvolusional 1D. - num_conv_pos_embedding_groups (
int, opsional, default 16) — Jumlah grup dari lapisan embedding posisional konvolusional 1D. - conv_pos_batch_norm (
bool, opsional, defaultFalse) — Apakah akan menggunakan batch norm alih-alih weight norm di conv_pos - do_stable_layer_norm (
bool, opsional, defaultFalse) — Apakah menerapkan arsitektur layer norm stabil pada encoder Transformer.do_stable_layer_norm is Trueberarti menerapkan layer norm sebelum lapisan attention, sedangkando_stable_layer_norm is Falseberarti menerapkan layer norm setelah lapisan attention. - apply_spec_augment (
bool, opsional, defaultTrue) — Apakah akan menerapkan augmentasi data SpecAugment pada output dari feature encoder. Untuk referensi, lihat 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 ifapply_spec_augment is True`. - mask_time_length (
int, opsional, default 10) — Panjang rentang vektor sepanjang sumbu waktu. - mask_time_min_masks (
int, opsional, default 2), — Jumlah minimum masker dengan panjangmask_feature_lengthyang dihasilkan di sepanjang sumbu waktu, untuk setiap langkah waktu, tanpa memperhatikanmask_feature_prob. Hanya relevan jika ”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 ifapply_spec_augment is True`. - mask_feature_prob (
Union[float, int], opsional, default0.0) — Persentase (antara 0 dan 1) dari semua vektor fitur di sepanjang sumbu fitur yang akan di-mask. Prosedur masking menghasilkanmask_feature_prob*len(feature_axis)/mask_time_lengthmask independen di sepanjang sumbu tersebut. Jika beralasan dari probabilitas setiap vektor fitur untuk dipilih sebagai awal dari rentang vektor yang akan di-mask, mask_feature_prob seharusnyaprob_vector_start*mask_feature_length. Perhatikan bahwa tumpang tindih dapat mengurangi persentase vektor yang di-mask secara aktual. Hal ini hanya relevan jikaapply_spec_augmentadalahTrue. - mask_feature_length (
int, opsional, default 10) — Panjang rentang vektor di sepanjang sumbu fitur. - mask_feature_min_masks (
int, opsional, default 0), — Jumlah minimum masker dengan panjangmask_feature_lengthyang dihasilkan di sepanjang sumbu fitur, setiap langkah waktu, terlepas darimask_feature_prob. Hanya relevan jika ”mask_feature_prob*len(feature_axis)/mask_feature_length < mask_feature_min_masks” - ctc_loss_reduction (
str, opsional, defaultnya"sum") — Menentukan reduksi yang diterapkan pada output daritorch.nn.CTCLoss. Hanya relevan saat melatih instans dari HubertForCTC. - ctc_loss_reduction (
str, opsional, defaultnyasum) — Menentukan reduksi yang diterapkan pada output daritorch.nn.CTCLoss. Hanya relevan saat pelatihan. - ctc_zero_infinity (
bool, opsional, defaultFalse) — Apakah akan menolkan (zero) kerugian (loss) tak hingga dan gradien terkait daritorch.nn.CTCLoss. Kerugian tak hingga terutama terjadi ketika input terlalu pendek untuk diselaraskan dengan target. Hanya relevan saat melatih instance dari HubertForCTC. - use_weighted_layer_sum (
bool, opsional, defaultFalse) — Apakah akan menggunakan rata-rata tertimbang dari output lapisan dengan bobot yang dipelajari. Hanya relevan saat menggunakan instance dari HubertForSequenceClassification. - classifier_proj_size (
int, opsional, default 256) — Dimensi proyeksi sebelum token mean-pooling untuk klasifikasi. - pad_token_id (
int, opsional, default0) — ID token yang digunakan untuk padding dalam kosakata. - bos_token_id (
int, opsional, default1) — ID token yang digunakan untuk awal aliran (beginning-of-stream) dalam kosakata. - eos_token_id (
Union[int, list[int]], opsional, default2) — ID token yang digunakan untuk end-of-stream dalam kosakata.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari HubertModel. Kelas ini digunakan untuk membuat instans model Hubert berdasarkan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari facebook/hubert-base-ls960
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
Contoh:
>>> 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.configHubertModel
kelas transformers.HubertModel
< source >( config: HubertConfig )
Parameter
- config (HubertConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model Hubert polos yang menghasilkan hidden-states mentah tanpa head spesifik di atasnya.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( 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)
Parameter
- input_values (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Nilai float dari waveform ucapan mentah input. Nilai dapat diperoleh dengan memuat file audio.flacatau.wavke dalam array bertipelist[float],numpy.ndarrayatautorch.Tensor, misalnya melalui pustaka torchcodec (pip install torchcodec) atau pustaka soundfile (pip install soundfile). Untuk menyiapkan array menjadiinput_values, gunakan AutoProcessor untuk padding dan konversi menjadi tensor bertipetorch.Tensor. Lihat Wav2Vec2Processor.call() untuk detailnya. - attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- mask_time_indices (
torch.BoolTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks untuk mem-mask fitur yang diekstrak untuk contrastive loss. Saat dalam mode pelatihan, model belajar memprediksi fitur yang diekstrak dan di-mask dalam ruang config.proj_codevector_dim. - output_attentions (
bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihatattentionsdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - output_hidden_states (
bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihathidden_statesdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - return_dict (
bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.
Mengembalikan
BaseModelOutput atau tuple(torch.Tensor)
A BaseModelOutput atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (HubertConfig) dan input.
Metode forward dari HubertModel menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
last_hidden_state (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size)) — Urutan hidden-states pada keluaran lapisan terakhir model.hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
Contoh:
>>> 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_stateHubertForCTC
kelas transformers.HubertForCTC
< source >( config: HubertConfigtarget_lang: str | None = None )
Parameter
- config (HubertConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
- target_lang (
str, opsional) — ID bahasa dari bobot adapter. Bobot adapter disimpan dalam format adapter..safetensors atau adapter. .bin. Hanya relevan saat menggunakan instance HubertForCTC dengan adapter. Menggunakan ‘eng’ secara default.
Model Hubert dengan kepala language modeling di atasnya untuk Connectionist Temporal Classification (CTC).
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( 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)
Parameter
- input_values (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Nilai float dari waveform ucapan mentah input. Nilai dapat diperoleh dengan memuat file audio.flacatau.wavke dalam array bertipelist[float],numpy.ndarrayatautorch.Tensor, misalnya melalui pustaka torchcodec (pip install torchcodec) atau pustaka soundfile (pip install soundfile). Untuk menyiapkan array menjadiinput_values, gunakan AutoProcessor untuk padding dan konversi menjadi tensor bertipetorch.Tensor. Lihat Wav2Vec2Processor.call() untuk detailnya. - attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- labels (
torch.LongTensordengan bentuk(batch_size, target_length), opsional) — Label untuk connectionist temporal classification. Perhatikan bahwatarget_lengthharus lebih kecil atau sama dengan panjang sekuens dari output logits. Indeks dipilih dalam[-100, 0, ..., config.vocab_size - 1]. Semua label yang disetel ke-100diabaikan (diberi mask), loss hanya dihitung untuk label dalam[0, ..., config.vocab_size - 1].
Mengembalikan
CausalLMOutput atau tuple(torch.Tensor)
A CausalLMOutput atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (HubertConfig) dan input.
Metode forward HubertForCTC menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
loss (
torch.Tensordengan bentuk(1,), opsional, dikembalikan saatlabelsdisediakan) — Loss pemodelan bahasa (untuk prediksi token berikutnya).logits (
torch.Tensordengan bentuk(batch_size, sequence_length, config.vocab_size)) — Skor prediksi dari kepala pemodelan bahasa (skor untuk setiap token kosakata sebelum SoftMax).hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
Contoh:
>>> 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
kelas transformers.HubertForSequenceClassification
< source >( config: HubertConfig )
Parameter
- config (HubertConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model Hubert dengan kepala klasifikasi urutan di atasnya (lapisan linear di atas output yang dipool) untuk tugas seperti SUPERB Keyword Spotting.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( 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)
Parameter
- input_values (
torch.Tensordengan bentuk(batch_size, sequence_length)) — Nilai float dari waveform ucapan mentah input. Nilai dapat diperoleh dengan memuat file audio.flacatau.wavke dalam array bertipelist[float],numpy.ndarrayatautorch.Tensor, misalnya melalui pustaka torchcodec (pip install torchcodec) atau pustaka soundfile (pip install soundfile). Untuk menyiapkan array menjadiinput_values, gunakan AutoProcessor untuk padding dan konversi menjadi tensor bertipetorch.Tensor. LihatHubertProcessor.__call__untuk detailnya. - attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- labels (
torch.LongTensordengan bentuk(batch_size,), opsional) — Label untuk menghitung loss klasifikasi/regresi urutan. Indeks harus berada dalam[0, ..., config.num_labels - 1]. Jikaconfig.num_labels == 1, loss regresi dihitung (Mean-Square loss). Jikaconfig.num_labels > 1, loss klasifikasi dihitung (Cross-Entropy).
Mengembalikan
SequenceClassifierOutput atau tuple(torch.Tensor)
A SequenceClassifierOutput atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (HubertConfig) dan input.
Metode forward dari HubertForSequenceClassification menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
loss (
torch.Tensordengan bentuk(1,), opsional, dikembalikan saatlabelsdisediakan) — Loss klasifikasi (atau regresi jika config.num_labels==1).logits (
torch.Tensordengan bentuk(batch_size, config.num_labels)) — Skor klasifikasi (atau regresi jika config.num_labels==1) (sebelum SoftMax).hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
Contoh klasifikasi label tunggal:
>>> 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)
...Contoh klasifikasi multi-label:
>>> 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