Transformers 文件

CLVP

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

CLVP

PyTorch

概述

CLVP(Contrastive Language-Voice Pretrained Transformer,對比語言-語音預訓練 Transformer)模型由 James Betker 在論文 《透過擴充套件實現更好的語音合成》 中提出。

論文摘要如下:

近年來,影像生成領域因自迴歸 Transformer 和 DDPM 的應用而發生了革命性變化。這些方法將影像生成過程建模為逐步的機率過程,並利用大量的計算和資料來學習影像分佈。這種提升效能的方法論不應侷限於影像領域。本文描述了一種將影像生成領域的進展應用於語音合成的方法。其結果是 TorToise —— 一個富有表現力的多音色文字到語音系統。

此模型由 Susnato Dhar 貢獻。原始程式碼可以在這裡找到。

使用技巧

  1. CLVP 是 Tortoise TTS 模型的一個不可或缺的部分。
  2. CLVP 可用於將不同的生成語音候選與提供的文字進行比較,並將最佳的語音標記轉發給擴散模型。
  3. 強烈建議使用 `ClvpModelForConditionalGeneration.generate()` 方法來使用 Tortoise。
  4. 請注意,CLVP 模型期望音訊的取樣率為 22.05 kHz,這與其他期望 16 kHz 的音訊模型不同。

簡要說明:

  • ClvpTokenizer 對文字輸入進行分詞,而 ClvpFeatureExtractor 從期望的音訊中提取對數梅爾頻譜圖。
  • `ClvpConditioningEncoder` 接收這些文字標記和音訊表示,並將它們轉換為基於文字和音訊的條件嵌入。
  • ClvpForCausalLM 使用這些嵌入來生成多個語音候選。
  • 每個語音候選都透過語音編碼器 (ClvpEncoder) 轉換為向量表示,文字編碼器 (ClvpEncoder) 將文字標記轉換為相同的潛在空間。
  • 最後,我們將每個語音向量與文字向量進行比較,以找出哪個語音向量與文字向量最相似。
  • `ClvpModelForConditionalGeneration.generate()` 將上述所有邏輯壓縮到一個方法中。

示例

>>> import datasets
>>> from transformers import ClvpProcessor, ClvpModelForConditionalGeneration

>>> # Define the Text and Load the Audio (We are taking an audio example from HuggingFace Hub using `datasets` library).
>>> text = "This is an example text."

>>> ds = datasets.load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> ds = ds.cast_column("audio", datasets.Audio(sampling_rate=22050))
>>> sample = ds[0]["audio"]

>>> # Define processor and model.
>>> processor = ClvpProcessor.from_pretrained("susnato/clvp_dev")
>>> model = ClvpModelForConditionalGeneration.from_pretrained("susnato/clvp_dev")

>>> # Generate processor output and model output.
>>> processor_output = processor(raw_speech=sample["array"], sampling_rate=sample["sampling_rate"], text=text, return_tensors="pt")
>>> generated_output = model.generate(**processor_output)

ClvpConfig

class transformers.ClvpConfig

< >

( text_config = None speech_config = None decoder_config = None projection_dim = 768 logit_scale_init_value = 2.6592 initializer_factor = 1.0 **kwargs )

引數

  • text_config (dict, 可選) — 用於初始化 CLVP 文字編碼器的配置選項字典。
  • speech_config (dict, 可選) — 用於初始化 CLVP 語音編碼器的配置選項字典。
  • decoder_config (dict, 可選) — 用於初始化 ClvpDecoderConfig 的配置選項字典。
  • projection_dim (int, 可選, 預設為 768) — 文字和語音投影層的維度。
  • logit_scale_init_value (float, 可選, 預設為 2.6592) — *logit_scale* 引數的初始值。預設值根據原始 CLVP 實現使用。
  • initializer_factor (float, 可選, 預設為 1.0) — 用於初始化所有權重矩陣的因子(應保持為 1.0,內部用於初始化測試)。
  • kwargs (可選) — 關鍵字引數字典。

ClvpConfig 是用於儲存 ClvpModelForConditionalGeneration 配置的配置類。它用於根據指定的引數例項化一個 CLVP 模型,定義文字模型、語音模型和解碼器模型的配置。使用預設值例項化一個配置將產生一個與 CLVP susnato/clvp_dev 架構相似的配置。

配置物件繼承自 PretrainedConfig,可用於控制模型輸出。請閱讀 PretrainedConfig 的文件以獲取更多資訊。

示例

>>> from transformers import ClvpConfig, ClvpModelForConditionalGeneration

>>> # Initializing a ClvpConfig with susnato/clvp_dev style configuration
>>> configuration = ClvpConfig()

>>> # Initializing a ClvpModelForConditionalGeneration (with random weights) from the susnato/clvp_dev style configuration
>>> model = ClvpModelForConditionalGeneration(configuration)

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

>>> # We can also initialize a CLVPConfig from a CLVPTextConfig, CLVPSpeechConfig and a CLVPAutoRegressiveConfig
>>> from transformers import ClvpEncoderConfig, ClvpDecoderConfig

>>> # Initializing a CLVP text, CLVP speech and CLVP decoder configuration
>>> config_text = ClvpEncoderConfig()
>>> config_speech = ClvpEncoderConfig()
>>> decoder_config = ClvpDecoderConfig()

>>> config = ClvpConfig.from_sub_model_configs(config_text, config_speech, decoder_config)

from_sub_model_configs

< >

( text_config: ClvpEncoderConfig speech_config: ClvpEncoderConfig decoder_config: ClvpDecoderConfig **kwargs ) ClvpConfig

引數

  • text_config (ClvpEncoderConfig) — 型別為 ClvpEncoderConfig 的文字模型配置。
  • speech_config (ClvpEncoderConfig) — 型別為 ClvpEncoderConfig 的語音模型配置。
  • decoder_config (ClvpDecoderConfig) — 型別為 ClvpDecoderConfig 的解碼器模型配置。

返回

ClvpConfig

一個配置物件的例項

從 CLVP 文字模型配置、CLVP 語音模型配置和 CLVP 解碼器模型配置例項化一個 ClvpConfig (或其派生類)。

ClvpEncoderConfig

class transformers.ClvpEncoderConfig

< >

( vocab_size = 256 hidden_size = 768 intermediate_size = 1536 projection_dim = 768 num_hidden_layers = 20 num_attention_heads = 12 hidden_act = 'gelu' layer_norm_eps = 1e-05 attention_dropout = 0.1 dropout = 0.1 use_rotary_embedding = True use_attention_bias = False summary_type = 'mean' initializer_factor = 1.0 bos_token_id = 255 eos_token_id = 0 **kwargs )

