Transformers 4.37 中文文档(八十)(3)

简介: Transformers 4.37 中文文档(八十)

Transformers 4.37 中文文档(八十)(2)https://developer.aliyun.com/article/1563214


Wav2Vec2ConformerForCTC

class transformers.Wav2Vec2ConformerForCTC

<来源>

( config target_lang: Optional = None )

参数

  • config (Wav2Vec2ConformerConfig) — 模型的所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法来加载模型权重。

带有顶部语言建模头部的 Wav2Vec2Conformer 模型,用于连接主义时间分类(CTC)。Wav2Vec2Conformer 是由 Alexei Baevski、Henry Zhou、Abdelrahman Mohamed、Michael Auli 在wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations中提出的。

这个模型继承自 PreTrainedModel。检查超类文档以获取库为所有模型实现的通用方法(如下载或保存等)。

这个模型是 PyTorch 的nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。

forward

<来源>

( input_values: Optional attention_mask: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None labels: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.CausalLMOutput or tuple(torch.FloatTensor)

参数

  • input_values(形状为(batch_size, sequence_length)torch.FloatTensor)— 输入原始语音波形的浮点值。值可以通过将.flac.wav音频文件加载到List[float]类型的数组或numpy.ndarray中获得,例如通过声音文件库(pip install soundfile)。要准备好数组为input_values,应使用 AutoProcessor 进行填充和转换为torch.FloatTensor类型的张量。有关详细信息,请参阅 Wav2Vec2Processor.call()。
  • attention_mask(形状为(batch_size, sequence_length)torch.LongTensor可选)— 用于避免在填充标记索引上执行卷积和注意力的掩码。选择的掩码值在[0, 1]中:
  • 1 表示未被掩码的标记,
  • 0 表示被掩码的标记。
  • 什么是注意力掩码?
    只有在相应的处理器具有config.return_attention_mask == True时才应传递attention_mask。对于所有处理器具有config.return_attention_mask == False的模型,比如wav2vec2-conformer-rel-pos-large,在进行批量推理时,应传递attention_mask以避免性能下降。对于这样的模型,input_values应该简单地用 0 填充并在不传递attention_mask的情况下传递。请注意,这些模型根据input_values是否填充会产生略微不同的结果。
  • output_attentionsbool可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
  • output_hidden_statesbool可选)- 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
  • return_dictbool可选)- 是否返回 ModelOutput 而不是普通元组。
  • labels(形状为(batch_size, target_length)torch.LongTensor可选)- 用于连接主义时间分类的标签。请注意,target_length必须小于或等于输出 logits 的序列长度。索引在[-100, 0, ..., config.vocab_size - 1]中选择。所有设置为-100的标签都被忽略(掩码),损失仅计算[0, ..., config.vocab_size - 1]中的标签。

返回

transformers.modeling_outputs.CausalLMOutput 或tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.CausalLMOutput 或一个torch.FloatTensor元组(如果传递了return_dict=Falseconfig.return_dict=False时)包含根据配置(Wav2Vec2ConformerConfig)和输入的各种元素。

  • loss(形状为(1,)torch.FloatTensor可选,当提供labels时返回)- 语言建模损失(用于下一个标记预测)。
  • logits(形状为(batch_size, sequence_length, config.vocab_size)torch.FloatTensor)- 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。
  • hidden_statestuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回)- 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(如果模型有嵌入层的输出一个,+每层输出的一个)。
    模型在每一层输出的隐藏状态加上可选的初始嵌入输出。
  • attentionstuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。
    在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。

Wav2Vec2ConformerForCTC 的前向方法,覆盖__call__特殊方法。

尽管前向传递的配方需要在此函数内定义,但应该在此之后调用Module实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

示例:

>>> from transformers import AutoProcessor, Wav2Vec2ConformerForCTC
>>> 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/wav2vec2-conformer-rope-large-960h-ft")
>>> model = Wav2Vec2ConformerForCTC.from_pretrained("facebook/wav2vec2-conformer-rope-large-960h-ft")
>>> # 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]
'MISTER QUILTER IS THE APOSTLE OF THE MIDDLE CLASSES AND WE ARE GLAD TO WELCOME HIS GOSPEL'
>>> inputs["labels"] = processor(text=dataset[0]["text"], return_tensors="pt").input_ids
>>> # compute loss
>>> loss = model(**inputs).loss
>>> round(loss.item(), 2)
64.21

Wav2Vec2ConformerForSequenceClassification

