Transformers documentation
Model Speech Encoder Decoder
Model ini dipublikasikan di HF papers pada 2021-04-14 dan disumbangkan ke Hugging Face Transformers pada 2021-09-01.
Model Speech Encoder Decoder
SpeechEncoderDecoderModel dapat digunakan untuk menginisialisasi model speech-to-text dengan model autoencoding speech pretrained apa pun sebagai encoder (misalnya Wav2Vec2, Hubert) dan model autoregressive pretrained apa pun sebagai decoder.
Efektivitas inisialisasi model dari urutan ucapan ke urutan teks dengan checkpoint pralatih untuk pengenalan ucapan dan penerjemahan ucapan telah misalnya ditunjukkan dalam Large-Scale Self- and Semi-Supervised Learning for Speech Translation oleh Changhan Wang, Anne Wu, Juan Pino, Alexei Baevski, Michael Auli, Alexis Conneau.
Contoh cara menggunakan SpeechEncoderDecoderModel untuk inferensi dapat dilihat pada decoder Speech2Text2.
Menginisialisasi SpeechEncoderDecoderModel secara acak dari konfigurasi model
SpeechEncoderDecoderModel dapat diinisialisasi secara acak dari konfigurasi encoder dan decoder. Pada contoh berikut, kami menunjukkan cara melakukannya menggunakan konfigurasi Wav2Vec2Model bawaan untuk encoder
dan konfigurasi BertForCausalLM bawaan untuk decoder.
from transformers import BertConfig, SpeechEncoderDecoderConfig, SpeechEncoderDecoderModel, Wav2Vec2Config
config_encoder = Wav2Vec2Config()
config_decoder = BertConfig()
config = SpeechEncoderDecoderConfig.from_encoder_decoder_configs(config_encoder, config_decoder)
model = SpeechEncoderDecoderModel(config=config)Menginisialisasi SpeechEncoderDecoderModel dari encoder pretrained dan decoder pretrained
SpeechEncoderDecoderModel dapat diinisialisasi dari checkpoint encoder pretrained dan checkpoint decoder pretrained. Perhatikan bahwa model speech berbasis Transformer yang sudah pretrained, misalnya Wav2Vec2, Hubert dapat berfungsi sebagai encoder, dan model auto-encoding pretrained, misalnya BERT, model bahasa kausal pretrained, misalnya GPT2, serta bagian decoder pretrained dari model sequence-to-sequence, misalnya decoder dari BART, dapat digunakan sebagai decoder.
Tergantung pada arsitektur yang Anda pilih sebagai decoder, lapisan cross-attention mungkin diinisialisasi secara acak.
Menginisialisasi SpeechEncoderDecoderModel dari checkpoint encoder dan decoder pretrained memerlukan model untuk di-fine-tune pada tugas downstream, seperti yang telah ditunjukkan dalam artikel blog Warm-starting-encoder-decoder.
Untuk melakukannya, kelas SpeechEncoderDecoderModel menyediakan metode SpeechEncoderDecoderModel.from_encoder_decoder_pretrained().
from transformers import SpeechEncoderDecoderModel
model = SpeechEncoderDecoderModel.from_encoder_decoder_pretrained(
"facebook/hubert-large-ll60k", "google-bert/bert-base-uncased"
)Memuat checkpoint SpeechEncoderDecoderModel yang sudah ada dan melakukan inferensi
Untuk memuat checkpoint hasil fine-tuning dari kelas SpeechEncoderDecoderModel, SpeechEncoderDecoderModel menyediakan metode from_pretrained(...) sama seperti arsitektur model lainnya di Transformers.
Untuk melakukan inferensi, gunakan metode generate, yang memungkinkan Anda menghasilkan teks secara autoregresif. Metode ini mendukung berbagai bentuk decoding, seperti greedy, beam search, dan multinomial sampling.
from transformers import Wav2Vec2Processor, SpeechEncoderDecoderModel
from datasets import load_dataset
import torch
# load a fine-tuned speech translation model and corresponding processor
model = SpeechEncoderDecoderModel.from_pretrained("facebook/wav2vec2-xls-r-300m-en-to-15", device_map="auto")
processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-xls-r-300m-en-to-15")
# let's perform inference on a piece of English speech (which we'll translate to German)
ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
input_values = processor(ds[0]["audio"]["array"], return_tensors="pt").to(model.device).input_values
# autoregressively generate transcription (uses greedy decoding by default)
generated_ids = model.generate(input_values)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(generated_text)
Mr. Quilter ist der Apostel der Mittelschicht und wir freuen uns, sein Evangelium willkommen heißen zu können.Pelatihan
Setelah model dibuat, model tersebut dapat dihaluskan (fine-tuned) serupa dengan BART, T5, atau model encoder-decoder lainnya pada dataset pasangan (speech, text).
Seperti yang dapat Anda lihat, hanya 2 input yang diperlukan oleh model untuk menghitung loss: input_values (yaitu input speech) dan labels (yaitu input_ids dari urutan target yang telah dienkod).
from datasets import load_dataset
from transformers import AutoFeatureExtractor, AutoTokenizer, SpeechEncoderDecoderModel
encoder_id = "facebook/wav2vec2-base-960h" # acoustic model encoder
decoder_id = "google-bert/bert-base-uncased" # text decoder
feature_extractor = AutoFeatureExtractor.from_pretrained(encoder_id)
tokenizer = AutoTokenizer.from_pretrained(decoder_id)
# Combine pre-trained encoder and pre-trained decoder to form a Seq2Seq model
model = SpeechEncoderDecoderModel.from_encoder_decoder_pretrained(encoder_id, decoder_id)
model.config.decoder_start_token_id = tokenizer.cls_token_id
model.config.pad_token_id = tokenizer.pad_token_id
# load an audio input and pre-process (normalise mean/std to 0/1)
ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
input_values = feature_extractor(ds[0]["audio"]["array"], return_tensors="pt").to(model.device).input_values
# load its corresponding transcription and tokenize to generate labels
labels = tokenizer(ds[0]["text"], return_tensors="pt").to(model.device).input_ids
# the forward function automatically creates the correct decoder_input_ids
loss = model(input_values=input_values, labels=labels).loss
loss.backward()SpeechEncoderDecoderConfig
kelas transformers.SpeechEncoderDecoderConfig
< 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 = 0id2label: 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 = Noneis_encoder_decoder: bool | None = Trueencoder: transformers.configuration_utils.PreTrainedConfig | dict | None = Nonedecoder: transformers.configuration_utils.PreTrainedConfig | dict | None = None )
Parameter
- is_encoder_decoder (
bool, opsional, defaultnyaTrue) — Apakah model digunakan sebagai encoder/decoder atau tidak. - encoder (
Union[~configuration_utils.PreTrainedConfig, dict], opsional) — Objek config atau dictionary dari backbone encoder. - decoder (
Union[~configuration_utils.PreTrainedConfig, dict], opsional) — Objek config atau dictionary dari backbone decoder.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari Speech Encoder DecoderModel. Kelas ini digunakan untuk membuat instance model Speech Encoder Decoder sesuai dengan argumen yang ditentukan, sehingga mendefinisikan arsitektur model. Membuat instance konfigurasi dengan nilai default akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
Contoh:
>>> from transformers import BertConfig, Wav2Vec2Config, SpeechEncoderDecoderConfig, SpeechEncoderDecoderModel
>>> # Initializing a Wav2Vec2 & BERT style configuration
>>> config_encoder = Wav2Vec2Config()
>>> config_decoder = BertConfig()
>>> config = SpeechEncoderDecoderConfig(encoder=config_encoder, decoder=config_decoder)
>>> # Initializing a Wav2Vec2Bert model from a Wav2Vec2 & google-bert/bert-base-uncased style configurations
>>> model = SpeechEncoderDecoderModel(config=config)
>>> # Accessing the model configuration
>>> config_encoder = model.config.encoder
>>> config_decoder = model.config.decoder
>>> # set decoder config to causal lm
>>> config_decoder.is_decoder = True
>>> config_decoder.add_cross_attention = True
>>> # Saving the model, including its configuration
>>> model.save_pretrained("my-model")
>>> # loading model and config from pretrained folder
>>> encoder_decoder_config = SpeechEncoderDecoderConfig.from_pretrained("my-model")
>>> model = SpeechEncoderDecoderModel.from_pretrained("my-model", config=encoder_decoder_config)from_encoder_decoder_configs
< source >( encoder_config: PreTrainedConfigdecoder_config: PreTrainedConfig**kwargs ) → SpeechEncoderDecoderConfig
Mengembalikan
Instans dari objek konfigurasi
Instansiasi SpeechEncoderDecoderConfig (atau kelas turunan) dari konfigurasi model encoder yang telah dilatih sebelumnya dan konfigurasi model decoder.
SpeechEncoderDecoderModel
kelas transformers.SpeechEncoderDecoderModel
< source >( config: transformers.configuration_utils.PreTrainedConfig | None = Noneencoder: transformers.modeling_utils.PreTrainedModel | None = Nonedecoder: transformers.modeling_utils.PreTrainedModel | None = None )
Parameter
- config (PreTrainedConfig, opsional) — 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.
- encoder (
PreTrainedModel, opsional) — Model encoder yang akan digunakan. - decoder (
PreTrainedModel, opsional) — Model decoder yang akan digunakan.
Model Speech Encoder Decoder 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 >( inputs: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Noneencoder_outputs: tuple[torch.Tensor] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Noneinput_values: typing.Optional[torch.Tensor] = Noneinput_features: typing.Optional[torch.Tensor] = Nonereturn_dict: bool | None = None**kwargs ) → Seq2SeqLMOutput or tuple(torch.Tensor)
Parameter
- inputs (
torch.Tensordengan bentuk(batch_size, sequence_length)atau(batch_size, sequence_length, feature_dim), opsional) — Nilai float dari gelombang suara mentah atau fitur suara 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 menjadiinputs, gunakan Wav2Vec2Processor atau Speech2TextProcessor untuk padding dan konversi menjadi tensor bertipetorch.Tensor. - 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.
- decoder_input_ids (
torch.LongTensordengan bentuk(batch_size, target_sequence_length), opsional) — Indeks token dari urutan input decoder dalam kosakata. Indeks dapat diperoleh menggunakan PreTrainedTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya. Apa itu input ID? Jika past_key_values digunakan, secara opsional hanya decoder_input_ids terakhir yang perlu diinput (lihat past_key_values). Untuk pelatihan, decoder_input_ids dibuat secara otomatis oleh model dengan menggeser label ke kanan, mengganti -100 dengan pad_token_id, dan menambahkan decoder_start_token_id di depannya.Indeks dapat diperoleh menggunakan PreTrainedTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
Jika
past_key_valuesdigunakan, secara opsional hanyadecoder_input_idsterakhir yang perlu diinput (lihatpast_key_values).Untuk pelatihan,
decoder_input_idsdibuat secara otomatis oleh model dengan menggeserlabelske kanan, mengganti -100 denganpad_token_id, dan menambahkandecoder_start_token_iddi awal. - decoder_attention_mask (
torch.BoolTensordengan bentuk(batch_size, target_sequence_length), opsional) — Perilaku default: menghasilkan tensor yang mengabaikan token pad didecoder_input_ids. Mask kausal juga akan digunakan secara default. - encoder_outputs (
tuple[torch.Tensor], opsional) — Tuple terdiri dari (last_hidden_state, opsional:hidden_states, opsional:attentions)last_hidden_statedengan bentuk(batch_size, sequence_length, hidden_size), opsional) adalah rangkaian hidden-states pada keluaran lapisan terakhir encoder. Digunakan dalam cross-attention decoder. - past_key_values (
~cache_utils.Cache, opsional) — Hidden-states yang sudah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan untuk mempercepat decoding berurutan. Ini biasanya terdiri daripast_key_valuesyang dikembalikan oleh model pada tahap decoding sebelumnya, ketikause_cache=Trueatauconfig.use_cache=True.Hanya instance Cache yang diizinkan sebagai input, lihat panduan kv cache kami. Jika tidak ada
past_key_valuesyang diteruskan, DynamicCache akan diinisialisasi secara default.Model akan menghasilkan format cache yang sama dengan yang diberikan sebagai input.
Jika
past_key_valuesdigunakan, pengguna diharapkan hanya memasukkaninput_idsyang belum diproses (yang tidak memiliki state past key value yang diberikan ke model ini) dengan bentuk(batch_size, unprocessed_length)alih-alih semuainput_idsdengan bentuk(batch_size, sequence_length). - decoder_inputs_embeds (
torch.Tensordengan bentuk(batch_size, target_sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskandecoder_input_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksdecoder_input_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - labels (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Label untuk menghitung kerugian pemodelan bahasa tersembunyi (masked language modeling loss) untuk decoder. Indeks harus berada dalam[-100, 0, ..., config.vocab_size](lihat docstringinput_ids). Token dengan indeks yang disetel ke-100diabaikan (ditutupi), kerugian hanya dihitung untuk token dengan label dalam[0, ..., config.vocab_size] - use_cache (
bool, opsional) — Jika diset keTrue, state kunci-nilaipast_key_valuesakan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihatpast_key_values). - 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. - input_values (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Nilai float dari waveform ucapan mentah input. Nilai dapat diperoleh dengan memuat file audio .flac atau .wav ke dalam array bertipe list[float] atau numpy.ndarray, misalnya melalui pustaka torchcodec (pip install torchcodec) atau pustaka soundfile (pip install soundfile). Untuk menyiapkan array menjadi input_values, gunakan Wav2Vec2Processor untuk padding dan konversi menjadi tensor bertipe torch.Tensor. Lihat Wav2Vec2Processor.call() untuk detailnya. - input_features (
torch.Tensordengan bentuk(batch_size, sequence_length, feature_dim), opsional) — Tensor yang sesuai dengan fitur audio input. Fitur audio dapat diperoleh menggunakanfeature_extractor_class. Lihatfeature_extractor_class.__call__untuk detailnya (processor_classmenggunakanfeature_extractor_classuntuk memproses audio). - return_dict (
bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.
Mengembalikan
Seq2SeqLMOutput atau tuple(torch.Tensor)
Sebuah Seq2SeqLMOutput atau tuple dari
torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (SpeechEncoderDecoderConfig) dan input.
Metode forward dari SpeechEncoderDecoderModel 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.logits (
torch.Tensordengan bentuk(batch_size, sequence_length, config.vocab_size)) — Skor prediksi dari kepala pemodelan bahasa (skor untuk setiap token kosakata sebelum SoftMax).past_key_values (
EncoderDecoderCache, opsional, dikembalikan ketikause_cache=Truediteruskan atau ketikaconfig.use_cache=True) — Ini adalah instance EncoderDecoderCache. Untuk detail lebih lanjut, lihat panduan kv cache kami.Mengandung hidden-states yang telah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan (lihat input
past_key_values) untuk mempercepat decoding berurutan.decoder_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 dari decoder pada output setiap layer ditambah output embedding awal.
decoder_attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian dari decoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.
cross_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 dari lapisan cross-attention decoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala cross-attention.
encoder_last_hidden_state (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Urutan hidden-states pada keluaran lapisan terakhir dari encoder model.encoder_hidden_states (
tuple(torch.Tensor), opsional, dikembalikan ketikaoutput_hidden_states=Truedilewatkan atau ketikaconfig.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 dari encoder pada output setiap layer ditambah output embedding awal.
encoder_attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian dari encoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.
Contoh:
>>> from transformers import SpeechEncoderDecoderModel, AutoProcessor
>>> from datasets import load_dataset
>>> import torch
>>> processor = AutoProcessor.from_pretrained("facebook/wav2vec2-xls-r-300m-en-to-15")
>>> model = SpeechEncoderDecoderModel.from_pretrained("facebook/wav2vec2-xls-r-300m-en-to-15")
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> input_values = processor(ds[0]["audio"]["array"], return_tensors="pt").input_values
>>> # Inference: Translate English speech to German
>>> generated = model.generate(input_values)
>>> decoded = processor.batch_decode(generated, skip_special_tokens=True)[0]
>>> decoded
'Mr. Quilter ist der Apostel der Mittelschicht und wir freuen uns, sein Evangelium willkommen heißen zu können.'
>>> # Training: Train model on English transcription
>>> labels = processor(text=ds[0]["text"], return_tensors="pt").input_ids
>>> loss = model(input_values, labels=labels).loss
>>> loss.backward()from_encoder_decoder_pretrained
< source >( encoder_pretrained_model_name_or_path: str | None = Nonedecoder_pretrained_model_name_or_path: str | None = None*model_args**kwargs )
Parameter
- encoder_pretrained_model_name_or_path (
str, opsional) — Informasi yang diperlukan untuk memulai encoder. Bisa berupa:- String, model id dari model pretrained yang dihosting di dalam model repo di huggingface.co.
- Path ke direktori yang berisi bobot model yang disimpan menggunakan
save_pretrained(), misalnya
./my_model_directory/.
- decoder_pretrained_model_name_or_path (
str, opsional, default keNone) — Informasi yang diperlukan untuk memulai decoder. Bisa berupa:- String, model id dari model pretrained yang dihosting di dalam model repo di huggingface.co.
- Path ke direktori yang berisi bobot model yang disimpan menggunakan
save_pretrained(), misalnya
./my_model_directory/.
- model_args (argumen posisional lainnya, opsional) —
Semua argumen posisional lainnya akan diteruskan ke metode
__init__model yang mendasarinya. - kwargs (sisa kamus argumen kata kunci, opsional) —
Dapat digunakan untuk memperbarui objek konfigurasi (setelah dimuat) dan menginisiasi model (mis.,
output_attentions=True).- Untuk memperbarui konfigurasi encoder, gunakan prefiks encoder_ untuk setiap parameter konfigurasi.
- Untuk memperbarui konfigurasi decoder, gunakan prefiks decoder_ untuk setiap parameter konfigurasi.
- Untuk memperbarui konfigurasi model induk, jangan gunakan awalan untuk setiap parameter konfigurasi.
Berperilaku berbeda tergantung pada apakah
configdisediakan atau dimuat secara otomatis.
Instansiasi encoder dan decoder dari satu atau dua kelas dasar pustaka dari checkpoint model pretrained.
Model secara default diatur dalam mode evaluasi menggunakan model.eval() (modul Dropout dinonaktifkan). Untuk melatih model, Anda perlu terlebih dahulu mengembalikannya ke mode pelatihan dengan model.train().
Contoh:
>>> from transformers import SpeechEncoderDecoderModel
>>> # initialize a wav2vec2bert from a pretrained Wav2Vec2 and a pretrained BERT model. Note that the cross-attention layers will be randomly initialized
>>> model = SpeechEncoderDecoderModel.from_encoder_decoder_pretrained(
... "facebook/wav2vec2-base-960h", "google-bert/bert-base-uncased"
... )
>>> # saving model after fine-tuning
>>> model.save_pretrained("./wav2vec2bert")
>>> # load fine-tuned model
>>> model = SpeechEncoderDecoderModel.from_pretrained("./wav2vec2bert")