引數

  • vocab_size (int, 可選, 預設為 256) — CLVP 編碼器模型的詞彙表大小。
  • hidden_size (int, 可選, 預設為 768) — 編碼器層和池化層的維度。
  • intermediate_size (int, 可選, 預設為 1536) — Transformer 編碼器中“中間”層(即前饋層)的維度。
  • projection_dim (int, 可選, 預設為 768) — 投影向量的維度。
  • num_hidden_layers (int, 可選, 預設為 20) — Transformer 編碼器中的隱藏層數量。
  • num_attention_heads (int, 可選, 預設為 12) — Transformer 編碼器中每個注意力層的注意力頭數量。
  • hidden_act (strfunction, 可選, 預設為 "gelu") — 編碼器和池化層中的非線性啟用函式(函式或字串)。如果為字串,支援 "gelu""relu""selu""gelu_new""quick_gelu"
  • layer_norm_eps (float, 可選, 預設為 1e-05) — 層歸一化層使用的 epsilon 值。
  • attention_dropout (float, 可選, 預設為 0.1) — 注意力機率的 dropout 比例。
  • dropout (float, 可選, 預設為 0.1) — `ClvpEncoderMLP` 中前饋層的 dropout 比例。
  • use_rotary_embedding (bool, 可選, 預設為 True) — 是否使用旋轉嵌入。
  • use_attention_bias (bool, 可選, 預設為 False) — 是否在自注意力過程中的 Query、Key 和 Value 層中使用偏置。
  • summary_type (str, 可選, 預設為 "mean") — 從 last_hidden_state 中獲取 pooler_output 的策略。支援 "last""first""mean""cls_index"
  • initializer_factor (float, 可選, 預設為 1.0) — 用於初始化所有權重矩陣的因子(應保持為 1.0,內部用於初始化測試)。
  • bos_token_id (int, 可選, 預設為 255) — 序列開始標記 ID。
  • eos_token_id (int, 可選, 預設為 0) — 序列結束標記 ID。

這是用於儲存 ClvpEncoder 配置的配置類。它用於根據指定的引數例項化一個 CLVP 文字或 CLVP 語音編碼器。使用預設值例項化一個配置將產生一個與 CLVP susnato/clvp_dev 架構的編碼器相似的配置。

配置物件繼承自 PretrainedConfig,可用於控制模型輸出。請閱讀 PretrainedConfig 的文件以獲取更多資訊。

示例

>>> from transformers import ClvpEncoderConfig, ClvpEncoder

>>> # Initializing a ClvpEncoderConfig with susnato/clvp_dev style configuration
>>> encoder_configuration = ClvpEncoderConfig()

>>> # Initializing a ClvpEncoder (with random weights) from the susnato/clvp_dev style configuration
>>> model = ClvpEncoder(encoder_configuration)

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

ClvpDecoderConfig

class transformers.ClvpDecoderConfig

< >

( vocab_size = 8194 max_position_embeddings = 608 max_text_tokens = 404 hidden_size = 1024 num_hidden_layers = 30 num_attention_heads = 16 n_inner = None num_mel_attn_blocks = 6 activation_function = 'gelu_new' resid_pdrop = 0.1 embd_pdrop = 0.1 attention_dropout = 0.1 layer_norm_epsilon = 1e-05 initializer_range = 0.02 summary_type = 'cls_index' summary_use_proj = True summary_activation = None summary_proj_to_labels = True summary_first_dropout = 0.1 use_cache = True bos_token_id = 8192 eos_token_id = 8193 feature_size = 80 use_attention_bias = True initializer_factor = 1.0 decoder_fixing_codes = [83, 45, 45, 248] **kwargs )

引數

  • vocab_size (int, 可選, 預設為 8194) — 模型的詞彙表大小。
  • max_position_embeddings (int, 可選, 預設為 608) — 該模型可能使用的梅爾標記(mel tokens)的最大序列長度。類似於 GPT2Config 中的 n_positions
  • max_text_tokens (int, 可選, 預設為 404) — 該模型可能使用的文字標記(text tokens)的最大序列長度。類似於 GPT2Config 中的 n_positions
  • hidden_size (int, 可選, 預設為 1024) — 嵌入層和隱藏層的維度。
  • num_hidden_layers (int, 可選, 預設為 30) — Transformer 編碼器中的隱藏層數量。
  • num_attention_heads (int, 可選, 預設為 16) — Transformer 編碼器中每個注意力層的注意力頭數量。
  • n_inner (int, 可選) — 內部前饋層的維度。如果為 None,則會設定為 hidden_size 的 4 倍。
  • num_mel_attn_blocks (int, 可選, 預設為 6) — 表示 ClvpConditioningEncoder 中自注意力層的數量。
  • activation_function (str, 可選, 預設為 "gelu_new") — 啟用函式,從 ["relu", "silu", "gelu", "tanh", "gelu_new"] 列表中選擇。
  • resid_pdrop (float, 可選, 預設為 0.1) — 在嵌入層、編碼器和池化層中所有全連線層的丟棄機率。
  • embd_pdrop (float, 可選, 預設為 0.1) — 嵌入層的丟棄率。
  • attention_dropout (float, 可選, 預設為 0.1) — 注意力層的丟棄率。
  • layer_norm_epsilon (float, 可選, 預設為 1e-05) — 在層歸一化層中使用的 epsilon 值。
  • initializer_range (float, 可選, 預設為 0.02) — 用於初始化所有權重矩陣的 truncated_normal_initializer 的標準差。
  • summary_type (string, 可選, 預設為 "cls_index") — 進行序列摘要時使用的引數。

    必須是以下選項之一:

    • "last": 取最後一個詞元(token)的隱藏狀態(類似 XLNet)。
    • "first": 取第一個詞元(token)的隱藏狀態(類似 BERT)。
    • "mean": 取所有詞元(token)隱藏狀態的平均值。
    • "cls_index": 提供一個分類詞元(token)位置的張量(類似 GPT/GPT-2)。
    • "attn": 目前未實現,使用多頭注意力。
  • summary_use_proj (bool, 可選, 預設為 True) — 是否在向量提取後新增一個投影層。
  • summary_activation (str, 可選) — 傳遞 "tanh" 以對輸出應用 tanh 啟用函式,任何其他值將導致不使用啟用函式。
  • summary_proj_to_labels (bool, 可選, 預設為 True) — 投影輸出的類別數是 config.num_labels 還是 config.hidden_size
  • summary_first_dropout (float, 可選, 預設為 0.1) — 在投影和啟用之後使用的丟棄率。
  • use_cache (bool, 可選, 預設為 True) — 模型是否應返回最後一個鍵/值注意力(並非所有模型都使用)。
  • bos_token_id (int, 可選, 預設為 8192) — 序列開始標記的 ID,在生成開始時使用。
  • eos_token_id (int, 可選, 預設為 8193) — 序列結束標記的 ID,用於 ClvpModelForConditionalGeneration.fix_speech_decoder_output() 方法中以修正解碼器輸出。
  • feature_size (int, 可選, 預設為 80) — 提取的梅爾特徵的特徵維度。此值在 ClvpConditioningEncoder 中使用。
  • use_attention_bias (bool, 可選, 預設為 True) — 在自注意力過程中是否在 Query、Key 和 Value 層中使用偏置。
  • initializer_factor (float, 可選, 預設為 1.0) — 用於初始化所有權重矩陣的因子(應保持為 1.0,內部用於初始化測試)。
  • decoder_fixing_codes (list, 可選, 預設為 [83, 45, 45, 248]) — 這些值在 fix_speech_decoder_output 方法中使用,以修正解碼器生成的輸出。