class transformers.Wav2Vec2ConformerForSequenceClassification

<来源>

( config )

参数

  • config(Wav2Vec2ConformerConfig)- 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。

带有顶部序列分类头(池化输出上的线性层)的 Wav2Vec2Conformer 模型,用于类似 SUPERB 关键词检测的任务。

Wav2Vec2Conformer 是由 Alexei Baevski、Henry Zhou、Abdelrahman Mohamed、Michael Auli 在wav2vec 2.0:自监督学习语音表示的框架中提出的。

此模型继承自 PreTrainedModel。检查超类文档以获取库实现的所有模型的通用方法(例如下载或保存等)。

此模型是 PyTorch nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有事项。

前向

<来源>

( input_values: Optional attention_mask: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None labels: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.SequenceClassifierOutput or tuple(torch.FloatTensor)

参数

  • input_values(形状为(batch_size, sequence_length)torch.FloatTensor)— 输入原始语音波形的浮点值。值可以通过将.flac.wav音频文件加载到List[float]类型的数组或numpy.ndarray中获得,例如通过 soundfile 库(pip install soundfile)。要准备数组为input_values,应使用 AutoProcessor 进行填充和转换为torch.FloatTensor类型的张量。有关详细信息,请参阅 Wav2Vec2Processor.call()。
  • attention_mask(形状为(batch_size, sequence_length)torch.LongTensor可选)— 用于避免在填充标记索引上执行卷积和注意力的蒙版。选择的蒙版值在[0, 1]范围内:
  • 对于未屏蔽的标记,
  • 对于屏蔽的标记为 0。
  • 注意力蒙版是什么?
    只有当相应处理器具有config.return_attention_mask == True时,才应传递attention_mask。对于所有处理器具有config.return_attention_mask == False的模型,例如wav2vec2-conformer-rel-pos-large,在进行批量推断时,应传递attention_mask以避免性能下降。对于这些模型,input_values应简单地填充为 0 并在不传递attention_mask的情况下传递。请注意,这些模型的结果也会因input_values是否填充而略有不同。
  • output_attentionsbool可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
  • output_hidden_statesbool可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
  • return_dictbool可选)— 是否返回 ModelOutput 而不是普通元组。
  • labels(形状为(batch_size,)torch.LongTensor可选)— 用于计算序列分类/回归损失的标签。索引应在[0, ..., config.num_labels - 1]范围内。如果config.num_labels == 1,则计算回归损失(均方损失),如果config.num_labels > 1,则计算分类损失(交叉熵)。

返回

