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_attentions
(bool
,可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。output_hidden_states
(bool
,可选)- 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。return_dict
(bool
,可选)- 是否返回 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=False
或config.return_dict=False
时)包含根据配置(Wav2Vec2ConformerConfig)和输入的各种元素。
loss
(形状为(1,)
的torch.FloatTensor
,可选,当提供labels
时返回)- 语言建模损失(用于下一个标记预测)。logits
(形状为(batch_size, sequence_length, config.vocab_size)
的torch.FloatTensor
)- 语言建模头的预测分数(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 之后的注意力权重,用于计算自注意力头中的加权平均值。
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_attentions
(bool
,可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。output_hidden_states
(bool
,可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。return_dict
(bool
,可选)— 是否返回 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=False
或config.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=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 后的注意力权重,用于计算自注意力头中的加权平均值。
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_attentions
(bool
,可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。output_hidden_states
(bool
,可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。return_dict
(bool
,可选) — 是否返回 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_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 之后的注意力权重,用于计算自注意力头中的加权平均值。
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
( 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=False
或 config.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=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 后的结果,用于计算自注意力头中的加权平均值。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