這是用於儲存 ClvpDecoder 配置的配置類。它用於根據指定的引數例項化一個 CLVP 解碼器模型,定義模型架構。使用預設值例項化配置將產生與 CLVP susnato/clvp_dev 架構的解碼器部分相似的配置。

配置物件繼承自 PretrainedConfig,可用於控制模型輸出。請閱讀 PretrainedConfig 的文件以獲取更多資訊。

該架構類似於 GPT2。

示例

>>> from transformers import ClvpDecoderConfig, ClvpDecoder

>>> # Initializing a ClvpDecoderConfig with susnato/clvp_dev style configuration
>>> decoder_configuration = ClvpDecoderConfig()

>>> # Initializing a ClvpDecoder (with random weights) from the susnato/clvp_dev style configuration
>>> model = ClvpDecoder(decoder_configuration)

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

ClvpTokenizer

class transformers.ClvpTokenizer

< >

( vocab_file merges_file errors = 'replace' unk_token = '[UNK]' bos_token = '<|endoftext|>' eos_token = '[STOP]' pad_token = '[STOP]' add_prefix_space = False add_bos_token = False add_eos_token = False **kwargs )

引數

  • vocab_file (str) — 詞彙表文件的路徑。
  • merges_file (str) — 合併檔案的路徑。
  • errors (str, 可選, 預設為 "replace") — 將位元組解碼為 UTF-8 時遵循的正規化。更多資訊請參見 bytes.decode
  • unk_token (str, 可選, 預設為 "[UNK]") — 未知詞元。不在詞彙表中的詞元無法轉換為 ID,將被設定為此詞元。
  • bos_token (str, 可選, 預設為 "<|endoftext|>") — 序列開始詞元。
  • eos_token (str, 可選, 預設為 "[STOP]") — 序列結束詞元。
  • pad_token (str, 可選, 預設為 "[STOP]") — 序列的填充詞元。
  • add_prefix_space (bool, 可選, 預設為 False) — 是否在輸入前新增一個初始空格。這允許將首個單詞像其他單詞一樣處理。(CLVP分詞器透過前導空格來檢測單詞的開頭)。
  • add_bos_token (bool, 可選, 預設為 False) — 當 add_special_tokens=True 時,是否在序列前新增 bos_token
  • add_eos_token (bool, 可選, 預設為 False) — 當 add_special_tokens=True 時,是否在序列末尾新增 eos_token

構建一個 CLVP 分詞器。基於位元組級的位元組對編碼(Byte-Pair-Encoding)。

這個分詞器經過訓練,將空格視為詞元的一部分(有點像 sentencepiece),所以一個詞會

無論是否在句子開頭(無空格),編碼方式都會不同

>>> from transformers import ClvpTokenizer

>>> tokenizer = ClvpTokenizer.from_pretrained("susnato/clvp_dev")
>>> tokenizer("Hello world")["input_ids"]
[62, 84, 28, 2, 179, 79]

>>> tokenizer(" Hello world")["input_ids"]
[2, 62, 84, 28, 2, 179, 79]

您可以透過在例項化此分詞器時或在對某些文字呼叫它時傳遞 add_prefix_space=True 來繞過此行為,但由於模型並非以這種方式進行預訓練,這可能會導致效能下降。

當與 is_split_into_words=True 一起使用時,此分詞器會在每個詞(甚至是第一個詞)之前新增一個空格。

該分詞器繼承自 PreTrainedTokenizer,其中包含了大部分主要方法。使用者應參考該超類以獲取有關這些方法的更多資訊。

save_vocabulary

< >

( save_directory: str filename_prefix: typing.Optional[str] = None )

ClvpFeatureExtractor

class transformers.ClvpFeatureExtractor

< >

( feature_size = 80 sampling_rate = 22050 default_audio_length = 6 hop_length = 256 chunk_length = 30 n_fft = 1024 padding_value = 0.0 mel_norms = None return_attention_mask = False **kwargs )

引數

  • feature_size (int, 可選, 預設為 80) — 提取特徵的特徵維度。
  • sampling_rate (int, 可選, 預設為 22050) — 音訊檔案數字化的取樣率,以赫茲 (Hz) 表示。
  • default_audio_length (int, 可選, 預設為 6) — 原始音訊的預設長度(秒)。如果在 __call__ 期間未設定 max_length,它將自動設定為 default_audio_length * self.sampling_rate
  • hop_length (int, 可選, 預設為 256) — 用於獲取梅爾頻率係數的短時傅立葉變換(STFT)的重疊視窗長度。
  • chunk_length (int, 可選, 預設為 30) — 用於修剪和填充較長或較短音訊序列的 sampling_rate 樣本塊的最大數量。
  • n_fft (int, 可選, 預設為 1024) — 傅立葉變換的大小。
  • padding_value (float, 可選, 預設為 0.0) — 用於填充音訊的填充值。應對應於靜音。
  • mel_norms (長度為 feature_sizelist, 可選) — 如果提供了 mel_norms,它將被用來沿每個梅爾濾波器對對數梅爾譜圖進行歸一化。
  • return_attention_mask (bool, 可選, 預設為 False) — 是否返回注意力掩碼。如果保留預設值,則會返回注意力掩碼。

    什麼是注意力掩碼?