transformers.modeling_outputs.SequenceClassifierOutput 或tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.SequenceClassifierOutput 或一个 torch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时)包含各种元素,这取决于配置(Wav2Vec2ConformerConfig)和输入。

  • 损失 (torch.FloatTensor,形状为(1,)可选,当提供labels时返回) — 分类(如果config.num_labels==1则为回归)损失。
  • logits (torch.FloatTensor,形状为(batch_size, config.num_labels)) — 分类(如果config.num_labels==1则为回归)得分(SoftMax 之前)。
  • hidden_states (tuple(torch.FloatTensor)可选,当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor 元组(如果模型有嵌入层,则为嵌入的输出 + 每层的输出)。
    模型在每一层输出处的隐藏状态以及可选的初始嵌入输出。
  • attentions (tuple(torch.FloatTensor)可选,当传递 output_attentions=True 或当 config.output_attentions=True 时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组(每层一个)。
    注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

Wav2Vec2ConformerForSequenceClassification 的前向方法重写了 __call__ 特殊方法。

虽然前向传递的方法需要在此函数内定义,但应该在此之后调用 Module 实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoFeatureExtractor, Wav2Vec2ConformerForSequenceClassification
>>> 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
>>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/wav2vec2-conformer-rope-large-960h-ft")
>>> model = Wav2Vec2ConformerForSequenceClassification.from_pretrained("facebook/wav2vec2-conformer-rope-large-960h-ft")
>>> # audio file is decoded on the fly
>>> inputs = feature_extractor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> with torch.no_grad():
...     logits = model(**inputs).logits
>>> predicted_class_ids = torch.argmax(logits, dim=-1).item()
>>> predicted_label = model.config.id2label[predicted_class_ids]
>>> # compute loss - target_label is e.g. "down"
>>> target_label = model.config.id2label[0]
>>> inputs["labels"] = torch.tensor([model.config.label2id[target_label]])
>>> loss = model(**inputs).loss

Wav2Vec2ConformerForAudioFrameClassification

class transformers.Wav2Vec2ConformerForAudioFrameClassification

<来源>

( config )

参数

  • config (Wav2Vec2ConformerConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained() 方法以加载模型权重。

Wav2Vec2Conformer 模型在顶部带有一个帧分类头,用于说话人分离等任务。

Wav2Vec2Conformer 是由 Alexei Baevski、Henry Zhou、Abdelrahman Mohamed、Michael Auli 在 wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations 中提出的。

这个模型继承自 PreTrainedModel。检查超类文档以获取库为所有模型实现的通用方法(如下载或保存等)。

这个模型是一个 PyTorch nn.Module 的子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有内容。

forward

<来源>

( input_values: Optional attention_mask: Optional = None labels: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.TokenClassifierOutput or tuple(torch.FloatTensor)

参数

  • input_values (torch.FloatTensor,形状为(batch_size, sequence_length)) — 输入原始语音波形的浮点值。可以通过将.flac.wav音频文件加载到List[float]类型的数组或numpy.ndarray中获得值,例如通过 soundfile 库(pip install soundfile)。要准备好数组为input_values,应使用 AutoProcessor 进行填充和转换为torch.FloatTensor类型的张量。有关详细信息,请参见 Wav2Vec2Processor.call()。
  • attention_mask (torch.LongTensor,形状为(batch_size, sequence_length), 可选) — 用于避免在填充标记索引上执行卷积和注意力的掩码。选择的掩码值在[0, 1]范围内:
  • 对于未被掩码的标记为1
  • 对于被掩码的标记为0
  • 注意力掩码是什么?
    只有当相应的处理器具有config.return_attention_mask == True时才应传递attention_mask。对于所有处理器具有config.return_attention_mask == False的模型,例如wav2vec2-conformer-rel-pos-large,在进行批量推断时应避免传递attention_mask以避免性能下降。对于这些模型,input_values应简单地填充为 0 并在没有attention_mask的情况下传递。请注意,这些模型的结果也会因input_values是否填充而略有不同。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
  • return_dict (bool, 可选) — 是否返回一个 ModelOutput 而不是一个普通元组。
  • labels (torch.LongTensor,形状为(batch_size,), 可选) — 用于计算序列分类/回归损失的标签。索引应在[0, ..., config.num_labels - 1]范围内。如果config.num_labels == 1,则计算回归损失(均方损失),如果config.num_labels > 1,则计算分类损失(交叉熵)。

返回

transformers.modeling_outputs.TokenClassifierOutput 或tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.TokenClassifierOutput 或一个torch.FloatTensor元组(如果传递了return_dict=Falseconfig.return_dict=False时)包括根据配置(Wav2Vec2ConformerConfig)和输入的不同元素。

  • loss (torch.FloatTensor,形状为(1,), 可选, 当提供labels时返回) — 分类损失。
  • logits (torch.FloatTensor,形状为(batch_size, sequence_length, config.num_labels)) — 分类分数(SoftMax 之前)。
  • hidden_states (tuple(torch.FloatTensor), 可选, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(如果模型有嵌入层,则为嵌入输出的一个+每个层的输出的一个)。
    模型在每个层的输出以及可选的初始嵌入输出的隐藏状态。
  • attentionstuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。
    注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

Wav2Vec2ConformerForAudioFrameClassification 的前向方法,覆盖了__call__特殊方法。

虽然前向传递的配方需要在此函数内定义,但应该在此之后调用Module实例,而不是在此之后调用,因为前者负责运行前处理和后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoFeatureExtractor, Wav2Vec2ConformerForAudioFrameClassification
>>> 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
>>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/wav2vec2-conformer-rope-large-960h-ft")
>>> model = Wav2Vec2ConformerForAudioFrameClassification.from_pretrained("facebook/wav2vec2-conformer-rope-large-960h-ft")
>>> # audio file is decoded on the fly
>>> inputs = feature_extractor(dataset[0]["audio"]["array"], return_tensors="pt", sampling_rate=sampling_rate)
>>> with torch.no_grad():
...     logits = model(**inputs).logits
>>> probabilities = torch.sigmoid(logits[0])
>>> # labels is a one-hot array of shape (num_frames, num_speakers)
>>> labels = (probabilities > 0.5).long()

Wav2Vec2ConformerForXVector

class transformers.Wav2Vec2ConformerForXVector

<来源>

( config )

参数

  • config(Wav2Vec2ConformerConfig)- 模型的所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。

Wav2Vec2Conformer 模型,顶部带有 XVector 特征提取头,用于说话者验证等任务。

Wav2Vec2Conformer 是由 Alexei Baevski、Henry Zhou、Abdelrahman Mohamed、Michael Auli 在wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations中提出的。

此模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(如下载或保存等)。

此模型是 PyTorch nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。

forward

<来源>

( input_values: Optional attention_mask: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None labels: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.XVectorOutput or tuple(torch.FloatTensor)

参数

  • input_values(形状为(batch_size, sequence_length)torch.FloatTensor)- 输入原始语音波形的浮点值。值可以通过将.flac.wav音频文件加载到List[float]类型的数组或numpy.ndarray中获得,例如通过 soundfile 库(pip install soundfile)。要准备好数组为input_values,应使用 AutoProcessor 进行填充和转换为torch.FloatTensor类型的张量。有关详细信息,请参阅 Wav2Vec2Processor.call()。
  • attention_mask(形状为(batch_size, sequence_length)torch.LongTensor可选)- 用于避免在填充令牌索引上执行卷积和注意力的掩码。掩码值选在[0, 1]之间:
  • 对于未被masked的令牌为 1。
  • 对于被masked的令牌为 0。
  • 什么是注意力掩码?
    只有当相应的处理器具有 config.return_attention_mask == True 时才应传递 attention_mask。对于所有处理器具有 config.return_attention_mask == False 的模型,比如 wav2vec2-conformer-rel-pos-large,在进行批量推理时,应该 传递 attention_mask 以避免性能下降。对于这些模型,input_values 应该简单地用 0 填充并在不传递 attention_mask 的情况下传递。请注意,这些模型根据 input_values 是否填充会产生略有不同的结果。
  • output_attentionsbool可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的 attentions
  • output_hidden_statesbool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的 hidden_states
  • return_dictbool可选) — 是否返回 ModelOutput 而不是普通元组。
  • labels(形状为 (batch_size,)torch.LongTensor可选) — 用于计算序列分类/回归损失的标签。索引应在 [0, ..., config.num_labels - 1] 范围内。如果 config.num_labels == 1,则计算回归损失(均方损失),如果 config.num_labels > 1,则计算分类损失(交叉熵)。

返回

transformers.modeling_outputs.XVectorOutput 或 tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.XVectorOutput 或一个 torch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时)包含根据配置(Wav2Vec2ConformerConfig)和输入不同的元素。

  • loss(形状为 (1,)torch.FloatTensor可选,当提供 labels 时返回) — 分类损失。
  • logits(形状为 (batch_size, config.xvector_output_dim)torch.FloatTensor) — AMSoftmax 之前的分类隐藏状态。
  • embeddings(形状为 (batch_size, config.xvector_output_dim)torch.FloatTensor) — 用于基于向量相似性检索的话语嵌入。
  • hidden_statestuple(torch.FloatTensor)可选,当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — 形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor 元组(一个用于嵌入的输出 + 一个用于每一层的输出)。
    模型在每一层输出的隐藏状态加上初始嵌入输出。
  • attentionstuple(torch.FloatTensor)可选,当传递 output_attentions=True 或当 config.output_attentions=True 时返回) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组(每层一个)。
    在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。

Wav2Vec2ConformerForXVector 的前向方法,覆盖了 __call__ 特殊方法。

虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用 Module 实例而不是这个,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoFeatureExtractor, Wav2Vec2ConformerForXVector
>>> 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
>>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/wav2vec2-conformer-rope-large-960h-ft")
>>> model = Wav2Vec2ConformerForXVector.from_pretrained("facebook/wav2vec2-conformer-rope-large-960h-ft")
>>> # audio file is decoded on the fly
>>> inputs = feature_extractor(
...     [d["array"] for d in dataset[:2]["audio"]], sampling_rate=sampling_rate, return_tensors="pt", padding=True
... )
>>> with torch.no_grad():
...     embeddings = model(**inputs).embeddings
>>> embeddings = torch.nn.functional.normalize(embeddings, dim=-1).cpu()
>>> # the resulting embeddings can be used for cosine similarity-based retrieval
>>> cosine_sim = torch.nn.CosineSimilarity(dim=-1)
>>> similarity = cosine_sim(embeddings[0], embeddings[1])
>>> threshold = 0.7  # the optimal threshold is dataset-dependent
>>> if similarity < threshold:
...     print("Speakers are not the same!")

Wav2Vec2ConformerForPreTraining

class transformers.Wav2Vec2ConformerForPreTraining

< source >

( config: Wav2Vec2ConformerConfig )

参数

  • config (Wav2Vec2ConformerConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。

带有量化器和VQ头部的 Wav2Vec2Conformer 模型。Wav2Vec2Conformer 是由 Alexei Baevski、Henry Zhou、Abdelrahman Mohamed、Michael Auli 在wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations中提出的。

这个模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(如下载或保存等)。

这个模型是 PyTorch 的nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。

forward

<来源>

( input_values: Optional attention_mask: Optional = None mask_time_indices: Optional = None sampled_negative_indices: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.wav2vec2_conformer.modeling_wav2vec2_conformer.Wav2Vec2ConformerForPreTrainingOutput or tuple(torch.FloatTensor)

参数

  • input_values (torch.FloatTensor,形状为(batch_size, sequence_length)) — 输入原始语音波形的浮点值。可以通过将.flac.wav音频文件加载到List[float]类型的数组或numpy.ndarray中获得值,例如通过 soundfile 库(pip install soundfile)。为了准备数组为input_values,应使用 AutoProcessor 进行填充和转换为torch.FloatTensor类型的张量。查看 Wav2Vec2Processor.call()获取详细信息。
  • attention_mask (torch.LongTensor,形状为(batch_size, sequence_length)可选) — 用于避免在填充标记索引上执行卷积和注意力的掩码。掩码值选在[0, 1]之间:
  • 1 表示未被掩码的标记,
  • 0 表示被掩码的标记。
  • 注意力掩码是什么?
    只有当相应的处理器具有config.return_attention_mask == True时,才应传递attention_mask。对于所有处理器具有config.return_attention_mask == False的模型,比如wav2vec2-conformer-rel-pos-large,在进行批量推理时,应传递attention_mask以避免性能下降。对于这样的模型,input_values应该简单地用 0 填充并在不传递attention_mask的情况下传递。请注意,这些模型根据input_values是否填充会产生略有不同的结果。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请查看返回的张量下的attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请查看返回的张量下的hidden_states
  • return_dict (bool, 可选) — 是否返回一个 ModelOutput 而不是一个普通的元组。
  • mask_time_indices (torch.BoolTensor,形状为(batch_size, sequence_length)可选) — 用于对对比损失的提取特征进行掩码的索引。在训练模式下,模型学习在config.proj_codevector_dim空间中预测掩码提取特征。
  • sampled_negative_indices (torch.BoolTensor of shape (batch_size, sequence_length, num_negatives), 可选) — 指示哪些量化目标向量用作对比损失中的负采样向量的索引。预训练所需的必要输入。

返回

transformers.models.wav2vec2_conformer.modeling_wav2vec2_conformer.Wav2Vec2ConformerForPreTrainingOutput 或 tuple(torch.FloatTensor)

一个 transformers.models.wav2vec2_conformer.modeling_wav2vec2_conformer.Wav2Vec2ConformerForPreTrainingOutput 或一个 torch.FloatTensor 元组(如果传入 return_dict=Falseconfig.return_dict=False)包含各种元素,取决于配置(Wav2Vec2ConformerConfig)和输入。

  • loss (可选, 当传入 sample_negative_indices 时返回, torch.FloatTensor of shape (1,)) — 总损失,作为对比损失 (L_m) 和多样性损失 (L_d) 的和,如官方论文中所述。 (分类) 损失。
  • projected_states (torch.FloatTensor of shape (batch_size, sequence_length, config.proj_codevector_dim)) — 模型隐藏状态投影到 config.proj_codevector_dim,可用于预测掩码投影量化状态。
  • projected_quantized_states (torch.FloatTensor of shape (batch_size, sequence_length, config.proj_codevector_dim)) — 量化提取的特征向量投影到 config.proj_codevector_dim,代表对比损失的正目标向量。
  • hidden_states (tuple(torch.FloatTensor), 可选, 当传入 output_hidden_states=Trueconfig.output_hidden_states=True 时返回) — 由形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor 元组组成(一个用于嵌入输出,一个用于每一层的输出)。
    模型在每一层输出的隐藏状态加上初始嵌入输出。
  • attentions (tuple(torch.FloatTensor), 可选, 当传入 output_attentions=Trueconfig.output_attentions=True 时返回) — 由形状为 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组组成(每一层一个)。
    注意力权重经过注意力 softmax 后的结果,用于计算自注意力头中的加权平均值。
  • contrastive_loss (可选, 当传入 sample_negative_indices 时返回, torch.FloatTensor of shape (1,)) — 如官方论文中所述的对比损失 (L_m)。
  • diversity_loss (可选, 当传入 sample_negative_indices 时返回, torch.FloatTensor of shape (1,)) — 如官方论文中所述的多样性损失 (L_d)。

Wav2Vec2ConformerForPreTraining 的前向方法,覆盖了 __call__ 特殊方法。

虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用 Module 实例,而不是在此处调用,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。

例如:

>>> import torch
>>> from transformers import AutoFeatureExtractor, Wav2Vec2ConformerForPreTraining
>>> from transformers.models.wav2vec2_conformer.modeling_wav2vec2_conformer import _compute_mask_indices, _sample_negative_indices
>>> from datasets import load_dataset
>>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/wav2vec2-conformer-rel-pos-large")
>>> model = Wav2Vec2ConformerForPreTraining.from_pretrained("facebook/wav2vec2-conformer-rel-pos-large")
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> input_values = feature_extractor(ds[0]["audio"]["array"], return_tensors="pt").input_values  # Batch size 1
>>> # compute masked indices
>>> batch_size, raw_sequence_length = input_values.shape
>>> sequence_length = model._get_feat_extract_output_lengths(raw_sequence_length).item()
>>> mask_time_indices = _compute_mask_indices(
...     shape=(batch_size, sequence_length), mask_prob=0.2, mask_length=2
... )
>>> sampled_negative_indices = _sample_negative_indices(
...     features_shape=(batch_size, sequence_length),
...     num_negatives=model.config.num_negatives,
...     mask_time_indices=mask_time_indices,
... )
>>> mask_time_indices = torch.tensor(data=mask_time_indices, device=input_values.device, dtype=torch.long)
>>> sampled_negative_indices = torch.tensor(
...     data=sampled_negative_indices, device=input_values.device, dtype=torch.long
... )
>>> with torch.no_grad():
...     outputs = model(input_values, mask_time_indices=mask_time_indices)
>>> # compute cosine similarity between predicted (=projected_states) and target (=projected_quantized_states)
>>> cosine_sim = torch.cosine_similarity(outputs.projected_states, outputs.projected_quantized_states, dim=-1)
>>> # show that cosine similarity is much higher than random
>>> cosine_sim[mask_time_indices.to(torch.bool)].mean() > 0.5
tensor(True)
>>> # for contrastive loss training model should be put into train mode
>>> model = model.train()
>>> loss = model(
...     input_values, mask_time_indices=mask_time_indices, sampled_negative_indices=sampled_negative_indices
... ).loss


Transformers 4.37 中文文档(八十)(4)https://developer.aliyun.com/article/1563216

相关文章
|
4月前
|
异构计算 索引 AI芯片
Transformers 4.37 中文文档(五十)(7)
Transformers 4.37 中文文档(五十)
30 1
|
4月前
|
PyTorch TensorFlow API
Transformers 4.37 中文文档(四十)(9)
Transformers 4.37 中文文档(四十)
30 2
|
4月前
|
PyTorch 算法框架/工具 索引
Transformers 4.37 中文文档(四十)(7)
Transformers 4.37 中文文档(四十)
40 2
|
4月前
|
PyTorch TensorFlow API
Transformers 4.37 中文文档(四十)(8)
Transformers 4.37 中文文档(四十)
28 2
|
4月前
|
数据挖掘 PyTorch 语音技术
Transformers 4.37 中文文档(八十)(5)
Transformers 4.37 中文文档(八十)
28 2
|
4月前
|
存储 人工智能 PyTorch
Transformers 4.37 中文文档(八十)(2)
Transformers 4.37 中文文档(八十)
38 2
|
4月前
|
自然语言处理 PyTorch 语音技术
Transformers 4.37 中文文档(八十)(4)
Transformers 4.37 中文文档(八十)
69 2
|
4月前
|
自然语言处理 PyTorch 语音技术
Transformers 4.37 中文文档(八十)(1)
Transformers 4.37 中文文档(八十)
47 2
|
4月前
|
缓存 异构计算 索引
Transformers 4.37 中文文档(五十)(8)
Transformers 4.37 中文文档(五十)
23 1
|
4月前
|
缓存 PyTorch API
Transformers 4.37 中文文档(四十)(2)
Transformers 4.37 中文文档(四十)
106 1