Transformers 4.37 中文文档(七十九)(3)https://developer.aliyun.com/article/1564172
class transformers.modeling_outputs.Wav2Vec2BaseModelOutput
( last_hidden_state: FloatTensor = None extract_features: FloatTensor = None hidden_states: Optional = None attentions: Optional = None )
参数
last_hidden_state
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
) — 模型最后一层的隐藏状态序列。extract_features
(形状为(batch_size, sequence_length, conv_dim[-1])
的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 后的注意力权重,用于计算自注意力头中的加权平均值。
使用 Wav2Vec2 损失目标进行训练的模型的基类。
class transformers.models.wav2vec2.modeling_wav2vec2.Wav2Vec2ForPreTrainingOutput
( loss: Optional = None projected_states: FloatTensor = None projected_quantized_states: FloatTensor = None codevector_perplexity: FloatTensor = None hidden_states: Optional = None attentions: Optional = None contrastive_loss: Optional = None diversity_loss: Optional = None )
参数
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),如官方论文中所述。
Wav2Vec2ForPreTraining 的输出类型,具有潜在的隐藏状态和注意力。
class transformers.models.wav2vec2.modeling_flax_wav2vec2.FlaxWav2Vec2BaseModelOutput
( last_hidden_state: Array = None extract_features: Array = None hidden_states: Optional = None attentions: Optional = None )
参数
last_hidden_state
(jnp.ndarray
of shape(batch_size, sequence_length, hidden_size)
) — 模型最后一层的隐藏状态序列。extract_features
(jnp.ndarray
of shape(batch_size, sequence_length, last_conv_dim)
) — 模型最后一个卷积层提取的特征向量序列,其中last_conv_dim
是最后一个卷积层的维度。hidden_states
(tuple(jnp.ndarray)
, 可选, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个用于嵌入输出,一个用于每一层的输出)。
模型在每一层输出处的隐藏状态以及初始嵌入输出。attentions
(tuple(jnp.ndarray)
, 可选, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每层一个)。
注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
FlaxWav2Vec2BaseModelOutput
的输出类型,具有潜在的隐藏状态和注意力。
replace
( **updates )
“返回一个用新值替换指定字段的新对象。
class transformers.models.wav2vec2.modeling_flax_wav2vec2.FlaxWav2Vec2ForPreTrainingOutput
( projected_states: Array = None projected_quantized_states: Array = None codevector_perplexity: Array = None hidden_states: Optional = None attentions: Optional = None )
参数
loss
(可选, 当模型处于训练模式时返回,形状为(1,)
的jnp.ndarray
) — 总损失,作为对比损失(L_m)和多样性损失(L_d)的总和,如官方论文中所述。 (分类) 损失。projected_states
(jnp.ndarray
,形状为(batch_size, sequence_length, config.proj_codevector_dim)
) — 模型的隐藏状态投影到config.proj_codevector_dim,可用于预测掩码投影量化状态。projected_quantized_states
(jnp.ndarray
,形状为(batch_size, sequence_length, config.proj_codevector_dim)
) — 投影到config.proj_codevector_dim的量化提取特征向量,表示对比损失的正目标向量。hidden_states
(tuple(jnp.ndarray)
, 可选, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个用于嵌入输出,一个用于每一层的输出)。
模型在每一层输出处的隐藏状态以及初始嵌入输出。attentions
(tuple(jnp.ndarray)
, 可选, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每层一个)。
注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
FlaxWav2Vec2ForPreTrainingOutput
的输出类型,具有潜在的隐藏状态和注意力。
replace
( **updates )
“返回一个用新值替换指定字段的新对象。
PytorchHide Pytorch 内容
Wav2Vec2Model
class transformers.Wav2Vec2Model
( config: Wav2Vec2Config )
参数
config
(Wav2Vec2Config) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
裸的 Wav2Vec2 模型变压器输出原始隐藏状态,没有特定的顶部头。Wav2Vec2 是由 Alexei Baevski、Henry Zhou、Abdelrahman Mohamed、Michael Auli 在 wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations 中提出的。
该模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(如下载或保存等)。
该模型是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
( input_values: Optional attention_mask: Optional = None mask_time_indices: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.Wav2Vec2BaseModelOutput or tuple(torch.FloatTensor)
参数
input_values
(torch.FloatTensor
of shape(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
of shape(batch_size, sequence_length)
, optional) — 用于避免在填充标记索引上执行卷积和注意力的掩码。掩码值选择在[0, 1]
之间:
- 1 用于
未被掩码
的标记, - 0 用于
被掩码
的标记。
- 什么是注意力掩码?
只有在相应的处理器具有config.return_attention_mask == True
时才应传递attention_mask
。对于所有处理器具有config.return_attention_mask == False
的模型,例如 wav2vec2-base,在进行批量推断时应不
传递attention_mask
以避免性能下降。对于这些模型,input_values
应简单地用 0 填充并在不传递attention_mask
的情况下传递。请注意,这些模型根据input_values
是否填充会产生略有不同的结果。 output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。return_dict
(bool
, optional) — 是否返回 ModelOutput 而不是普通元组。
返回
transformers.modeling_outputs.Wav2Vec2BaseModelOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.Wav2Vec2BaseModelOutput 或一个 torch.FloatTensor
元组(如果传递了 return_dict=False
或当 config.return_dict=False
时)包含各种元素,具体取决于配置(Wav2Vec2Config)和输入。
last_hidden_state
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
) — 模型最后一层的隐藏状态序列输出。extract_features
(torch.FloatTensor
,形状为(batch_size, sequence_length, conv_dim[-1])
) — 模型最后一个卷积层提取的特征向量序列。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 后的注意力权重,用于计算自注意力头中的加权平均值。
Wav2Vec2Model 的 forward 方法,覆盖了 __call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用 Module
实例,而不是在此处调用,因为前者会负责运行前处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoProcessor, Wav2Vec2Model >>> import torch >>> from datasets import load_dataset >>> 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-base-960h") >>> model = Wav2Vec2Model.from_pretrained("facebook/wav2vec2-base-960h") >>> # audio file is decoded on the fly >>> inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt") >>> with torch.no_grad(): ... outputs = model(**inputs) >>> last_hidden_states = outputs.last_hidden_state >>> list(last_hidden_states.shape) [1, 292, 768]
Wav2Vec2ForCTC
class transformers.Wav2Vec2ForCTC
( config target_lang: Optional = None )
参数
config
(Wav2Vec2Config) — 模型的所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained() 方法来加载模型权重。target_lang
(str
,可选的) — 适配器权重的语言 id。适配器权重存储在格式为 adapter..safetensors 或 adapter..bin 的文件中。仅在使用带有适配器的 Wav2Vec2ForCTC 实例时相关。默认使用 ‘eng’。
带有顶部 语言建模
的 Wav2Vec2 模型,用于 Connectionist Temporal Classification (CTC)。Wav2Vec2 是由 Alexei Baevski、Henry Zhou、Abdelrahman Mohamed、Michael Auli 在 wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations 中提出的。
这个模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(如下载或保存等)。
这个模型是 PyTorch torch.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
(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
of shape(batch_size, sequence_length)
, 可选) — 用于避免在填充标记索引上执行卷积和注意力的掩码。掩码值选择在[0, 1]
中:
- 对于未被遮蔽的标记,为 1,
- 对于被遮蔽的标记,为 0。
- 什么是注意力掩码?
只有当相应的处理器具有config.return_attention_mask == True
时,才应传递attention_mask
。对于所有处理器具有config.return_attention_mask == False
的模型,例如wav2vec2-base,在进行批量推断时,应避免传递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
of shape(batch_size, target_length)
, 可选) — 连接主义时间分类的标签。请注意,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
时)包含根据配置(Wav2Vec2Config)和输入的不同元素。
loss
(torch.FloatTensor
of shape(1,)
, 可选, 当提供labels
时返回) — 语言建模损失(用于下一个标记的预测)。logits
(torch.FloatTensor
of shape(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测分数(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 后的注意力权重,用于计算自注意力头中的加权平均值。
Wav2Vec2ForCTC 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的配方需要在此函数内定义,但应该在此之后调用 Module
实例,而不是这个,因为前者负责运行前后处理步骤,而后者会默默忽略它们。
示例:
>>> from transformers import AutoProcessor, Wav2Vec2ForCTC >>> 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-base-960h") >>> model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h") >>> # 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) 53.48
load_adapter
( target_lang: str force_load = True **kwargs )
参数
target_lang
(str
) — 必须是现有适配器权重的语言 ID。适配器权重存储在格式 adapter..safetensors 或 adapter..bin。force_load
(bool
, 默认为True
) — 即使target_lang
与self.target_lang
匹配,也要加载权重。cache_dir
(Union[str, os.PathLike]
, 可选) — 下载的预训练模型配置应该缓存在其中的目录路径,如果不使用标准缓存。force_download
(bool
, 可选, 默认为False
) — 是否强制(重新)下载模型权重和配置文件,覆盖缓存版本(如果存在)。resume_download
(bool
, 可选, 默认为False
) — 是否删除接收不完整的文件。如果存在这样的文件,将尝试恢复下载。proxies
(Dict[str, str]
, 可选) — 一个按协议或端点使用的代理服务器字典,例如,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}
。每个请求都会使用代理。local_files_only(bool,
可选, 默认为False
) — 是否仅查看本地文件(即不尝试下载模型)。token
(str
或bool
, 可选) — 用作远程文件的 HTTP bearer 授权的令牌。如果为True
,或未指定,将使用运行huggingface-cli login
时生成的令牌(存储在~/.huggingface
中)。revision
(str
, 可选, 默认为"main"
) — 要使用的特定模型版本。它可以是分支名称、标签名称或提交 ID,因为我们在 huggingface.co 上使用基于 git 的系统存储模型和其他工件,所以revision
可以是 git 允许的任何标识符。
要测试您在 Hub 上提交的拉取请求,可以传递 `revision=“refs/pr/“。mirror
(str
, 可选) — 将源镜像到中国以加速下载。如果您来自中国并且有访问问题,可以设置此选项以解决问题。请注意,我们不保证及时性或安全性。请参考镜像站点获取更多信息。
从预训练的适配器模型加载语言适配器模型。
激活特殊的“离线模式”以在防火墙环境中使用此方法。
示例:
>>> from transformers import Wav2Vec2ForCTC, AutoProcessor >>> ckpt = "facebook/mms-1b-all" >>> processor = AutoProcessor.from_pretrained(ckpt) >>> model = Wav2Vec2ForCTC.from_pretrained(ckpt, target_lang="eng") >>> # set specific language >>> processor.tokenizer.set_target_lang("spa") >>> model.load_adapter("spa")
Wav2Vec2ForSequenceClassification
class transformers.Wav2Vec2ForSequenceClassification
( config )
参数
config
(Wav2Vec2Config) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained() 方法以加载模型权重。
在顶部添加了一个序列分类头的 Wav2Vec2 模型(一个线性层在池化输出上方)用于 SUPERB 关键词识别等任务。
Wav2Vec2 是由 Alexei Baevski、Henry Zhou、Abdelrahman Mohamed、Michael Auli 在 wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations 中提出的。
该模型继承自 PreTrainedModel。检查超类文档以获取库为所有模型实现的通用方法(例如下载或保存等)的信息。
该模型是 PyTorch torch.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.SequenceClassifierOutput or tuple(torch.FloatTensor)
参数
input_values
(torch.FloatTensor
,形状为(batch_size, sequence_length)
) — 输入原始语音波形的浮点值。可以通过将.flac
或.wav
音频文件加载到List[float]
类型的数组或numpy.ndarray
中获得值,例如通过声音文件库(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-base,在进行批量推断时,应避免传递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.SequenceClassifierOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.SequenceClassifierOutput 或一个torch.FloatTensor
元组(如果传递了return_dict=False
或config.return_dict=False
)包含根据配置(Wav2Vec2Config)和输入的不同元素。
loss
(torch.FloatTensor
,形状为(1,)
,可选,当提供labels
时返回) — 分类(或如果config.num_labels==1
则为回归)损失。logits
(形状为(batch_size, config.num_labels)
的torch.FloatTensor
)- 分类(如果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 之后的注意力权重,用于计算自注意力头中的加权平均值。
Wav2Vec2ForSequenceClassification 的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的方法需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例:
>>> from transformers import AutoFeatureExtractor, Wav2Vec2ForSequenceClassification >>> 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("superb/wav2vec2-base-superb-ks") >>> model = Wav2Vec2ForSequenceClassification.from_pretrained("superb/wav2vec2-base-superb-ks") >>> # 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] >>> predicted_label '_unknown_' >>> # 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 >>> round(loss.item(), 2) 6.54
Wav2Vec2ForAudioFrameClassification
class transformers.Wav2Vec2ForAudioFrameClassification
( config )
参数
config
(Wav2Vec2Config)- 具有模型所有参数的模型配置类。 使用配置文件初始化不会加载与模型关联的权重,只加载配置。 请查看 from_pretrained()方法以加载模型权重。
带有顶部帧分类头的 Wav2Vec2 模型,用于 Speaker Diarization 等任务。
Wav2Vec2 是由 Alexei Baevski、Henry Zhou、Abdelrahman Mohamed、Michael Auli 在wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations中提出的。
此模型继承自 PreTrainedModel。 检查超类文档以获取库为所有模型实现的通用方法(例如下载或保存等)。
此模型是 PyTorch torch.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
(形状为(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]
中:
- 对于“未屏蔽”的标记,
- 对于被
masked
的标记为 0。
- 注意力掩码是什么?
只有在相应的处理器具有config.return_attention_mask == True
时才应传递attention_mask
。对于所有处理器具有config.return_attention_mask == False
的模型,例如 wav2vec2-base,在进行批量推理时,应不
传递attention_mask
以避免性能下降。对于这些模型,input_values
应该简单地用 0 填充并在不传递attention_mask
的情况下传递。请注意,这些模型根据input_values
是否填充会产生略有不同的结果。 output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。return_dict
(bool
, optional) — 是否返回 ModelOutput 而不是普通元组。labels
(torch.LongTensor
,形状为(batch_size,)
,optional) — 用于计算序列分类/回归损失的标签。索引应在[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
)包含根据配置(Wav2Vec2Config)和输入不同元素。
loss
(torch.FloatTensor
,形状为(1,)
,optional,当提供labels
时返回) — 分类损失。logits
(torch.FloatTensor
,形状为(batch_size, sequence_length, config.num_labels)
) — 分类分数(SoftMax 之前)。hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(如果模型有嵌入层的输出,则为嵌入层的输出 + 每层的输出)。
模型在每一层输出的隐藏状态以及可选的初始嵌入输出。attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。
在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
Wav2Vec2ForAudioFrameClassification 的前向方法,覆盖了 __call__
特殊方法。
虽然前向传递的配方需要在此函数内定义,但应该在此之后调用 Module
实例而不是这个,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoFeatureExtractor, Wav2Vec2ForAudioFrameClassification >>> 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("anton-l/wav2vec2-base-superb-sd") >>> model = Wav2Vec2ForAudioFrameClassification.from_pretrained("anton-l/wav2vec2-base-superb-sd") >>> # 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() >>> labels[0].tolist() [0, 0]
Wav2Vec2ForXVector
class transformers.Wav2Vec2ForXVector
( config )
参数
config
(Wav2Vec2Config)— 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
Wav2Vec2 模型在顶部具有 XVector 特征提取头,用于 Speaker Verification 等任务。
Wav2Vec2 是由 Alexei Baevski、Henry Zhou、Abdelrahman Mohamed、Michael Auli 提出的wav2vec 2.0:自监督学习语音表示的框架。
这个模型继承自 PreTrainedModel。查看超类文档以获取库实现的所有模型的通用方法(如下载或保存等)。
这个模型是 PyTorch 的torch.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-base,在进行批量推断时应避免传递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
时)包含各种元素,具体取决于配置(Wav2Vec2Config)和输入。
loss
(torch.FloatTensor
,形状为(1,)
,可选,当提供labels
时返回)— 分类损失。logits
(torch.FloatTensor
,形状为(batch_size, config.xvector_output_dim)
) — AMSoftmax 之前的分类隐藏状态。embeddings
(torch.FloatTensor
,形状为(batch_size, config.xvector_output_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 之后,用于计算自注意力头中的加权平均值。
Wav2Vec2ForXVector 的前向方法,覆盖了 __call__
特殊方法。
虽然前向传递的步骤需要在这个函数内定义,但应该在此之后调用 Module
实例,而不是这个,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoFeatureExtractor, Wav2Vec2ForXVector >>> 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("anton-l/wav2vec2-base-superb-sv") >>> model = Wav2Vec2ForXVector.from_pretrained("anton-l/wav2vec2-base-superb-sv") >>> # 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!") >>> round(similarity.item(), 2) 0.98
Wav2Vec2ForPreTraining
transformers.Wav2Vec2ForPreTraining
类
( config: Wav2Vec2Config )
参数
config
(Wav2Vec2Config) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained() 方法以加载模型权重。
Wav2Vec2 模型带有量化器和顶部的 VQ
头。Wav2Vec2 是由 Alexei Baevski、Henry Zhou、Abdelrahman Mohamed、Michael Auli 在 wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations 中提出的。
这个模型继承自 PreTrainedModel。查看超类文档以获取库实现的所有模型的通用方法(如下载或保存等)。
这个模型是 PyTorch torch.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.modeling_wav2vec2.Wav2Vec2ForPreTrainingOutput 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]
中:
- 对于
未屏蔽
的标记, - 对于
被屏蔽
的标记。
- 什么是注意力掩码?
只有当相应的处理器具有config.return_attention_mask == True
时,才应传递attention_mask
。对于所有处理器具有config.return_attention_mask == False
的模型,比如wav2vec2-base,在进行批量推理时,应不
传递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
(形状为(batch_size, sequence_length)
的torch.BoolTensor
,可选)— 用于对比损失中掩盖提取特征的索引。在训练模式下,模型学习在config.proj_codevector_dim空间中预测被掩盖的提取特征。sampled_negative_indices
(形状为(batch_size, sequence_length, num_negatives)
的torch.BoolTensor
,可选)— 指示哪些量化目标向量在对比损失中用作负采样向量的索引。预训练所需的输入。
返回
transformers.models.wav2vec2.modeling_wav2vec2.Wav2Vec2ForPreTrainingOutput 或tuple(torch.FloatTensor)
一个 transformers.models.wav2vec2.modeling_wav2vec2.Wav2Vec2ForPreTrainingOutput 或一个torch.FloatTensor
元组(如果传递了return_dict=False
或当config.return_dict=False
时)包含根据配置(Wav2Vec2Config)和输入而异的各种元素。
loss
(可选,当传递sample_negative_indices
时返回,形状为(1,)
的torch.FloatTensor
)— 总损失,作为对比损失(L_m)和多样性损失(L_d)的总和,如官方论文中所述。 (分类)损失。projected_states
(形状为(batch_size, sequence_length, config.proj_codevector_dim)
的torch.FloatTensor
)— 模型投影到config.proj_codevector_dim的隐藏状态,可用于预测被屏蔽的投影量化状态。projected_quantized_states
(形状为(batch_size, sequence_length, config.proj_codevector_dim)
的torch.FloatTensor
) — 量化提取的特征向量投影到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
时返回,形状为(1,)
的torch.FloatTensor
) — 对比损失(L_m),如官方论文中所述。diversity_loss
(可选,当传递sample_negative_indices
时返回,形状为(1,)
的torch.FloatTensor
) — 多样性损失(L_d),如官方论文中所述。
Wav2Vec2ForPreTraining 的前向方法,覆盖__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> import torch >>> from transformers import AutoFeatureExtractor, Wav2Vec2ForPreTraining >>> from transformers.models.wav2vec2.modeling_wav2vec2 import _compute_mask_indices, _sample_negative_indices >>> from datasets import load_dataset >>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/wav2vec2-base") >>> model = Wav2Vec2ForPreTraining.from_pretrained("facebook/wav2vec2-base") >>> 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
TensorFlow 隐藏 TensorFlow 内容
Transformers 4.37 中文文档(七十九)(5)https://developer.aliyun.com/article/1564174