構建一個 CLVP 特徵提取器。

該特徵提取器繼承自 SequenceFeatureExtractor,其中包含了大部分主要方法。使用者應參考該超類以獲取有關這些方法的更多資訊。

此類使用 短時傅立葉變換 的自定義 numpy 實現從原始語音中提取對數梅爾譜圖特徵,該實現應與 PyTorch 的 torch.stft 等效。

__call__

< >

( raw_speech: typing.Union[numpy.ndarray, list[float], list[numpy.ndarray], list[list[float]]] sampling_rate: typing.Optional[int] = None truncation: bool = True pad_to_multiple_of: typing.Optional[int] = None return_tensors: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = None return_attention_mask: typing.Optional[bool] = True padding: typing.Optional[str] = 'max_length' max_length: typing.Optional[int] = None **kwargs )

引數

  • raw_speech (np.ndarray, list[float], list[np.ndarray], list[list[float]]) — 需要填充的序列或序列批次。每個序列可以是 numpy 陣列、浮點值列表、numpy 陣列列表或浮點值列表的列表。必須是單聲道音訊,而非立體聲,即每個時間步長對應單個浮點數。
  • sampling_rate (int, optional) — 對 raw_speech 輸入進行取樣時的取樣率。強烈建議在前向呼叫時傳遞 sampling_rate,以防止靜默錯誤並啟用自動語音識別管線。
  • truncation (bool, optional, 預設為 True) — 啟用截斷功能,將長於 max_length 的輸入序列截斷為 max_length
  • pad_to_multiple_of (int, optional) — 如果設定,將序列填充到所提供值的倍數。

    這對於在計算能力 >= 7.5 (Volta) 的 NVIDIA 硬體上使用 Tensor Cores,或在需要序列長度為 128 的倍數的 TPU 上特別有用。

  • return_attention_mask (bool, optional, 預設為 True) — 是否返回注意力掩碼。如果保留為預設值,則會返回注意力掩碼。

    什麼是注意力掩碼?

  • return_tensors (strTensorType, optional) — 如果設定,將返回張量而不是 Python 整數列表。可接受的值為:

    • 'tf': 返回 TensorFlow tf.constant 物件。
    • 'pt': 返回 PyTorch torch.Tensor 物件。
    • 'np': 返回 Numpy np.ndarray 物件。
  • padding_value (float, optional, 預設為 0.0) — 用於填充填充值/向量的值。
  • max_length (int, optional) — 輸入的最大輸入長度。

ClvpFeatureExtractor 用於從樣本語音或 raw_speech 中提取各種語音特定屬性,如音高、音調、語速,甚至像口齒不清或口吃等語言缺陷。

首先,語音被填充或截斷,使其成為一個長度為 self.default_audio_length 秒的波形,然後從中提取對數-梅爾頻譜圖。

ClvpProcessor

class transformers.ClvpProcessor

< >

( feature_extractor tokenizer )

引數

  • feature_extractor (ClvpFeatureExtractor) — ClvpFeatureExtractor 的一個例項。特徵提取器是必需的輸入。
  • tokenizer (ClvpTokenizer) — ClvpTokenizer 的一個例項。分詞器是必需的輸入。

構建一個 CLVP 處理器,它將 CLVP 特徵提取器和 CLVP 分詞器包裝成一個單一的處理器。

ClvpProcessor 提供了 ClvpFeatureExtractorClvpTokenizer 的所有功能。請參閱 call()decode()batch_decode() 瞭解更多資訊。

__call__

< >

( *args **kwargs )

audiosampling_rate 引數轉發給 call(),並將 text 引數轉發給 call()。請參考上述兩種方法的文件字串以獲取更多資訊。

decode

< >

( *args **kwargs )

此方法將其所有引數轉發給 ClvpTokenizer 的 decode() 方法。請參考此方法的文件字串以獲取更多資訊。

batch_decode

< >

( *args **kwargs )

此方法將其所有引數轉發給 ClvpTokenizer 的 batch_decode() 方法。請參考此方法的文件字串以獲取更多資訊。

ClvpModelForConditionalGeneration

class transformers.ClvpModelForConditionalGeneration

< >

( config: ClvpConfig )

引數

  • config (ClvpConfig) — 包含模型所有引數的模型配置類。使用配置檔案初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。

包含文字編碼器、語音編碼器和語音解碼器模型的複合 CLVP 模型。

該模型繼承自 PreTrainedModel。請檢視超類文件以瞭解該庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

該模型也是一個 PyTorch torch.nn.Module 子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = None input_features: typing.Optional[torch.FloatTensor] = None conditioning_encoder_inputs_embeds: typing.Optional[torch.FloatTensor] = None text_encoder_inputs_embeds: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.LongTensor] = None return_loss: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = False return_dict: typing.Optional[bool] = None ) transformers.models.clvp.modeling_clvp.ClvpOutputtuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor, 形狀為 (batch_size, sequence_length), optional) — 詞彙表中輸入序列標記的索引。預設情況下將忽略填充。

    可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參見 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • input_features (torch.FloatTensor, 形狀為 (batch_size, feature_size, time_dim)) — 表示由 ClvpFeatureExtractor 返回的音訊的對數-梅爾頻譜圖表示。
  • conditioning_encoder_inputs_embeds (torch.FloatTensor, optional) — ClvpConditioningEncoder 的 inputs_embeds。可替代 input_ids 使用。
  • text_encoder_inputs_embeds (torch.FloatTensor, optional) — 傳遞給文字編碼器模型的 inputs_embeds,以代替 input_ids
  • attention_mask (torch.LongTensor, 形狀為 (batch_size, sequence_length), optional) — 用於避免在填充標記索引上執行注意力操作的掩碼。掩碼值在 [0, 1] 中選擇:

    • 1 表示標記未被遮蓋
    • 0 表示標記被遮蓋

    什麼是注意力掩碼?

  • return_loss (bool, optional) — 是否返回對比損失。
  • output_hidden_states (bool, optional) — 是否返回所有層的隱藏狀態。有關詳細資訊,請參見返回張量下的 hidden_states
  • output_attentions (bool, optional, 預設為 False) — 是否返回所有注意力層的注意力張量。有關詳細資訊,請參見返回張量下的 attentions
  • return_dict (bool, optional) — 是否返回一個 ModelOutput 而不是一個普通的元組。

返回

transformers.models.clvp.modeling_clvp.ClvpOutputtuple(torch.FloatTensor)

一個 transformers.models.clvp.modeling_clvp.ClvpOutput 或一個 torch.FloatTensor 的元組(如果傳遞了 return_dict=False 或當 config.return_dict=False 時),根據配置(ClvpConfig)和輸入,包含各種元素。

  • loss (torch.FloatTensor, 形狀為 (1,), optional, 當 return_lossTrue 時返回) — 用於語音-文字相似性的對比損失。
  • speech_ids (torch.LongTensor, optional) — 由 ClvpForCausalLM 模型生成的 speech_ids(或語音候選項)。
  • logits_per_speech (torch.FloatTensor, 形狀為 (speech_batch_size, text_batch_size)) — speech_embedstext_embeds 之間的縮放點積得分。這表示語音-文字相似性得分。
  • logits_per_text (torch.FloatTensor, 形狀為 (text_batch_size, speech_batch_size)) — text_embedsspeech_embeds 之間的縮放點積得分。這表示文字-語音相似性得分。
  • text_embeds (torch.FloatTensor, 形狀為 (batch_size, output_dim)) — 透過將投影層應用於文字編碼器模型的池化輸出而獲得的文字嵌入。
  • speech_embeds (torch.FloatTensor, 形狀為 (batch_size, output_dim)) — 透過將投影層應用於語音編碼器模型的池化輸出而獲得的語音嵌入。
  • text_model_output (<class '~modeling_outputs.BaseModelOutputWithPooling'>.text_model_output, 預設為 None) — 文字編碼器模型的 last_hidden_state 的池化輸出。
  • speech_model_output (<class '~modeling_outputs.BaseModelOutputWithPooling'>.speech_model_output, 預設為 None) — 語音編碼器模型的 last_hidden_state 的池化輸出。
  • decoder_hidden_states (torch.FloatTensor, optional) — 解碼器模型的隱藏狀態。
  • text_encoder_hidden_states (torch.FloatTensor, optional) — 文字編碼器模型的隱藏狀態。
  • speech_encoder_hidden_states (torch.FloatTensor, optional) — 語音編碼器模型的隱藏狀態。

ClvpModelForConditionalGeneration 的 forward 方法重寫了 __call__ 特殊方法。

儘管前向傳播的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會負責執行預處理和後處理步驟,而後者會靜默地忽略它們。

示例

>>> import datasets
>>> from transformers import ClvpProcessor, ClvpModelForConditionalGeneration

>>> # Define the Text and Load the Audio (We are taking an audio example from HuggingFace Hub using `datasets` library)
>>> text = "This is an example text."

>>> ds = datasets.load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> ds = ds.cast_column("audio", datasets.Audio(sampling_rate=22050))
>>> _, audio, sr = ds.sort("id").select(range(1))[:1]["audio"][0].values()

>>> # Define processor and model
>>> processor = ClvpProcessor.from_pretrained("susnato/clvp_dev")
>>> model = ClvpModelForConditionalGeneration.from_pretrained("susnato/clvp_dev")

>>> # processor outputs and model outputs
>>> processor_output = processor(raw_speech=audio, sampling_rate=sr, text=text, return_tensors="pt")
>>> outputs = model(
...     input_ids=processor_output["input_ids"],
...     input_features=processor_output["input_features"],
...     return_dict=True,
... )

生成

< >

( input_ids: typing.Optional[torch.LongTensor] = None input_features: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.LongTensor] = None generation_config: typing.Optional[transformers.generation.configuration_utils.GenerationConfig] = None pad_to_max_mel_tokens: typing.Optional[int] = None output_hidden_states: typing.Optional[bool] = None **kwargs ) ClvpOutput 或元組

引數

  • input_ids (torch.FloatTensor, 形狀為 (batch_size, sequence_length), optional) — 輸入文字標記。由 ClvpTokenizer 處理。
  • input_features (torch.FloatTensor, 形狀為 (batch_size, feature_size, time_dim), optional) — 表示由 ClvpFeatureExtractor 返回的音訊的對數-梅爾頻譜圖表示。
  • attention_mask (torch.Tensor, 形狀為 (batch_size, sequence_length), optional) — 用於避免在填充文字標記索引上執行注意力操作的掩碼。掩碼值在 [0, 1] 中選擇:

    • 1 表示標記未被遮蓋
    • 0 表示標記被遮蓋

    什麼是注意力掩碼?

  • generation_config (~generation.GenerationConfig, optional) — 用於生成呼叫的基礎引數化的生成配置。傳遞給 generate 的與 generation_config 屬性匹配的 **kwargs 將覆蓋它們。如果未提供 generation_config,將使用預設值,其載入優先順序如下:1) 從 generation_config.json 模型檔案(如果存在);2) 從模型配置。請注意,未指定的引數將繼承 GenerationConfig 的預設值,應檢查其文件以引數化生成。
  • pad_to_max_mel_tokens (int, optional) — 將生成的 speech_ids 填充到指定值。這是為了實現官方倉庫中的相同邏輯,連結:https://github.com/neonbjb/tortoise-tts/blob/80f89987a5abda5e2b082618cd74f9c7411141dc/tortoise/api.py#L430 並確保 logits 相同。這不影響生成質量,因此請不要考慮使用它,因為它效率較低。
  • output_hidden_states (bool, optional) — 是否返回解碼器模型、文字編碼器和語音編碼器模型的隱藏狀態。

返回

ClvpOutput 或元組

一個 ClvpOutput(如果 return_dict_in_generate=True 或當 config.return_dict_in_generate=True 時)或一個元組。

ClvpModelForConditionalGeneration 的生成方法,此方法呼叫 ClvpForCausalLMgenerate 方法,然後使用生成的 speech_ids 透過 ClvpEncoder 處理 text_embedsspeech_embeds

get_text_features

< >

( input_ids: typing.Optional[torch.LongTensor] = None text_encoder_inputs_embeds: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.LongTensor] = None ) torch.FloatTensor, 形狀為 (batch_size, output_dim)

引數

  • input_ids (torch.LongTensor, 形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列標記的索引。如果您提供填充,預設情況下將被忽略。

    什麼是輸入 ID?

  • text_encoder_inputs_embeds (torch.FloatTensor, optional) — 傳遞給文字編碼器模型的 inputs_embeds,以代替 input_ids
  • attention_mask (torch.Tensor, 形狀為 (batch_size, sequence_length), optional) — 用於避免在填充標記索引上執行注意力操作的掩碼。掩碼值在 [0, 1] 中選擇:

    • 1 表示標記未被遮蓋
    • 0 表示標記被遮蓋

    什麼是注意力掩碼?

返回

torch.FloatTensor, 形狀為 (batch_size, output_dim)

透過將投影層應用於 CLVP 文字模型的池化輸出而獲得的文字嵌入。

此方法可用於從文字中提取 text_embeds。這些文字嵌入是透過將投影層應用於 CLVP 文字編碼器模型的池化輸出而獲得的。

示例

>>> from transformers import ClvpProcessor, ClvpModelForConditionalGeneration

>>> # Define the Text
>>> text = "This is an example text."

>>> # Define processor and model
>>> processor = ClvpProcessor.from_pretrained("susnato/clvp_dev")
>>> model = ClvpModelForConditionalGeneration.from_pretrained("susnato/clvp_dev")

>>> # Generate processor output and text embeds
>>> processor_output = processor(text=text, return_tensors="pt")
>>> text_embeds = model.get_text_features(input_ids=processor_output["input_ids"])

get_speech_features

< >

( speech_ids: typing.Optional[torch.LongTensor] = None input_ids: typing.Optional[torch.LongTensor] = None input_features: typing.Optional[torch.FloatTensor] = None conditioning_encoder_inputs_embeds: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.Tensor] = None generation_config: typing.Optional[transformers.generation.configuration_utils.GenerationConfig] = None **kwargs ) torch.FloatTensor, 形狀為 (batch_size, output_dim)

引數

  • speech_ids (torch.LongTensor, 形狀為 (batch_size, num_speech_ids), optional) — 語音標記。如果您提供填充,預設情況下將被忽略。如果提供了 speech_ids,則 input_ids 和 input_features 將被自動忽略。
  • input_ids (torch.LongTensor, 形狀為 (batch_size, sequence_length), optional) — 輸入文字標記。由 ClvpTokenizer 處理。如果未提供 speech_ids,則將使用 input_ids 和 input_features。
  • input_features (torch.FloatTensor,形狀為 (batch_size, feature_size, time_dim)可選) — 表示由 ClvpFeatureExtractor 返回的音訊的 log-melspectrogram 表示。如果未提供 speech_ids,則將使用 input_ids 和 input_features。
  • conditioning_encoder_inputs_embeds (torch.FloatTensor, 可選) — ClvpConditioningEncoder 的 inputs_embeds。可以用來替代 input_ids
  • attention_mask (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 用於避免在填充的語音標記索引上執行注意力機制的掩碼。掩碼值的選擇範圍為 [0, 1]

    • 1 表示標記未被掩碼
    • 0 表示標記已被掩碼

    什麼是注意力掩碼?

  • generation_config (GenerationConfig, 可選) — 用於控制 speech_ids 生成的配置,如果未提供 speech_ids。

返回

torch.FloatTensor, 形狀為 (batch_size, output_dim)

透過將投影層應用於 CLVP 語音模型的池化輸出來獲得的語音嵌入。

此方法可用於提取 speech_embeds。語音嵌入是透過在 speech_ids 上應用語音模型獲得的。如果 speech_ids 不存在,但同時給定了 input_ids 和 input_features,則將首先使用解碼器模型生成 speech_ids,然後再應用語音模型。

示例

>>> import datasets
>>> from transformers import ClvpProcessor, ClvpModelForConditionalGeneration

>>> # Define the Text and Load the Audio (We are taking an audio example from HuggingFace Hub using `datasets` library)
>>> text = "This is an example text."
>>> ds = datasets.load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> ds = ds.cast_column("audio", datasets.Audio(sampling_rate=22050))
>>> _, audio, sr = ds.sort("id").select(range(1))[:1]["audio"][0].values()

>>> # Define processor and model
>>> processor = ClvpProcessor.from_pretrained("susnato/clvp_dev")
>>> model = ClvpModelForConditionalGeneration.from_pretrained("susnato/clvp_dev")

>>> # Generate processor output and model output
>>> processor_output = processor(raw_speech=audio, sampling_rate=sr, text=text, return_tensors="pt")
>>> speech_embeds = model.get_speech_features(
...     input_ids=processor_output["input_ids"], input_features=processor_output["input_features"]
... )

ClvpForCausalLM

class transformers.ClvpForCausalLM

< >

( config )

引數

  • config (ClvpForCausalLM) — 模型配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。

帶有語言模型頭的 CLVP 解碼器模型。

該模型繼承自 PreTrainedModel。請檢視超類文件以瞭解該庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

該模型也是一個 PyTorch torch.nn.Module 子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = None past_key_values: typing.Optional[tuple[tuple[torch.Tensor]]] = None attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.CausalLMOutputWithCrossAttentionstuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 詞彙表中輸入序列標記的索引。預設情況下將忽略填充。

    可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • past_key_values (tuple[tuple[torch.Tensor]], 可選) — 預先計算的隱藏狀態(自注意塊和交叉注意塊中的鍵和值),可用於加速順序解碼。這通常包括在解碼的先前階段,當 use_cache=Trueconfig.use_cache=True 時由模型返回的 past_key_values

    允許兩種格式:

    • Cache 例項,請參閱我們的 kv 快取指南
    • 長度為 config.n_layerstuple(torch.FloatTensor) 的元組,每個元組包含 2 個形狀為 (batch_size, num_heads, sequence_length, embed_size_per_head) 的張量。這也被稱為傳統快取格式。

    模型將輸出與輸入相同的快取格式。如果未傳遞 past_key_values,則將返回傳統快取格式。

    如果使用 past_key_values,使用者可以選擇只輸入最後一個 input_ids(那些沒有為其提供過去鍵值狀態的 ID),形狀為 (batch_size, 1),而不是所有形狀為 (batch_size, sequence_length)input_ids

  • attention_mask (torch.FloatTensor,形狀為 (batch_size, sequence_length)可選) — 用於避免在填充的標記索引上執行注意力機制的掩碼。掩碼值的選擇範圍為 [0, 1]

    • 1 表示標記未被掩碼
    • 0 表示標記已被掩碼

    什麼是注意力掩碼?

  • token_type_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 片段標記索引,用於指示輸入的第一部分和第二部分。索引的選擇範圍為 [0, 1]

    • 0 對應於 *A 句* 標記,
    • 1 對應於 *B 句* 標記。

    什麼是標記型別 ID?

  • position_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 位置嵌入中每個輸入序列標記的位置索引。選擇範圍為 [0, config.n_positions - 1]

    什麼是位置 ID?

  • head_mask (torch.FloatTensor,形狀為 (num_heads,)(num_layers, num_heads)可選) — 用於使自注意力模組的選定頭無效的掩碼。掩碼值的選擇範圍為 [0, 1]

    • 1 表示頭未被掩碼
    • 0 表示頭已被掩碼
  • inputs_embeds (torch.FloatTensor,形狀為 (batch_size, sequence_length, hidden_size)可選) — 可選地,您可以選擇直接傳遞嵌入表示,而不是傳遞 input_ids。如果您想比模型的內部嵌入查詢矩陣更好地控制如何將 input_ids 索引轉換為關聯向量,這將非常有用。
  • labels (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 語言建模的標籤。請注意,標籤在模型內部已移位,即您可以設定 labels = input_ids。索引選擇範圍為 [-100, 0, ..., config.vocab_size]。所有設定為 -100 的標籤都會被忽略(掩碼),損失僅針對 [0, ..., config.vocab_size] 中的標籤計算。
  • use_cache (bool, 可選) — 如果設定為 True,將返回 past_key_values 鍵值狀態,可用於加速解碼(參見 past_key_values)。
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是普通元組。

返回

transformers.modeling_outputs.CausalLMOutputWithCrossAttentionstuple(torch.FloatTensor)

transformers.modeling_outputs.CausalLMOutputWithCrossAttentionstorch.FloatTensor 的元組(如果傳遞了 return_dict=Falseconfig.return_dict=False),根據配置 (ClvpConfig) 和輸入包含各種元素。

  • loss (torch.FloatTensor 形狀為 (1,)可選,當提供 labels 時返回) — 語言建模損失(用於下一個 token 預測)。

  • logits (形狀為 (batch_size, sequence_length, config.vocab_size)torch.FloatTensor) — 語言建模頭部的預測分數(SoftMax 之前的每個詞彙標記的分數)。

  • hidden_states (tuple(torch.FloatTensor), 可選,在傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — torch.FloatTensor 的元組(如果模型有嵌入層,則一個為嵌入的輸出,+ 每個層的輸出一個),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple(torch.FloatTensor), 可選,在傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

  • cross_attentions (tuple(torch.FloatTensor), 可選,在傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的交叉注意力權重,用於計算交叉注意力頭中的加權平均。

  • past_key_values (Cache, 可選,在傳遞 use_cache=Trueconfig.use_cache=True 時返回) — 這是一個 Cache 例項。有關更多詳細資訊,請參閱我們的 kv 快取指南

    包含預先計算的隱藏狀態(注意力塊中的鍵和值),可用於(參見 past_key_values 輸入)加速順序解碼。

ClvpForCausalLM 的前向方法,覆蓋了 __call__ 特殊方法。

儘管前向傳播的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會負責執行預處理和後處理步驟,而後者會靜默地忽略它們。

ClvpModel

class transformers.ClvpModel

< >

( config: ClvpDecoderConfig )

引數

  • config (ClvpDecoderConfig) — 模型配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。

裸 Clvp 模型,輸出原始隱藏狀態,頂部沒有任何特定的頭。

該模型繼承自 PreTrainedModel。請檢視超類文件以瞭解該庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

該模型也是一個 PyTorch torch.nn.Module 子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None past_key_values: typing.Optional[tuple[tuple[torch.Tensor]]] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentionstuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 詞彙表中輸入序列標記的索引。預設情況下將忽略填充。

    可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • attention_mask (torch.FloatTensor,形狀為 (batch_size, sequence_length)可選) — 用於避免在填充的標記索引上執行注意力機制的掩碼。掩碼值的選擇範圍為 [0, 1]

    • 1 表示標記未被掩碼
    • 0 表示標記已被掩碼

    什麼是注意力掩碼?

  • token_type_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 片段標記索引,用於指示輸入的第一部分和第二部分。索引的選擇範圍為 [0, 1]

    • 0 對應於 *A 句* 標記,
    • 1 對應於 *B 句* 標記。

    什麼是標記型別 ID?

  • position_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 位置嵌入中每個輸入序列標記的位置索引。選擇範圍為 [0, config.n_positions - 1]

    什麼是位置 ID?

  • head_mask (torch.FloatTensor,形狀為 (num_heads,)(num_layers, num_heads)可選) — 用於使自注意力模組的選定頭無效的掩碼。掩碼值的選擇範圍為 [0, 1]

    • 1 表示頭未被掩碼
    • 0 表示頭已被掩碼
  • past_key_values (tuple[tuple[torch.Tensor]], 可選) — 預先計算的隱藏狀態(自注意塊和交叉注意塊中的鍵和值),可用於加速順序解碼。這通常包括在解碼的先前階段,當 use_cache=Trueconfig.use_cache=True 時由模型返回的 past_key_values

    允許兩種格式:

    • Cache 例項,請參閱我們的 kv 快取指南
    • 長度為 config.n_layerstuple(torch.FloatTensor) 的元組,每個元組包含 2 個形狀為 (batch_size, num_heads, sequence_length, embed_size_per_head) 的張量。這也被稱為傳統快取格式。

    模型將輸出與輸入相同的快取格式。如果未傳遞 past_key_values,則將返回傳統快取格式。

    如果使用 past_key_values,使用者可以選擇只輸入最後一個 input_ids(那些沒有為其提供過去鍵值狀態的 ID),形狀為 (batch_size, 1),而不是所有形狀為 (batch_size, sequence_length)input_ids

  • inputs_embeds (torch.FloatTensor,形狀為 (batch_size, sequence_length, hidden_size)可選) — 可選地,您可以選擇直接傳遞嵌入表示,而不是傳遞 input_ids。如果您想比模型的內部嵌入查詢矩陣更好地控制如何將 input_ids 索引轉換為關聯向量,這將非常有用。
  • use_cache (bool, 可選) — 如果設定為 True,將返回 past_key_values 鍵值狀態,可用於加速解碼(參見 past_key_values)。
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是普通元組。

返回

transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentionstuple(torch.FloatTensor)

transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentionstorch.FloatTensor 的元組(如果傳遞了 return_dict=Falseconfig.return_dict=False),根據配置 (ClvpConfig) 和輸入包含各種元素。

  • last_hidden_state (torch.FloatTensor, 形狀為 (batch_size, sequence_length, hidden_size)) — 模型最後一層輸出的隱藏狀態序列。

    如果使用了 past_key_values,則只輸出形狀為 (batch_size, 1, hidden_size) 的序列的最後一個隱藏狀態。

  • past_key_values (Cache, 可選,在傳遞 use_cache=Trueconfig.use_cache=True 時返回) — 這是一個 Cache 例項。有關更多詳細資訊,請參閱我們的 kv 快取指南

    包含預先計算的隱藏狀態(自注意塊中的鍵和值,如果 config.is_encoder_decoder=True,則還包括交叉注意塊中的鍵和值),可用於(參見 past_key_values 輸入)加速順序解碼。

  • hidden_states (tuple(torch.FloatTensor), 可選,在傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — torch.FloatTensor 的元組(如果模型有嵌入層,則一個為嵌入的輸出,+ 每個層的輸出一個),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple(torch.FloatTensor), 可選,在傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

  • cross_attentions (tuple(torch.FloatTensor), 可選,在傳遞 output_attentions=Trueconfig.add_cross_attention=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。

ClvpModel 的前向方法,覆蓋了 __call__ 特殊方法。

儘管前向傳播的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會負責執行預處理和後處理步驟,而後者會靜默地忽略它們。

ClvpEncoder

class transformers.ClvpEncoder

< >

( config: ClvpConfig )

引數

  • config — ClvpConfig

config.num_hidden_layers 個自注意力層組成的 Transformer 編碼器。每個層都是一個 ClvpEncoderLayer

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = None inputs_embeds: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None )

引數

  • input_ids (torch.LongTensor,形狀為 (batch_size, input_ids_length)可選) — 詞彙表中輸入序列標記的索引。

    可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • inputs_embeds (torch.FloatTensor,形狀為 (batch_size, sequence_length, hidden_size)可選) — 模型的輸入嵌入。這會繞過模型的內部嵌入查詢矩陣。
  • attention_mask (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 用於避免在填充的標記索引上執行注意力機制的掩碼。掩碼值的選擇範圍為 [0, 1]

    • 1 表示標記未被掩碼
    • 0 表示標記已被掩碼

    什麼是注意力掩碼?

  • position_ids (torch.LongTensor, 可選) — 表示 input_ids 的位置 ID。
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是普通元組。

ClvpDecoder

class transformers.ClvpDecoder

< >

( config )

Transformer 解碼器由 *config.num_hidden_layers* 層組成。每一層都是一個 ClvpDecoderLayer

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None past_key_values: typing.Optional[tuple[tuple[torch.Tensor]]] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentionstuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 詞彙表中輸入序列標記的索引。預設情況下,填充將被忽略。

    索引可以使用 AutoTokenizer 獲得。詳情請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • attention_mask (torch.FloatTensor,形狀為 (batch_size, sequence_length)可選) — 用於避免在填充標記索引上執行注意力計算的掩碼。掩碼值在 [0, 1] 中選擇:

    • 1 表示標記未被掩碼
    • 0 表示標記已被掩碼

    什麼是注意力掩碼?

  • token_type_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 用於指示輸入的第一和第二部分的片段標記索引。索引在 [0, 1] 中選擇:

    • 0 對應於*句子 A* 的標記,
    • 1 對應於*句子 B* 的標記。

    什麼是標記型別 ID?

  • position_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 位置嵌入中每個輸入序列標記的位置索引。在 [0, config.n_positions - 1] 範圍內選擇。

    什麼是位置 ID?

  • head_mask (torch.FloatTensor,形狀為 (num_heads,)(num_layers, num_heads)可選) — 用於置零自注意力模組中選定頭的掩碼。掩碼值在 [0, 1] 中選擇:

    • 1 表示頭未被掩碼
    • 0 表示頭已被掩碼
  • past_key_values (tuple[tuple[torch.Tensor]]可選) — 預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常包括在解碼的先前階段,當 use_cache=Trueconfig.use_cache=True 時由模型返回的 past_key_values

    允許兩種格式:

    • Cache 例項,請參閱我們的 kv 快取指南
    • 長度為 config.n_layerstuple(torch.FloatTensor) 元組,每個元組包含 2 個形狀為 (batch_size, num_heads, sequence_length, embed_size_per_head) 的張量。這也稱為舊版快取格式。

    模型將輸出與輸入相同的快取格式。如果未傳遞 past_key_values,將返回舊版快取格式。

    如果使用 past_key_values,使用者可以選擇只輸入最後一個 input_ids(那些沒有為其提供過去鍵值狀態的標記),形狀為 (batch_size, 1),而不是所有形狀為 (batch_size, sequence_length)input_ids

  • inputs_embeds (torch.FloatTensor,形狀為 (batch_size, sequence_length, hidden_size)可選) — (可選)您可以選擇直接傳遞嵌入表示,而不是傳遞 input_ids。如果您想比模型內部的嵌入查詢矩陣更好地控制如何將 input_ids 索引轉換為關聯向量,這會很有用。
  • use_cache (bool可選) — 如果設定為 True,則返回 past_key_values 鍵值狀態,可用於加速解碼(請參閱 past_key_values)。
  • output_attentions (bool可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的 attentions
  • output_hidden_states (bool可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states
  • return_dict (bool可選) — 是否返回一個 ModelOutput 而不是一個普通的元組。

返回

transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentionstuple(torch.FloatTensor)

transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentionstorch.FloatTensor 的元組(如果傳遞了 return_dict=Falseconfig.return_dict=False),根據配置 (ClvpConfig) 和輸入包含各種元素。

  • last_hidden_state (torch.FloatTensor, 形狀為 (batch_size, sequence_length, hidden_size)) — 模型最後一層輸出的隱藏狀態序列。

    如果使用了 past_key_values,則只輸出形狀為 (batch_size, 1, hidden_size) 的序列的最後一個隱藏狀態。

  • past_key_values (Cache, 可選,在傳遞 use_cache=Trueconfig.use_cache=True 時返回) — 這是一個 Cache 例項。有關更多詳細資訊,請參閱我們的 kv 快取指南

    包含預先計算的隱藏狀態(自注意塊中的鍵和值,如果 config.is_encoder_decoder=True,則還包括交叉注意塊中的鍵和值),可用於(參見 past_key_values 輸入)加速順序解碼。

  • hidden_states (tuple(torch.FloatTensor), 可選,在傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — torch.FloatTensor 的元組(如果模型有嵌入層,則一個為嵌入的輸出,+ 每個層的輸出一個),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple(torch.FloatTensor), 可選,在傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

  • cross_attentions (tuple(torch.FloatTensor), 可選,在傳遞 output_attentions=Trueconfig.add_cross_attention=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。

ClvpDecoder 的前向方法,重寫了 __call__ 特殊方法。

儘管前向傳播的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會負責執行預處理和後處理步驟,而後者會靜默地忽略它們。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.