原始文本:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/clipseg
CLIPSeg 模型是由 Timo Lüddecke 和 Alexander Ecker 在使用文本和图像提示进行图像分割中提出的。CLIPSeg 在冻结的 CLIP 模型之上添加了一个最小的解码器,用于零样本和一样本图像分割。
论文摘要如下:
图像分割通常通过训练一个固定对象类别的模型来解决。随后合并额外类别或更复杂查询是昂贵的,因为需要在包含这些表达的数据集上重新训练模型。在这里,我们提出了一个系统,可以根据测试时的任意提示生成图像分割。提示可以是文本或图像。这种方法使我们能够为三种常见的分割任务创建一个统一的模型(仅训练一次),这些任务具有不同的挑战:指代表达分割、零样本分割和一样本分割。我们基于 CLIP 模型作为骨干,扩展了一个基于 transformer 的解码器,实现了密集预测。在扩展的 PhraseCut 数据集上训练后,我们的系统可以根据自由文本提示或表达查询的附加图像为图像生成二进制分割图。我们详细分析了不同变体的基于图像的提示。这种新颖的混合输入不仅可以动态适应上述三种分割任务,还可以适应任何可以制定文本或图像查询的二进制分割任务。最后,我们发现我们的系统能够很好地适应涉及功能或属性的广义查询
CLIPSeg 概述。取自原始论文。
input_ids
提供给模型)或图像(作为conditional_pixel_values
提供给模型)。还可以提供自定义的条件嵌入(作为conditional_embeddings
提供给模型)。
列出了官方 Hugging Face 和社区(由🌎表示)的资源,以帮助您开始使用 CLIPSeg。如果您有兴趣提交资源以包含在此处,请随时打开一个 Pull Request,我们将进行审查!资源应该展示一些新东西,而不是重复现有资源。
图像分割
class transformers.CLIPSegConfig
( text_config = None vision_config = None projection_dim = 512 logit_scale_init_value = 2.6592 extract_layers = [3, 6, 9] reduce_dim = 64 decoder_num_attention_heads = 4 decoder_attention_dropout = 0.0 decoder_hidden_act = 'quick_gelu' decoder_intermediate_size = 2048 conditional_layer = 0 use_complex_transposed_convolution = False **kwargs )
参数
text_config
(dict
,可选)—用于初始化 CLIPSegTextConfig 的配置选项字典。
vision_config
(dict
,可选) — 用于初始化 CLIPSegVisionConfig 的配置选项的字典。
projection_dim
(int
,可选,默认为 512) — 文本和视觉投影层的维度。
logit_scale_init_value
(float
,可选,默认为 2.6592) — logit_scale参数的初始值。默认值根据原始 CLIPSeg 实现使用。
extract_layers
(List[int]
,可选,默认为[3, 6, 9]
) — 在通过 CLIP 的冻结视觉骨干传递查询图像时要提取的层。
reduce_dim
(int
,可选,默认为 64) — 用于减少 CLIP 视觉嵌入的维度。
decoder_num_attention_heads
(int
,可选,默认为 4) — CLIPSeg 解码器中的注意力头数。
decoder_attention_dropout
(float
,可选,默认为 0.0) — 注意力概率的丢弃比率。
decoder_hidden_act
(str
或function
,可选,默认为"quick_gelu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
、"relu"
、"selu"
和"gelu_new"
以及"quick_gelu"
。
decoder_intermediate_size
(int
,可选,默认为 2048) — Transformer 解码器中“中间”(即前馈)层的维度。
conditional_layer
(int
,可选,默认为 0) — 使用 Transformer 编码器的层,其激活将与条件嵌入使用 FiLM(Feature-wise Linear Modulation)组合。如果为 0,则使用最后一层。
use_complex_transposed_convolution
(bool
,可选,默认为False
) — 是否在解码器中使用更复杂的转置卷积,从而实现更精细的分割。
kwargs
(可选) — 关键字参数的字典。
CLIPSegConfig 是用于存储 CLIPSegModel 配置的配置类。它用于根据指定的参数实例化一个 CLIPSeg 模型,定义文本模型和视觉模型配置。使用默认值实例化配置将产生与 CLIPSeg CIDAS/clipseg-rd64架构类似的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import CLIPSegConfig, CLIPSegModel
>>> # Initializing a CLIPSegConfig with CIDAS/clipseg-rd64 style configuration
>>> configuration = CLIPSegConfig()
>>> # Initializing a CLIPSegModel (with random weights) from the CIDAS/clipseg-rd64 style configuration
>>> model = CLIPSegModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
>>> # We can also initialize a CLIPSegConfig from a CLIPSegTextConfig and a CLIPSegVisionConfig
>>> # Initializing a CLIPSegText and CLIPSegVision configuration
>>> config_text = CLIPSegTextConfig()
>>> config_vision = CLIPSegVisionConfig()
>>> config = CLIPSegConfig.from_text_vision_configs(config_text, config_vision)
from_text_vision_configs
( text_config: CLIPSegTextConfig vision_config: CLIPSegVisionConfig **kwargs ) → export const metadata = 'undefined';CLIPSegConfig
返回值
CLIPSegConfig
配置对象的一个实例
从 clipseg 文本模型配置和 clipseg 视觉模型配置实例化一个 CLIPSegConfig(或派生类)。
class transformers.CLIPSegTextConfig
( vocab_size = 49408 hidden_size = 512 intermediate_size = 2048 num_hidden_layers = 12 num_attention_heads = 8 max_position_embeddings = 77 hidden_act = 'quick_gelu' layer_norm_eps = 1e-05 attention_dropout = 0.0 initializer_range = 0.02 initializer_factor = 1.0 pad_token_id = 1 bos_token_id = 49406 eos_token_id = 49407 **kwargs )
参数
vocab_size
(int
,可选,默认为 49408) — CLIPSeg 文本模型的词汇量。定义了在调用 CLIPSegModel 时可以由inputs_ids
表示的不同标记数量。
hidden_size
(int
,可选,默认为 512) — 编码器层和池化器层的维度。
intermediate_size
(int
, optional, defaults to 2048) — Transformer 编码器中“中间”(即前馈)层的维度。
num_hidden_layers
(int
, optional, defaults to 12) — Transformer 编码器中隐藏层的数量。
num_attention_heads
(int
, optional, defaults to 8) — Transformer 编码器中每个注意力层的注意力头数。
max_position_embeddings
(int
, optional, defaults to 77) — 此模型可能使用的最大序列长度。通常将其设置为一个较大的值以防万一(例如 512、1024 或 2048)。
hidden_act
(str
or function
, optional, defaults to "quick_gelu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
、"relu"
、"selu"
和"gelu_new"
以及"quick_gelu"
。
layer_norm_eps
(float
, optional, defaults to 1e-05) — 层归一化层使用的 epsilon。
attention_dropout
(float
, optional, defaults to 0.0) — 注意力概率的丢弃比率。
initializer_range
(float
, optional, defaults to 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。
initializer_factor
(float
, optional, defaults to 1.0) — 用于初始化所有权重矩阵的因子(应保持为 1,用于内部初始化测试)。
pad_token_id
(int
, optional, defaults to 1) — 填充标记 id。
bos_token_id
(int
, optional, defaults to 49406) — 流的开始标记 id。
eos_token_id
(int
, optional, defaults to 49407) — 流的结束标记 id。
这是一个配置类,用于存储 CLIPSegModel 的配置。根据指定的参数实例化一个 CLIPSeg 模型,定义模型架构。使用默认值实例化配置将产生与 CLIPSeg CIDAS/clipseg-rd64架构类似的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import CLIPSegTextConfig, CLIPSegTextModel
>>> # Initializing a CLIPSegTextConfig with CIDAS/clipseg-rd64 style configuration
>>> configuration = CLIPSegTextConfig()
>>> # Initializing a CLIPSegTextModel (with random weights) from the CIDAS/clipseg-rd64 style configuration
>>> model = CLIPSegTextModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
class transformers.CLIPSegVisionConfig
( hidden_size = 768 intermediate_size = 3072 num_hidden_layers = 12 num_attention_heads = 12 num_channels = 3 image_size = 224 patch_size = 32 hidden_act = 'quick_gelu' layer_norm_eps = 1e-05 attention_dropout = 0.0 initializer_range = 0.02 initializer_factor = 1.0 **kwargs )
参数
hidden_size
(int
, optional, defaults to 768) — 编码器层和池化器层的维度。
intermediate_size
(int
, optional, defaults to 3072) — Transformer 编码器中“中间”(即前馈)层的维度。
num_hidden_layers
(int
, optional, defaults to 12) — Transformer 编码器中隐藏层的数量。
num_attention_heads
(int
, optional, defaults to 12) — Transformer 编码器中每个注意力层的注意力头数。
num_channels
(int
, optional, defaults to 3) — 输入通道的数量。
image_size
(int
, optional, defaults to 224) — 每个图像的大小(分辨率)。
patch_size
(int
, optional, defaults to 32) — 每个 patch 的大小(分辨率)。
hidden_act
(str
or function
, optional, defaults to "quick_gelu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
、"relu"
、"selu"
和"gelu_new"
以及"quick_gelu"
。
layer_norm_eps
(float
, optional, defaults to 1e-05) — 层归一化层使用的 epsilon。
attention_dropout
(float
, optional, defaults to 0.0) — 注意力概率的丢弃比率。
initializer_range
(float
, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。
initializer_factor
(float
, 可选, 默认为 1.0) — 用于初始化所有权重矩阵的因子(应保持为 1,内部用于初始化测试)。
这是用于存储 CLIPSegModel 配置的配置类。它用于根据指定的参数实例化一个 CLIPSeg 模型,定义模型架构。使用默认值实例化配置将产生与 CLIPSeg CIDAS/clipseg-rd64架构类似的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import CLIPSegVisionConfig, CLIPSegVisionModel
>>> # Initializing a CLIPSegVisionConfig with CIDAS/clipseg-rd64 style configuration
>>> configuration = CLIPSegVisionConfig()
>>> # Initializing a CLIPSegVisionModel (with random weights) from the CIDAS/clipseg-rd64 style configuration
>>> model = CLIPSegVisionModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
class transformers.CLIPSegProcessor
( image_processor = None tokenizer = None **kwargs )
参数
image_processor
(ViTImageProcessor, 可选) — 图像处理器是必需的输入。
tokenizer
(CLIPTokenizerFast, 可选) — 标记器是必需的输入。
构建一个 CLIPSeg 处理器,将 CLIPSeg 图像处理器和 CLIP 标记器包装成一个单一处理器。
CLIPSegProcessor 提供了 ViTImageProcessor 和 CLIPTokenizerFast 的所有功能。查看__call__()
和 decode()以获取更多信息。
batch_decode
( *args **kwargs )
此方法将其所有参数转发到 CLIPTokenizerFast 的 batch_decode()。请参考此方法的文档字符串以获取更多信息。
decode
( *args **kwargs )
此方法将其所有参数转发到 CLIPTokenizerFast 的 decode()。请参考此方法的文档字符串以获取更多信息。
class transformers.CLIPSegModel
( config: CLIPSegConfig )
参数
config
(CLIPSegConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。此模型是 PyTorch 的torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
( input_ids: Optional = None pixel_values: Optional = None attention_mask: Optional = None position_ids: Optional = None return_loss: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.clipseg.modeling_clipseg.CLIPSegOutput or tuple(torch.FloatTensor)
参数
input_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。默认情况下将忽略填充。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。
什么是输入 ID?
attention_mask
(torch.Tensor
,形状为(batch_size, sequence_length)
,optional) — 避免在填充标记索引上执行注意力的蒙版。蒙版值选择在[0, 1]
中:
masked
的标记为 1,
masked
的标记为 0。
什么是注意力蒙版?
position_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
,optional) — 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。
什么是位置 ID?
pixel_values
(torch.FloatTensor
,形状为(batch_size, num_channels, height, width)
) — 像素值。默认情况下将忽略填充。可以使用 AutoImageProcessor 获取像素值。有关详细信息,请参阅 CLIPImageProcessor.call
()。
return_loss
(bool
, optional) — 是否返回对比损失。
output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量中的attentions
。
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states
。
return_dict
(bool
, optional) — 是否返回 ModelOutput 而不是普通元组。
返回
transformers.models.clipseg.modeling_clipseg.CLIPSegOutput
或tuple(torch.FloatTensor)
一个transformers.models.clipseg.modeling_clipseg.CLIPSegOutput
或一个torch.FloatTensor
元组(如果传递了return_dict=False
或config.return_dict=False
时)包含各种元素,具体取决于配置(<class 'transformers.models.clipseg.configuration_clipseg.CLIPSegConfig'>
)和输入。
loss
(torch.FloatTensor
,形状为(1,)
,optional,当return_loss
为True
时返回) — 图像-文本相似性的对比损失。
logits_per_image:(torch.FloatTensor
,形状为(image_batch_size, text_batch_size)
) — image_embeds
和text_embeds
之间的缩放点积分数。这代表图像-文本相似性分数。
logits_per_text:(torch.FloatTensor
,形状为(text_batch_size, image_batch_size)
) — text_embeds
和image_embeds
之间的缩放点积分数。这代表文本-图像相似性分数。
text_embeds(torch.FloatTensor
,形状为(batch_size, output_dim
) — 通过将投影层应用于 CLIPSegTextModel 的汇聚输出获得的文本嵌入。
image_embeds(torch.FloatTensor
,形状为(batch_size, output_dim
) — 通过将投影层应用于 CLIPSegVisionModel 的汇聚输出获得的图像嵌入。
text_model_output(BaseModelOutputWithPooling):
CLIPSegTextModel 的输出。
vision_model_output(BaseModelOutputWithPooling):
CLIPSegVisionModel 的输出。
CLIPSegModel 的前向方法,覆盖__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, CLIPSegModel
>>> processor = AutoProcessor.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> model = CLIPSegModel.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> inputs = processor(
... text=["a photo of a cat", "a photo of a dog"], images=image, return_tensors="pt", padding=True
... )
>>> outputs = model(**inputs)
>>> logits_per_image = outputs.logits_per_image # this is the image-text similarity score
>>> probs = logits_per_image.softmax(dim=1) # we can take the softmax to get the label probabilities
get_text_features
( input_ids: Optional = None attention_mask: Optional = None position_ids: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';text_features (torch.FloatTensor of shape (batch_size, output_dim)
参数
input_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
)— 词汇表中输入序列标记的索引。默认情况下将忽略填充。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。
什么是输入 ID?
attention_mask
(torch.Tensor
,形状为(batch_size, sequence_length)
,可选)— 用于避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
之间:
什么是注意力掩码?
position_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
,可选)— 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。
什么是位置 ID?
output_attentions
(bool
,可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。
output_hidden_states
(bool
,可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。
return_dict
(bool
,可选)— 是否返回 ModelOutput 而不是普通元组。
返回
文本特征(torch.FloatTensor
,形状为(batch_size, output_dim)
)
通过将投影层应用于 CLIPSegTextModel 的汇聚输出获得的文本嵌入。
CLIPSegModel 的前向方法,覆盖__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoTokenizer, CLIPSegModel
>>> tokenizer = AutoTokenizer.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> model = CLIPSegModel.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="pt")
>>> text_features = model.get_text_features(**inputs)
get_image_features
( pixel_values: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';image_features (torch.FloatTensor of shape (batch_size, output_dim)
参数
pixel_values
(torch.FloatTensor
,形状为(batch_size, num_channels, height, width)
)— 像素值。默认情况下将忽略填充。可以使用 AutoImageProcessor 获取像素值。有关详细信息,请参阅 CLIPImageProcessor.call
()。
output_attentions
(bool
,可选)- 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。
output_hidden_states
(bool
,可选)- 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。
return_dict
(bool
,可选)- 是否返回 ModelOutput 而不是普通元组。
返回
image_features(形状为(batch_size, output_dim)
的torch.FloatTensor
)
通过将投影层应用于 CLIPSegVisionModel 的池化输出获得的图像嵌入。
CLIPSegModel 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, CLIPSegModel
>>> processor = AutoProcessor.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> model = CLIPSegModel.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> inputs = processor(images=image, return_tensors="pt")
>>> image_features = model.get_image_features(**inputs)
class transformers.CLIPSegTextModel
( config: CLIPSegTextConfig )
forward
( input_ids: Optional = None attention_mask: Optional = None position_ids: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.BaseModelOutputWithPooling or tuple(torch.FloatTensor)
参数
input_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
)- 词汇表中输入序列标记的索引。默认情况下将忽略填充。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参见 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。
什么是输入 ID?
attention_mask
(形状为(batch_size, sequence_length)
的torch.Tensor
,可选)- 避免在填充标记索引上执行注意力的掩码。选择的掩码值在[0, 1]
中选择:
masked
的标记为 1,
masked
的标记为 0。
什么是注意力掩码?
position_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)- 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。
什么是位置 ID?
output_attentions
(bool
,可选)- 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。
output_hidden_states
(bool
,可选)- 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。
return_dict
(bool
,可选)- 是否返回 ModelOutput 而不是普通元组。
返回
transformers.modeling_outputs.BaseModelOutputWithPooling 或tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.BaseModelOutputWithPooling 或一个torch.FloatTensor
元组(如果传递了return_dict=False
或config.return_dict=False
时)包含根据配置(<class 'transformers.models.clipseg.configuration_clipseg.CLIPSegTextConfig'>
)和输入的不同元素。
last_hidden_state
(torch.FloatTensor
,形状为 (batch_size, sequence_length, hidden_size)
) — 模型最后一层的隐藏状态序列。
pooler_output
(torch.FloatTensor
,形状为 (batch_size, hidden_size)
) — 经过用于辅助预训练任务的层进一步处理后的序列的第一个标记(分类标记)的最后一层隐藏状态。例如,对于 BERT 系列模型,这将返回经过线性层和双曲正切激活函数处理后的分类标记。线性层的权重是在预训练期间从下一个句子预测(分类)目标中训练的。
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 后,用于计算自注意力头中的加权平均值。
CLIPSegTextModel 的前向方法,覆盖了 __call__
特殊方法。
虽然前向传递的方法需要在此函数内定义,但应该在此之后调用 Module
实例,而不是在此处调用,因为前者会处理运行前后的处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoTokenizer, CLIPSegTextModel
>>> tokenizer = AutoTokenizer.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> model = CLIPSegTextModel.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> pooled_output = outputs.pooler_output # pooled (EOS token) states
class transformers.CLIPSegVisionModel
( config: CLIPSegVisionConfig )
forward
( pixel_values: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.BaseModelOutputWithPooling or tuple(torch.FloatTensor)
参数
pixel_values
(torch.FloatTensor
,形状为 (batch_size, num_channels, height, width)
) — 像素值。默认情况下将忽略填充。可以使用 AutoImageProcessor 获取像素值。有关详细信息,请参阅 CLIPImageProcessor.call
()。
output_attentions
(bool
,可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量中的 attentions
。
output_hidden_states
(bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的 hidden_states
。
return_dict
(bool
,可选) — 是否返回 ModelOutput 而不是普通元组。
返回
transformers.modeling_outputs.BaseModelOutputWithPooling 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.BaseModelOutputWithPooling 或一个 torch.FloatTensor
元组(如果传递 return_dict=False
或 config.return_dict=False
或 return_dict=False
)包含根据配置 (<class 'transformers.models.clipseg.configuration_clipseg.CLIPSegVisionConfig'>
) 和输入的不同元素。
last_hidden_state
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
)- 模型最后一层的隐藏状态序列。
pooler_output
(形状为(batch_size, hidden_size)
的torch.FloatTensor
)- 经过用于辅助预训练任务的层进一步处理后,序列第一个标记(分类标记)的最后一层隐藏状态。例如,对于 BERT 系列模型,这返回经过线性层和 tanh 激活函数处理后的分类标记。线性层的权重是在预训练期间从下一个句子预测(分类)目标中训练的。
hidden_states
(tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回)- torch.FloatTensor
的元组(如果模型有嵌入层,则为嵌入的输出+每一层的输出)的形状为(batch_size, sequence_length, hidden_size)
。
模型在每一层输出的隐藏状态以及可选的初始嵌入输出。
attentions
(tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)- torch.FloatTensor
的元组(每层一个)的形状为(batch_size, num_heads, sequence_length, sequence_length)
。
用于计算自注意力头中加权平均值的注意力 softmax 后的注意力权重。
CLIPSegVisionModel 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, CLIPSegVisionModel
>>> processor = AutoProcessor.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> model = CLIPSegVisionModel.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> inputs = processor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> pooled_output = outputs.pooler_output # pooled CLS states
class transformers.CLIPSegForImageSegmentation
( config: CLIPSegConfig )
参数
config
(CLIPSegConfig)- 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。CLIPSeg 模型在顶部使用基于 Transformer 的解码器进行零样本和一样本图像分割。
这个模型是 PyTorch 的torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
( input_ids: Optional = None pixel_values: Optional = None conditional_pixel_values: Optional = None conditional_embeddings: Optional = None attention_mask: Optional = None position_ids: Optional = None labels: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.clipseg.modeling_clipseg.CLIPSegImageSegmentationOutput or tuple(torch.FloatTensor)
参数
input_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
)- 词汇表中输入序列标记的索引。默认情况下将忽略填充。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。
什么是输入 ID?
attention_mask
(形状为(batch_size, sequence_length)
的torch.Tensor
,可选)- 避免在填充标记索引上执行注意力的掩码。选择在[0, 1]
中的掩码值:
masked
的标记。
masked
的标记。
注意力蒙版是什么?
position_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。
位置 ID 是什么?
pixel_values
(形状为(batch_size, num_channels, height, width)
的torch.FloatTensor
)— 像素值。默认情况下将忽略填充。可以使用 AutoImageProcessor 获取像素值。有关详细信息,请参见 CLIPImageProcessor.call
()。
return_loss
(bool
,可选)— 是否返回对比损失。
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.models.clipseg.modeling_clipseg.CLIPSegImageSegmentationOutput
或tuple(torch.FloatTensor)
一个transformers.models.clipseg.modeling_clipseg.CLIPSegImageSegmentationOutput
或一个torch.FloatTensor
元组(如果传递了return_dict=False
或当config.return_dict=False
时),包含根据配置(<class 'transformers.models.clipseg.configuration_clipseg.CLIPSegTextConfig'>
)和输入的不同元素。
loss
(形状为(1,)
的torch.FloatTensor
,可选,当return_loss
为True
时返回)— 图像文本相似性的对比损失。…
vision_model_output
(BaseModelOutputWithPooling
)— CLIPSegVisionModel 的输出。
CLIPSegForImageSegmentation 的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。
示例:
>>> from transformers import AutoProcessor, CLIPSegForImageSegmentation
>>> from PIL import Image
>>> import requests
>>> processor = AutoProcessor.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> model = CLIPSegForImageSegmentation.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> texts = ["a cat", "a remote", "a blanket"]
>>> inputs = processor(text=texts, images=[image] * len(texts), padding=True, return_tensors="pt")
>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> print(logits.shape)
torch.Size([3, 352, 352])
原始文本:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/clvp
CLVP(对比语言-声音预训练变压器)模型由 James Betker 在通过缩放实现更好的语音合成中提出。
论文摘要如下:
近年来,图像生成领域已经通过自回归变压器和 DDPMs 的应用而发生了革命。这些方法将图像生成过程建模为逐步的概率过程,并利用大量计算和数据来学习图像分布。提高性能的这种方法不一定局限于图像。本文描述了一种将图像生成领域的进展应用于语音合成的方法。结果是 TorToise - 一种富有表现力的、多声音的文本到语音系统。
该模型由Susnato Dhar贡献。原始代码可在此处找到。
ClvpModelForConditionalGeneration.generate()
方法进行龟速使用。
ClvpConditioningEncoder
获取这些文本标记和音频表示,并将它们转换为在文本和音频上进行条件化的嵌入。
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)
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 ) → export const metadata = 'undefined';ClvpConfig
参数
text_config
(ClvpEncoderConfig
) — 类型为 ClvpEncoderConfig 的文本模型配置。
speech_config
(ClvpEncoderConfig
) — 类型为 ClvpEncoderConfig 的语音模型配置。
decoder_config
(ClvpDecoderConfig
) — 类型为 ClvpDecoderConfig 的解码器模型配置。
返回
ClvpConfig
配置对象的一个实例
从 CLVP 文本模型配置、CLVP 语音模型配置和 CLVP 解码器模型配置实例化一个 ClvpConfig(或派生类)。
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
, optional, defaults to 256) — CLVP 编码器模型的词汇表大小。
hidden_size
(int
, optional, defaults to 768) — 编码器层和池化层的维度。
intermediate_size
(int
, optional, defaults to 1536) — Transformer 编码器中“中间”(即前馈)层的维度。
projection_dim
(int
, optional, defaults to 768) — 投影向量的维度。
num_hidden_layers
(int
, optional, defaults to 20) — Transformer 编码器中的隐藏层数。
num_attention_heads
(int
, optional, defaults to 12) — Transformer 编码器中每个注意力层的注意力头数。
hidden_act
(str
or function
, optional, defaults to "gelu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持 "gelu"
、"relu"
、"selu"
、"gelu_new"
和 "quick_gelu"
。
layer_norm_eps
(float
, optional, defaults to 1e-05) — 层归一化层使用的 epsilon。
attention_dropout
(float
, optional, defaults to 0.1) — 注意力概率的 dropout 比率。
dropout
(float
, optional, defaults to 0.1) — ClvpEncoderMLP
中前馈层的 dropout 比率。
use_rotary_embedding
(bool
, optional, defaults to True
) — 是否使用旋转嵌入。
use_attention_bias
(bool
, optional, defaults to False
) — 在自注意力期间是否使用 Query、Key 和 Value 层中的偏置。
summary_type
(str
, optional, defaults to "mean"
) — 从 last_hidden_state 获取 pooler_output 的策略。支持 "last"
、"first"
、"mean"
和 "cls_index"
。
initializer_factor
(float
, optional, 默认为 1.0) — 用于初始化所有权重矩阵的因子(应保持为 1.0,用于内部初始化测试)。
bos_token_id
(int
, optional, 默认为 255) — 序列开始标记 id。
eos_token_id
(int
, optional, 默认为 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
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
, optional, 默认为 8194) — 模型的词汇表大小。
max_position_embeddings
(int
, optional, 默认为 608) — 此模型可能用于的最大 mel 标记序列长度。类似于GPT2Config
中的n_positions
。
max_text_tokens
(int
, optional, 默认为 404) — 此模型可能用于的文本标记的最大序列长度。类似于GPT2Config
中的n_positions
。
hidden_size
(int
, optional, 默认为 1024) — 嵌入和隐藏状态的维度。
num_hidden_layers
(int
, optional, 默认为 30) — Transformer 编码器中的隐藏层数量。
num_attention_heads
(int
, optional, 默认为 16) — Transformer 编码器中每个注意力层的注意力头数。
n_inner
(int
, optional) — 内部前馈层的维度。None
将将其设置为hidden_size
的 4 倍。
num_mel_attn_blocks
(int
, optional, 默认为 6) — 表示ClvpConditioningEncoder
中的自注意力层数量。
activation_function
(str
, optional, 默认为"gelu_new"
) — 激活函数,可在列表["relu", "silu", "gelu", "tanh", "gelu_new"]
中选择。
resid_pdrop
(float
, optional, 默认为 0.1) — 嵌入层、编码器和池化器中所有全连接层的丢弃概率。
embd_pdrop
(float
, optional, 默认为 0.1) — 嵌入的丢弃比率。
attention_dropout
(float
, optional, 默认为 0.1) — 注意力的丢弃比率。
layer_norm_epsilon
(float
, optional, 默认为 1e-05) — 在层归一化层中使用的 epsilon。
initializer_range
(float
, optional, 默认为 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。
summary_type
(string
, optional, 默认为"cls_index"
) — 在进行序列摘要时使用的参数。
必须是以下选项之一:
"last"
: 获取最后一个标记的隐藏状态(类似 XLNet)。
"first"
: 获取第一个标记的隐藏状态(类似 BERT)。
"mean"
: 获取所有标记的隐藏状态的平均值。
"cls_index"
: 提供分类标记位置的张量(类似 GPT/GPT-2)。
"attn"
: 目前未实现,使用多头注意力。
summary_use_proj
(bool
, optional, 默认为True
) — 是否在向量提取后添加投影。
summary_activation
(str
, optional) — 将"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) — 提取的 mel 特征的特征维度。此值在 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
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
,optional,默认为"<|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 分词器。基于字节级字节对编码。
该分词器已经训练成将空格视为标记的一部分(有点像 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: Optional = None )
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_size
的 list
,可选)— 如果提供了 mel_norms
,则将用于沿每个梅尔滤波器对数梅尔频谱进行归一化。
return_attention_mask
(bool
,可选,默认为 False
)— 是否返回注意力掩码。如果保持默认设置,将返回注意力掩码。
什么是注意力掩码?
构建一个 CLVP 特征提取器。
此特征提取器继承自 SequenceFeatureExtractor,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息。
此类使用自定义 numpy 实现的 Short Time Fourier Transform
从原始语音中提取对数梅尔频谱特征,该实现应与 pytorch 的 torch.stft
等效。
__call__
( raw_speech: Union sampling_rate: Optional = None truncation: bool = True pad_to_multiple_of: Optional = None return_tensors: Union = None return_attention_mask: Optional = True padding: Optional = 'max_length' max_length: Optional = None **kwargs )
参数
raw_speech
(np.ndarray
,List[float]
,List[np.ndarray]
,List[List[float]]
)— 要填充的序列或序列批次。每个序列可以是一个 numpy 数组,一个浮点值列表,一个 numpy 数组列表或一个浮点值列表的列表。必须是单声道音频,不是立体声,即每个时间步长一个浮点数。
sampling_rate
(int
,可选)— raw_speech
输入的采样率。强烈建议在前向调用时传递 sampling_rate
,以防止静默错误并允许自动语音识别流水线。
truncation
(bool
,可选,默认为 True
)— 激活截断以将输入序列截断为比 max_length 更长的输入序列。
pad_to_multiple_of
(int
,可选)— 如果设置,将填充序列到提供的值的倍数。
这对于在具有计算能力 >= 7.5
(Volta)的 NVIDIA 硬件上启用 Tensor Cores 或在受益于序列长度为 128 的 TPU 上使用特别有用。
return_attention_mask
(bool
,可选,默认为 True
) — 是否返回注意力掩码。如果保持默认设置,将返回注意力掩码。
什么是注意力掩码?
return_tensors
(str
或 TensorType,可选) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:
'tf'
: 返回 TensorFlow tf.constant
对象。
'pt'
: 返回 PyTorch torch.Tensor
对象。
'np'
: 返回 Numpy np.ndarray
对象。
padding_value
(float
,默认为 0.0) — 用于填充填充值/向量的值。
max_length
(int
,可选) — 输入的最大长度。
ClvpFeatureExtractor
用于从样本声音或 raw_speech
中提取各种声音特定属性,如声音的音高和音调、说话速度,甚至说话缺陷,如口吃或结巴。
首先,声音被填充或截断,使其成为 self.default_audio_length
秒长的波形,然后从中提取对数梅尔频谱图。
class transformers.ClvpProcessor
( feature_extractor tokenizer )
参数
feature_extractor
(ClvpFeatureExtractor
) — ClvpFeatureExtractor 的一个实例。特征提取器是必需的输入。
tokenizer
(ClvpTokenizer
) — ClvpTokenizer 的一个实例。分词器是必需的输入。
构建一个 CLVP 处理器,将 CLVP 特征提取器和 CLVP 分词器封装成一个单一处理器。
ClvpProcessor 提供了 ClvpFeatureExtractor 和 ClvpTokenizer 的所有功能。查看 call()、decode() 和 batch_decode() 获取更多信息。
__call__
( *args **kwargs )
将 audio
和 sampling_rate
参数转发到 call(),将 text
参数转发到 call()。有关更多信息,请参阅上述两种方法的文档字符串。
decode
( *args **kwargs )
此方法将其所有参数转发给 ClvpTokenizer 的 decode()。有关更多信息,请参阅此方法的文档字符串。
batch_decode
( *args **kwargs )
此方法将其所有参数转发给 ClvpTokenizer 的 batch_decode()。有关更多信息,请参阅此方法的文档字符串。
class transformers.ClvpModelForConditionalGeneration
( config: ClvpConfig )
参数
config
(ClvpConfig)— 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。具有文本编码器、语音编码器和语音解码器模型的复合 CLVP 模型。语音解码器模型从文本生成语音 ID,文本编码器和语音编码器一起工作以过滤出最佳的语音 ID。此模型继承自 PreTrainedModel。检查超类文档以获取库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。
此模型还是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
( input_ids: LongTensor = None input_features: FloatTensor = None conditioning_encoder_inputs_embeds: Optional = None text_encoder_inputs_embeds: Optional = None attention_mask: Optional = None return_loss: Optional = None output_hidden_states: Optional = None output_attentions: Optional = False return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.clvp.modeling_clvp.ClvpOutput or tuple(torch.FloatTensor)
参数
input_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 词汇表中输入序列标记的索引。默认情况下将忽略填充。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。
什么是输入 ID?
input_features
(形状为(batch_size, feature_size, time_dim)
的torch.FloatTensor
)— 表示音频返回的 log mel-spectrogram 表示,由 ClvpFeatureExtractor 返回。
conditioning_encoder_inputs_embeds
(torch.FloatTensor
,可选)— 用于ClvpConditioningEncoder
的 inputs_embeds。可用于替代input_ids
。
text_encoder_inputs_embeds
(torch.FloatTensor
,可选)— 用于文本编码器模型的 inputs_embeds,代替input_ids
。
attention_mask
(形状为(batch_size, sequence_length)
的torch.Tensor
,可选)— 避免对填充文本标记索引执行注意力的掩码。选择的掩码值在[0, 1]
中:
什么是注意力掩码?
return_loss
(bool
,可选)— 是否返回对比损失。
output_attentions
(bool
,可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。
output_hidden_states
(bool
,可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。
return_dict
(bool
,可选)— 是否返回 ModelOutput 而不是普通元组。
返回
transformers.models.clvp.modeling_clvp.ClvpOutput
或tuple(torch.FloatTensor)
一个transformers.models.clvp.modeling_clvp.ClvpOutput
或一个torch.FloatTensor
元组(如果传递了return_dict=False
或当config.return_dict=False
时),包括根据配置(<class 'transformers.models.clvp.configuration_clvp.ClvpConfig'>
)和输入不同元素。
loss
(torch.FloatTensor
,形状为(1,)
,可选,当return_loss
为True
时返回) — 语音-文本相似性的对比损失。
speech_ids
(torch.LongTensor
,可选) — 由ClvpForCausalLM
模型生成的语音 id(或语音候选)。
logits_per_speech
(torch.FloatTensor
,形状为(speech_batch_size, text_batch_size)
) — speech_embeds
和text_embeds
之间的缩放点积分数。这代表了语音-文本相似性分数。
logits_per_text
(torch.FloatTensor
,形状为(text_batch_size, speech_batch_size)
) — text_embeds
和speech_embeds
之间的缩放点积分数。这代表了文本-语音相似性分数。
text_embeds
(torch.FloatTensor
,形状为(batch_size, output_dim
) — 通过将文本编码器模型的汇总输出应用到投影层获得的文本嵌入。
speech_embeds
(torch.FloatTensor
,形状为(batch_size, output_dim
) — 通过将语音编码器模型的汇总输出应用到投影层获得的语音嵌入。
text_model_output
(BaseModelOutputWithPooling
) — 文本编码器模型的last_hidden_state
的汇总输出。
speech_model_output
(BaseModelOutputWithPooling
) — 语音编码器模型的last_hidden_state
的汇总输出。
decoder_hidden_states
(torch.FloatTensor
, 可选) — 解码器模型的隐藏状态。
text_encoder_hidden_states
(torch.FloatTensor
, 可选) — 文本编码器模型的隐藏状态。
speech_encoder_hidden_states
(torch.FloatTensor
, 可选) — 语音编码器模型的隐藏状态。
ClvpModelForConditionalGeneration 的前向方法,覆盖了__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,
... )
generate
( input_ids: LongTensor = None input_features: FloatTensor = None attention_mask: Optional = None generation_config: Optional = None pad_to_max_mel_tokens: Optional = None output_hidden_states: Optional = None **kwargs ) → export const metadata = 'undefined';ClvpOutput or tuple
参数
input_ids
(torch.FloatTensor
,形状为(batch_size, sequence_length)
,可选) — 输入文本标记。从 ClvpTokenizer 处理而来。
input_features
(torch.FloatTensor
,形状为(batch_size, feature_size, time_dim)
,可选) — 表示音频的 log-melspectrogram 表示,由 ClvpFeatureExtractor 返回。
attention_mask
(torch.Tensor
,形状为(batch_size, sequence_length)
,可选) — 用于避免在填充文本标记索引上执行注意力的掩码。掩码值选在[0, 1]
之间:
masked
的标记为 1。
masked
的标记为 0。
什么是注意力掩码?
generation_config
(~generation.GenerationConfig
, optional) — 用作生成调用的基本参数化的生成配置。传递给 generate 的**kwargs
匹配generation_config
的属性将覆盖它们。如果未提供generation_config
,将使用默认值,其加载优先级如下:1)来自generation_config.json
模型文件,如果存在;2)来自模型配置。请注意,未指定的参数将继承 GenerationConfig 的默认值,其文档应该被检查以参数化生成。
pad_to_max_mel_tokens
(int
, optional) — 将生成的 speech_ids 填充到指定值。这是为了实现与官方 repo 相同的逻辑,链接:github.com/neonbjb/tortoise-tts/blob/80f89987a5abda5e2b082618cd74f9c7411141dc/tortoise/api.py#L430
并确保对数相同。这不会影响生成质量,因此请不要考虑使用它,因为效率较低。
output_hidden_states
(bool
, optional) — 是否返回解码器模型、文本编码器和语音编码器模型的隐藏状态。
返回
ClvpOutput
或 元组
一个ClvpOutput
(如果return_dict_in_generate=True
或当config.return_dict_in_generate=True
时)或一个元组。
ClvpModelForConditionalGeneration
的生成方法,此方法调用ClvpForCausalLM
的generate
方法,然后使用生成的speech_ids
来处理text_embeds
和speech_embeds
,使用ClvpEncoder
。
get_text_features
( input_ids: Optional = None text_encoder_inputs_embeds: Optional = None attention_mask: Optional = None ) → export const metadata = 'undefined';torch.FloatTensor of shape (batch_size, output_dim)
参数
input_ids
(torch.LongTensor
of shape (batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。默认情况下将忽略填充。
什么是输入 ID?
text_encoder_inputs_embeds
(torch.FloatTensor
, optional) — 用于文本编码器模型的 inputs_embeds,代替input_ids
。
attention_mask
(torch.Tensor
of shape (batch_size, sequence_length)
, optional) — 避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
之间:
未被掩码
的标记,
被掩码
的标记。
什么是注意力掩码?
返回
torch.FloatTensor
of shape (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: Optional = None input_ids: Optional = None input_features: Optional = None conditioning_encoder_inputs_embeds: Optional = None attention_mask: Optional = None generation_config: Optional = None **kwargs ) → export const metadata = 'undefined';torch.FloatTensor of shape (batch_size, output_dim)
参数
speech_ids
(torch.LongTensor
of shape (batch_size, num_speech_ids)
, optional) — 语音标记。默认情况下将忽略填充。如果提供了 speech_ids,则将自动忽略 input_ids 和 input_features。
input_ids
(torch.LongTensor
of shape (batch_size, sequence_length)
, optional) — 输入文本标记。从 ClvpTokenizer 处理。如果未提供 speech_ids,则将使用 input_ids 和 input_features。
input_features
(torch.FloatTensor
of shape (batch_size, feature_size, time_dim)
, optional) — 指示音频的 log-melspectrogram 表示,由 ClvpFeatureExtractor 返回。如果未提供 speech_ids,则将使用 input_ids 和 input_features。
conditioning_encoder_inputs_embeds
(torch.FloatTensor
,可选)- 用于ClvpConditioningEncoder
的 inputs_embeds。可以代替input_ids
使用。
attention_mask
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)- 用于避免在填充语音标记索引上执行注意力的掩码。掩码值选在[0, 1]
之间:
masked
的标记为 1,
masked
的标记为 0。
什么是注意力掩码?
generation_config
(GenerationConfig
,可选)- 用于控制生成语音 ID 的生成配置,如果它们未提供。
返回
torch.FloatTensor
的形状为(batch_size, output_dim)
通过将投影层应用于 CLVP 语音模型的汇聚输出获得的语音嵌入。
此方法可用于提取语音嵌入。通过将语音模型应用于语音 ID 获得语音嵌入。如果不存在语音 ID,但提供了 input_ids 和 input_features,则解码器模型将首先用于生成语音 ID,然后应用语音模型。
示例:
>>> 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"]
... )
class transformers.ClvpForCausalLM
( config )
参数
config
(ClvpConfig)- 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。具有语言建模头部的 CLVP 解码器模型。此模型继承自 PreTrainedModel。检查超类文档以获取库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。
此模型也是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
( input_ids: Optional = None past_key_values: Optional = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None labels: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None )
参数
input_ids
(形状为(batch_size, input_ids_length)
的torch.LongTensor
)- 词汇表中输入序列标记的索引。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。
什么是输入 ID?
past_key_values
(长度为config.n_layers
的Tuple[Tuple[torch.Tensor]]
)- 包含由模型计算的预计算隐藏状态(注意力块中的键和值),如下面的past_key_values
输出所示。可用于加速顺序解码。将其过去传递给此模型的input_ids
不应作为input_ids
传递,因为它们已经计算过。
attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选)- 用于避免在填充标记索引上执行注意力的掩码。掩码值选在[0, 1]
之间:
masked
的标记为 1,
masked
的标记为 0。
如果使用了past_key_values
,则attention_mask
需要包含用于past_key_values
的掩码策略。换句话说,attention_mask
的长度始终必须为:len(past_key_values) + len(input_ids)
什么是注意力掩码?
token_type_ids
(torch.LongTensor
,形状为(batch_size, input_ids_length)
,optional) — 指示输入的第一部分和第二部分的段标记索引。索引选择在[0, 1]
中:
什么是标记类型 ID?
position_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
,optional) — 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。
什么是位置 ID?
head_mask
(torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
,optional) — 用于使自注意力模块的选定头部失效的掩码。掩码值选择在[0, 1]
中:
not masked
,
masked
。
inputs_embeds
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
,optional) — 可选地,可以直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制权,以便将input_ids
索引转换为相关向量,而不是模型的内部嵌入查找矩阵。
如果使用past_key_values
,则可选择仅输入最后的inputs_embeds
(参见past_key_values
)。
use_cache
(bool
, optional) — 如果设置为True
,则返回past_key_values
键值状态,并可用于加速解码(参见past_key_values
)。
output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。
return_dict
(bool
, optional) — 是否返回 ModelOutput 而不是普通元组。
labels
(torch.LongTensor
,形状为(batch_size, sequence_length)
,optional) — 用于语言建模的标签。请注意,模型内部的标签已移位,即您可以设置labels = input_ids
。索引在[-100, 0, ..., config.vocab_size]
中选择。所有设置为-100
的标签都被忽略(掩码),损失仅计算标签在[0, ..., config.vocab_size]
中的标签
ClvpForCausalLM 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是前者,因为前者负责运行前处理和后处理步骤,而后者会默默地忽略它们。
class transformers.ClvpModel
( config: ClvpDecoderConfig )
参数
config
(ClvpConfig) — 模型的所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。裸 Clvp 解码器模型输出原始隐藏状态,没有特定的头部。此模型继承自 PreTrainedModel。检查超类文档以了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。
此模型也是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None head_mask: Optional = None past_key_values: Optional = None inputs_embeds: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None )
参数
input_ids
(形状为(batch_size, input_ids_length)
的torch.LongTensor
)- 词汇表中输入序列标记的索引。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参见 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。
什么是输入 ID?
past_key_values
(长度为config.n_layers
的Tuple[Tuple[torch.Tensor]]
)- 包含由模型计算的预计算隐藏状态(注意力块中的键和值),可用于加速顺序解码。将其过去的input_ids
不应作为input_ids
传递给此模型,因为它们已经计算过。
attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选)- 用于避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
中:
屏蔽
的标记,
屏蔽
的标记。
如果使用了past_key_values
,则attention_mask
需要包含用于past_key_values
的掩码策略。换句话说,attention_mask
的长度始终为:len(past_key_values) + len(input_ids)
什么是注意力掩码?
token_type_ids
(形状为(batch_size, input_ids_length)
的torch.LongTensor
,可选)- 段标记索引,指示输入的第一部分和第二部分。索引选择在[0, 1]
中:
什么是标记类型 ID?
position_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)- 每个输入序列标记的位置嵌入的索引。在范围[0, config.max_position_embeddings - 1]
中选择。
什么是位置 ID?
head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选)- 用于使自注意力模块的选定头部失效的掩码。掩码值选择在[0, 1]
中:
未屏蔽
,
屏蔽
。
inputs_embeds
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选)- 可选择直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制权来将input_ids
索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。
如果使用了past_key_values
,则可选择仅输入最后的inputs_embeds
(参见past_key_values
)。
use_cache
(bool
,可选)- 如果设置为True
,则返回past_key_values
键值状态,并可用于加速解码(参见past_key_values
)。
output_attentions
(bool
,可选)- 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。
output_hidden_states
(bool
,可选)- 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。
return_dict
(bool
,可选)- 是否返回 ModelOutput 而不是普通元组。
ClvpModel 的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
类 transformers.Clvp 编码器
( config: ClvpConfig )
由config.num_hidden_layers
个自注意层组成的 Transformer 编码器。每一层都是一个ClvpEncoderLayer
。
forward
( input_ids: Optional = None inputs_embeds: Optional = None attention_mask: Optional = None position_ids: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None )
参数
input_ids
(形状为(batch_size, input_ids_length)
的torch.LongTensor
,可选)— 词汇表中输入序列标记的索引。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参见 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。
什么是输入 ID?
inputs_embeds
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选)— 模型的输入嵌入。这将绕过模型的内部嵌入查找矩阵。
attention_mask
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 避免在填充标记索引上执行注意力的掩码。掩码值选择在[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 而不是普通元组。
类 transformers.Clvp 解码器
( config )
由config.num_hidden_layers层组成的 Transformer 解码器。每一层都是一个ClvpDecoderLayer
forward
( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None head_mask: Optional = None past_key_values: Optional = None inputs_embeds: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None )
参数
input_ids
(形状为(batch_size, input_ids_length)
的torch.LongTensor
)— 词汇表中输入序列标记的索引。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参见 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。
什么是输入 ID?
past_key_values
(长度为config.n_layers
的Tuple[Tuple[torch.Tensor]]
)— 包含模型计算的预计算隐藏状态(注意力块中的键和值),如下面的past_key_values
输出所示。可用于加速顺序解码。已经计算过其过去的input_ids
的input_ids
不应作为input_ids
传递,因为它们已经被计算过。
attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选)- 用于避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
中:
掩码
的标记,
掩码
的标记。
如果使用了past_key_values
,则attention_mask
需要包含用于past_key_values
的掩码策略。换句话说,attention_mask
的长度始终必须为:len(past_key_values) + len(input_ids)
什么是注意力掩码?
token_type_ids
(形状为(batch_size, input_ids_length)
的torch.LongTensor
,可选)- 段标记索引,指示输入的第一部分和第二部分。索引选择在[0, 1]
中:
什么是标记类型 ID?
position_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)- 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。
什么是位置 ID?
head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选)- 用于使自注意力模块中选择的头部失效的掩码。掩码值选择在[0, 1]
中:
掩码
,
掩码
。
inputs_embeds
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选)- 可选地,您可以选择直接传递嵌入表示而不是传递input_ids
。如果您希望更多地控制如何将input_ids
索引转换为相关向量,而不是模型的内部嵌入查找矩阵,则这很有用。
如果使用了past_key_values
,则可选择仅输入最后的inputs_embeds
(参见past_key_values
)。
use_cache
(bool
,可选)- 如果设置为True
,则返回past_key_values
键值状态,并可用于加速解码(参见past_key_values
)。
output_attentions
(bool
,可选)- 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。
output_hidden_states
(bool
,可选)- 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。
return_dict
(bool
,可选)- 是否返回 ModelOutput 而不是普通元组。
ClvpDecoder 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
原始文本:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/data2vec
Data2Vec 模型是由 Alexei Baevski、Wei-Ning Hsu、Qiantong Xu、Arun Babu、Jiatao Gu 和 Michael Auli 在数据 2vec: 语音、视觉和语言中的自监督学习的通用框架中提出的。Data2Vec 提出了一个统一的框架,用于跨不同数据模态的自监督学习 - 文本、音频和图像。重要的是,预训练的预测目标是输入的上下文化潜在表示,而不是特定于模态的、上下文无关的目标。
论文摘要如下:
尽管自监督学习的一般思想在各种模态之间是相同的,但实际的算法和目标差异很大,因为它们是针对单一模态开发的。为了让我们更接近于一般的自监督学习,我们提出了 data2vec,这是一个框架,它使用相同的学习方法来处理语音、NLP 或计算机视觉。核心思想是基于输入数据的遮蔽视图来预测完整输入数据的潜在表示,使用标准的 Transformer 架构进行自蒸馏设置。data2vec 不是预测特定于模态的目标,比如单词、视觉标记或人类语音单元,而是预测包含来自整个输入的信息的上下文化潜在表示。对语音识别、图像分类和自然语言理解的主要基准进行的实验表明,与主流方法相比,取得了新的最先进或具有竞争力的性能。模型和代码可在www.github.com/pytorch/fairseq/tree/master/examples/data2vec上找到。
这个模型是由edugp和patrickvonplaten贡献的。sayakpaul和Rocketknight1为 TensorFlow 中的视觉贡献了 Data2Vec。
原始代码(用于 NLP 和语音)可以在这里找到。视觉的原始代码可以在这里找到。
官方 Hugging Face 和社区(由🌎表示)资源列表,帮助您开始使用 Data2Vec。
图像分类
Data2VecText 文档资源
Data2VecAudio 文档资源
Data2VecVision 文档资源
如果您有兴趣提交资源以包含在此处,请随时打开一个 Pull Request,我们将对其进行审查!资源应该展示一些新内容,而不是重复现有资源。
class transformers.Data2VecTextConfig
( vocab_size = 30522 hidden_size = 768 num_hidden_layers = 12 num_attention_heads = 12 intermediate_size = 3072 hidden_act = 'gelu' hidden_dropout_prob = 0.1 attention_probs_dropout_prob = 0.1 max_position_embeddings = 512 type_vocab_size = 2 initializer_range = 0.02 layer_norm_eps = 1e-12 pad_token_id = 1 bos_token_id = 0 eos_token_id = 2 position_embedding_type = 'absolute' use_cache = True classifier_dropout = None **kwargs )
参数
vocab_size
(int
, 可选, 默认为 30522) — DATA2VEC 模型的词汇量。定义了在调用Data2VecModel
时可以表示的不同标记数量。
hidden_size
(int
, 可选, 默认为 768) — 编码器层和池化层的维度。
num_hidden_layers
(int
, 可选, 默认为 12) — Transformer 编码器中的隐藏层数量。
num_attention_heads
(int
, 可选, 默认为 12) — Transformer 编码器中每个注意力层的注意力头数。
intermediate_size
(int
, 可选, 默认为 3072) — Transformer 编码器中“中间”(通常称为前馈)层的维度。
hidden_act
(str
或Callable
, 可选, 默认为"gelu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
、"relu"
、"silu"
和"gelu_new"
。
hidden_dropout_prob
(float
, 可选, 默认为 0.1) — 嵌入层、编码器和池化器中所有全连接层的丢失概率。
attention_probs_dropout_prob
(float
, 可选, 默认为 0.1) — 注意力概率的丢失比率。
max_position_embeddings
(int
, 可选, 默认为 512) — 此模型可能会使用的最大序列长度。通常将其设置为较大的值以防万一(例如 512、1024 或 2048)。
type_vocab_size
(int
, 可选, 默认为 2) — 在调用Data2VecModel
时传递的token_type_ids
的词汇量。
initializer_range
(float
, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。
layer_norm_eps
(float
, 可选, 默认为 1e-12) — 层归一化层使用的 epsilon。
position_embedding_type
(str
, 可选, 默认为"absolute"
) — 位置嵌入的类型。选择"absolute"
之一。有关"relative_key"
的更多信息,请参阅使用相对位置表示的自注意力(Shaw 等人)。有关"relative_key_query"
的更多信息,请参阅使用更好的相对位置嵌入改进 Transformer 模型(Huang 等人)中的方法 4。
is_decoder
(bool
, 可选, 默认为False
) — 模型是否用作解码器。如果为False
,则模型用作编码器。
use_cache
(bool
, 可选, 默认为True
) — 模型是否应返回最后的键/值注意力(并非所有模型都使用)。仅在config.is_decoder=True
时相关。
classifier_dropout
(float
, optional) — 分类头的 dropout 比率。
这是用于存储 Data2VecTextModel 和 Data2VecTextModel 配置的配置类。根据指定的参数实例化一个 Data2VecText 模型,定义模型架构。使用默认值实例化配置将产生类似于 Data2VecText facebook/data2vec-text-base 架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import Data2VecTextConfig, Data2VecTextModel
>>> # Initializing a Data2VecText facebook/data2vec-text-base style configuration
>>> configuration = Data2VecTextConfig()
>>> # Initializing a model (with random weights) from the facebook/data2vec-text-base style configuration
>>> model = Data2VecTextModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
class transformers.Data2VecAudioConfig
( vocab_size = 32 hidden_size = 768 num_hidden_layers = 12 num_attention_heads = 12 intermediate_size = 3072 hidden_act = 'gelu' hidden_dropout = 0.1 activation_dropout = 0.1 attention_dropout = 0.1 feat_proj_dropout = 0.0 final_dropout = 0.1 layerdrop = 0.1 initializer_range = 0.02 layer_norm_eps = 1e-05 feat_extract_activation = 'gelu' conv_dim = (512, 512, 512, 512, 512, 512, 512) conv_stride = (5, 2, 2, 2, 2, 2, 2) conv_kernel = (10, 3, 3, 3, 3, 2, 2) conv_bias = False num_conv_pos_embedding_groups = 16 conv_pos_kernel_size = 19 num_conv_pos_embeddings = 5 mask_time_prob = 0.05 mask_time_length = 10 mask_time_min_masks = 2 mask_feature_prob = 0.0 mask_feature_length = 10 mask_feature_min_masks = 0 ctc_loss_reduction = 'sum' ctc_zero_infinity = False use_weighted_layer_sum = False classifier_proj_size = 256 tdnn_dim = (512, 512, 512, 512, 1500) tdnn_kernel = (5, 3, 3, 1, 1) tdnn_dilation = (1, 2, 3, 1, 1) xvector_output_dim = 512 pad_token_id = 0 bos_token_id = 1 eos_token_id = 2 add_adapter = False adapter_kernel_size = 3 adapter_stride = 2 num_adapter_layers = 3 output_hidden_size = None **kwargs )
参数
vocab_size
(int
, optional, defaults to 32) — Data2VecAudio 模型的词汇表大小。定义了在调用 Data2VecAudioModel 或 TFData2VecAudioModel
时可以表示的不同标记数量。模型的词汇表大小。定义了传递给 Data2VecAudioModel 的 inputs_ids 可以表示的不同标记数量。
hidden_size
(int
, optional, defaults to 768) — 编码器层和池化器层的维度。
num_hidden_layers
(int
, optional, defaults to 12) — Transformer 编码器中的隐藏层数量。
num_attention_heads
(int
, optional, defaults to 12) — Transformer 编码器中每个注意力层的注意力头数量。
intermediate_size
(int
, optional, defaults to 3072) — Transformer 编码器中“中间”(即前馈)层的维度。
hidden_act
(str
or function
, optional, defaults to "gelu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持 "gelu"
, "relu"
, "selu"
和 "gelu_new"
。
hidden_dropout
(float
, optional, defaults to 0.1) — 嵌入层、编码器和池化器中所有全连接层的 dropout 概率。
activation_dropout
(float
, optional, defaults to 0.1) — 全连接层内激活的 dropout 比率。
attention_dropout
(float
, optional, defaults to 0.1) — 注意力概率的 dropout 比率。
final_dropout
(float
, optional, defaults to 0.1) — Data2VecAudioForCTC 的最终投影层的 dropout 概率。
layerdrop
(float
, optional, defaults to 0.1) — LayerDrop 概率。更多细节请参阅 LayerDrop 论文)。
initializer_range
(float
, optional, defaults to 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。
layer_norm_eps
(float
, optional, defaults to 1e-12) — 层归一化层使用的 epsilon。
feat_proj_dropout
(float
, optional, defaults to 0.0) — 特征编码器输出的 dropout 概率。
feat_extract_activation
(str,
optional, defaults to
“gelu”) -- 特征提取器中 1D 卷积层的非线性激活函数(函数或字符串)。如果是字符串,支持
“gelu”、
“relu”、
“selu”和
“gelu_new”`。
conv_dim
(Tuple[int]
or List[int]
, optional, defaults to (512, 512, 512, 512, 512, 512, 512)
) — 定义特征编码器中每个 1D 卷积层的输入和输出通道数的整数元组。conv_dim的长度定义了 1D 卷积层的数量。
conv_stride
(Tuple[int]
or List[int]
, optional, defaults to (5, 2, 2, 2, 2, 2, 2)
) — 定义特征编码器中每个 1D 卷积层的步幅的整数元组。conv_stride的长度定义了卷积层的数量,并且必须与conv_dim的长度匹配。
conv_kernel
(Tuple[int]
or List[int]
, optional, defaults to (10, 3, 3, 3, 3, 3, 3)
) — 定义特征编码器中每个 1D 卷积层的内核大小的整数元组。conv_kernel的长度定义了卷积层的数量,并且必须与conv_dim的长度匹配。
conv_bias
(bool
, optional, defaults to False
) — 1D 卷积层是否有偏置。
num_conv_pos_embeddings
(int
, optional, defaults to 128) — 卷积位置嵌入的数量。定义了 1D 卷积位置嵌入层的内核大小。
num_conv_pos_embedding_groups
(int
, optional, defaults to 16) — 1D 卷积位置嵌入层的组数。
mask_time_prob
(float
, optional, defaults to 0.05) — 沿时间轴的所有特征向量中将被掩盖的百分比(介于 0 和 1 之间)。掩码过程在轴上生成”mask_time_problen(time_axis)/mask_time_length”个独立的掩码。如果从每个特征向量被选择为要掩盖的向量跨度的起始的概率推理, mask_time_prob *应该是prob_vector_start*mask_time_length
。请注意,重叠可能会降低
mask_time_length
(int
, optional, defaults to 10) — 沿时间轴的向量跨度长度。
mask_time_min_masks
(int
, optional, defaults to 2), — 沿时间轴生成的长度为mask_feature_length
的掩码的最小数量,每个时间步,与mask_feature_prob
无关。仅在”mask_time_prob*len(time_axis)/mask_time_length < mask_time_min_masks”时相关
mask_feature_prob
(float
, optional, defaults to 0.0) — 沿特征轴的所有特征向量中将被掩盖的百分比(介于 0 和 1 之间)。掩码过程在轴上生成”mask_feature_problen(feature_axis)/mask_time_length”个独立的掩码。如果从每个特征向量被选择为要掩盖的向量跨度的起始的概率推理, mask_feature_prob *应该是prob_vector_start*mask_feature_length
。请注意,重叠可能会降低掩盖向量的实际百分比。仅在apply_spec_augment 为 True
时相关。
mask_feature_length
(int
, optional, defaults to 10) — 沿特征轴的向量跨度长度。
mask_feature_min_masks
(int
, optional, defaults to 0), — 沿特征轴生成的长度为mask_feature_length
的掩码的最小数量,每个时间步,与mask_feature_prob
无关。仅在”mask_feature_prob*len(feature_axis)/mask_feature_length < mask_feature_min_masks”时相关
ctc_loss_reduction
(str
, optional, defaults to "sum"
) — 指定应用于torch.nn.CTCLoss
输出的减少方式。仅在训练 Data2VecAudioForCTC 实例时相关。
ctc_zero_infinity
(bool
, optional, defaults to False
) — 是否将torch.nn.CTCLoss
的无限损失和相关梯度置零。当输入太短无法与目标对齐时,主要会出现无限损失。仅在训练 Data2VecAudioForCTC 实例时相关。
use_weighted_layer_sum
(bool
, optional, defaults to False
) — 是否使用带有学习权重的层输出的加权平均。仅在使用 Data2VecAudioForSequenceClassification 实例时相关。
classifier_proj_size
(int
, optional, defaults to 256) — 分类前的投影维度,用于标记均值池化。
tdnn_dim
(Tuple[int]
or List[int]
, optional, defaults to (512, 512, 512, 512, 1500)
) — 一个整数元组,定义XVector模型中TDNN模块中每个 1D 卷积层的输出通道数。tdnn_dim的长度定义了TDNN层数。
tdnn_kernel
(Tuple[int]
or List[int]
, optional, defaults to (5, 3, 3, 1, 1)
) — 一个整数元组,定义XVector模型中TDNN模块中每个 1D 卷积层的核大小。tdnn_kernel的长度必须与tdnn_dim的长度相匹配。
tdnn_dilation
(Tuple[int]
or List[int]
, optional, defaults to (1, 2, 3, 1, 1)
) — 一个整数元组,定义XVector模型中TDNN模块中每个 1D 卷积层的扩张因子。tdnn_dilation的长度必须与tdnn_dim的长度相匹配。
xvector_output_dim
(int
, optional, defaults to 512) — XVector嵌入向量的维度。
add_adapter
(bool
, optional, defaults to False
) — 是否在 Data2VecAudio 编码器顶部堆叠卷积网络。对于启动 Data2VecAudio 用于 SpeechEncoderDecoder 模型非常有用。
adapter_kernel_size
(int
, optional, defaults to 3) — 适配器网络中卷积层的核大小。仅在add_adapter
为 True 时相关。
adapter_stride
(int
, optional, defaults to 2) — 适配器网络中卷积层的步幅。仅在add_adapter
为 True 时相关。
num_adapter_layers
(int
, optional, defaults to 3) — 适配器网络中应使用的卷积层数量。仅在add_adapter
为 True 时相关。
output_hidden_size
(int
, optional) — 编码器输出层的维度。如果未定义,则默认为hidden-size。仅在add_adapter
为 True 时相关。
这是用于存储 Data2VecAudioModel 配置的配置类。它用于根据指定的参数实例化一个 Data2VecAudio 模型,定义模型架构。使用默认值实例化配置将产生类似于 Data2VecAudio facebook/data2vec-audio-base-960h架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import Data2VecAudioConfig, Data2VecAudioModel
>>> # Initializing a Data2VecAudio facebook/data2vec-audio-base-960h style configuration
>>> configuration = Data2VecAudioConfig()
>>> # Initializing a model (with random weights) from the facebook/data2vec-audio-base-960h style configuration
>>> model = Data2VecAudioModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
class transformers.Data2VecVisionConfig
( hidden_size = 768 num_hidden_layers = 12 num_attention_heads = 12 intermediate_size = 3072 hidden_act = 'gelu' hidden_dropout_prob = 0.0 attention_probs_dropout_prob = 0.0 initializer_range = 0.02 layer_norm_eps = 1e-12 image_size = 224 patch_size = 16 num_channels = 3 use_mask_token = False use_absolute_position_embeddings = False use_relative_position_bias = False use_shared_relative_position_bias = False layer_scale_init_value = 0.1 drop_path_rate = 0.1 use_mean_pooling = True out_indices = [3, 5, 7, 11] pool_scales = [1, 2, 3, 6] use_auxiliary_head = True auxiliary_loss_weight = 0.4 auxiliary_channels = 256 auxiliary_num_convs = 1 auxiliary_concat_input = False semantic_loss_ignore_index = 255 **kwargs )
参数
hidden_size
(int
, optional, defaults to 768) — 编码器层和池化层的维度。
num_hidden_layers
(int
, optional, defaults to 12) — Transformer 编码器中的隐藏层数量。
num_attention_heads
(int
, optional, defaults to 12) — Transformer 编码器中每个注意力层的注意力头数。
intermediate_size
(int
, optional, defaults to 3072) — Transformer 编码器中“中间”(即前馈)层的维度。
hidden_act
(str
or function
, optional, defaults to "gelu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持 "gelu"
, "relu"
, "selu"
和 "gelu_new"
。
hidden_dropout_prob
(float
, optional, defaults to 0.0) — 嵌入层、编码器和池化器中所有全连接层的丢弃概率。
attention_probs_dropout_prob
(float
, optional, defaults to 0.0) — 注意力概率的丢弃比率。
initializer_range
(float
, optional, defaults to 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。
layer_norm_eps
(float
, optional, defaults to 1e-12) — 层归一化层使用的 epsilon。
image_size
(int
, optional, defaults to 224) — 每个图像的大小(分辨率)。
patch_size
(int
, optional, defaults to 16) — 每个补丁的大小(分辨率)。
num_channels
(int
, optional, defaults to 3) — 输入通道的数量。
use_mask_token
(bool
, optional, defaults to False
) — 是否在掩蔽图像建模中使用掩蔽标记。
use_absolute_position_embeddings
(bool
, optional, defaults to False
) — 是否使用类似 BERT 的绝对位置嵌入。
use_relative_position_bias
(bool
, optional, defaults to False
) — 是否在自注意力层中使用 T5 风格的相对位置嵌入。
use_shared_relative_position_bias
(bool
, optional, defaults to False
) — 是否在 Transformer 的所有自注意力层中使用相同的相对位置嵌入。
layer_scale_init_value
(float
, optional, defaults to 0.1) — 自注意力层中使用的比例。基础为 0.1,大型为 1e-5。设置为 0 以禁用层比例。
drop_path_rate
(float
, optional, defaults to 0.1) — 每个样本的随机深度率(当应用于残差层的主路径时)。
use_mean_pooling
(bool
, optional, defaults to True
) — 是否对补丁的最终隐藏状态进行平均池化,而不是使用 CLS 标记的最终隐藏状态后应用分类头。
out_indices
(List[int]
, optional, defaults to [3, 5, 7, 11]
) — 用于语义分割的特征图的索引。
pool_scales
(Tuple[int]
, optional, defaults to [1, 2, 3, 6]
) — 应用于最后特征图的池化金字塔模块中使用的池化比例。
use_auxiliary_head
(bool
, optional, defaults to True
) — 是否在训练期间使用辅助头。
auxiliary_loss_weight
(float
, optional, defaults to 0.4) — 辅助头的交叉熵损失的权重。
auxiliary_channels
(int
, optional, defaults to 256) — 辅助头中要使用的通道数。
auxiliary_num_convs
(int
, optional, defaults to 1) — 辅助头中要使用的卷积层数量。
auxiliary_concat_input
(bool
, optional, defaults to False
) — 是否在分类层之前将辅助头的输出与输入连接起来。
semantic_loss_ignore_index
(int
, optional, defaults to 255) — 语义分割模型损失函数中被忽略的索引。
这是存储 Data2VecVisionModel 配置的配置类。它用于根据指定的参数实例化一个 Data2VecVision 模型,定义模型架构。使用默认值实例化配置将产生类似于 Data2VecVision facebook/data2vec-vision-base架构的配置。
示例:
>>> from transformers import Data2VecVisionConfig, Data2VecVisionModel
>>> # Initializing a Data2VecVision data2vec_vision-base-patch16-224-in22k style configuration
>>> configuration = Data2VecVisionConfig()
>>> # Initializing a model (with random weights) from the data2vec_vision-base-patch16-224-in22k style configuration
>>> model = Data2VecVisionModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
PytorchHide Pytorch 内容
class transformers.Data2VecAudioModel
( config: Data2VecAudioConfig )
参数
config
(Data2VecAudioConfig)- 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。裸 Data2VecAudio 模型变压器输出原始隐藏状态,没有特定的头部。Data2VecAudio 是由 Alexei Baevski、Wei-Ning Hsu、Qiantong Xu、Arun Babu、Jiatao Gu 和 Michael Auli 在数据 2vec:语音、视觉和语言自监督学习的通用框架中提出的。
这个模型继承自 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
(形状为(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
,这适用于所有预训练的 Data2Vec 音频模型。请注意,即使使用attention_mask
,零填充的输入与非填充的输入将具有略有不同的输出,因为在位置编码中有多个卷积层。有关更详细的解释,请参见这里。
output_attentions
(bool
,可选)- 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回的张量下的attentions
。
output_hidden_states
(bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请查看返回张量下的hidden_states
。
return_dict
(bool
, 可选) — 是否返回 ModelOutput 而不是普通元组。
返回
transformers.modeling_outputs.Wav2Vec2BaseModelOutput 或tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.Wav2Vec2BaseModelOutput 或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
)包含根据配置(Data2VecAudioConfig)和输入的不同元素。
last_hidden_state
(torch.FloatTensor
of shape (batch_size, sequence_length, hidden_size)
) — 模型最后一层的隐藏状态序列。
extract_features
(torch.FloatTensor
of shape (batch_size, sequence_length, conv_dim[-1])
) — 模型最后一个卷积层提取的特征向量序列。
hidden_states
(tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — torch.FloatTensor
元组(一个用于嵌入输出,一个用于每一层输出)的形状为(batch_size, sequence_length, hidden_size)
。
模型在每一层输出的隐藏状态以及初始嵌入输出。
attentions
(tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或config.output_attentions=True
时返回) — torch.FloatTensor
元组(每一层一个)的形状为(batch_size, num_heads, sequence_length, sequence_length)
。
在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
Data2VecAudioModel 的前向方法覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoProcessor, Data2VecAudioModel
>>> 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/data2vec-audio-base-960h")
>>> model = Data2VecAudioModel.from_pretrained("facebook/data2vec-audio-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]
class transformers.Data2VecAudioForAudioFrameClassification
( config )
参数
config
(Data2VecAudioConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。Data2VecAudio 模型,顶部带有用于说话人分离等任务的帧分类头。
Data2VecAudio 是由 Alexei Baevski、Wei-Ning Hsu、Qiantong Xu、Arun Babu、Jiatao Gu 和 Michael Auli 在数据 2vec: 语音、视觉和语言自监督学习的通用框架中提出的。
该模型继承自 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
(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]
范围内。
masked
的标记为 1,
masked
的标记为 0。
什么是注意力掩码?
如果相应的处理器具有 config.return_attention_mask == True
,则应传递 attention_mask
,这适用于所有预训练的 Data2Vec 音频模型。请注意,即使使用了 attention_mask
,零填充的输入与非填充的输入会有稍微不同的输出,因为在位置编码中有多个卷积层。有关更详细的解释,请参见这里。
output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的 attentions
。
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的 hidden_states
。
return_dict
(bool
, optional) — 是否返回 ModelOutput 而不是普通元组。
labels
(torch.LongTensor
of shape (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
时) 包含各种元素,这取决于配置 (Data2VecAudioConfig) 和输入。
loss
(torch.FloatTensor
of shape (1,)
, optional, 当提供 labels
时返回) — 分类损失。
logits
(torch.FloatTensor
of shape (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 之后的注意力权重,用于计算自注意力头中的加权平均值。
Data2VecAudioForAudioFrameClassification 的前向方法,覆盖了 __call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用 Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoFeatureExtractor, Data2VecAudioForAudioFrameClassification
>>> 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/data2vec-audio-base-960h")
>>> model = Data2VecAudioForAudioFrameClassification.from_pretrained("facebook/data2vec-audio-base-960h")
>>> # 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()
class transformers.Data2VecAudioForCTC
( config )
参数
config
(Data2VecAudioConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained() 方法以加载模型权重。Data2VecAudio 模型在顶部带有 语言建模
头部,用于 Connectionist Temporal Classification (CTC)。Data2VecAudio 是由 Alexei Baevski、Wei-Ning Hsu、Qiantong Xu、Arun Babu、Jiatao Gu 和 Michael Auli 在 data2vec: A General Framework for Self-supervised Learning in Speech, Vision and Language 中提出的。
这个模型继承自 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
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]
之间:
未被掩码
的标记,
被掩码
的标记。
什么是注意力掩码?
如果相应的处理器具有config.return_attention_mask == True
,则应传递attention_mask
,这对于所有预训练的 Data2Vec Audio 模型都是如此。请注意,即使使用attention_mask
,零填充的输入与非填充的输入将具有稍有不同的输出,因为在位置编码中有多个卷积层。有关更详细的解释,请参见这里。
output_attentions
(bool
,optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。
return_dict
(bool
,optional) — 是否返回 ModelOutput 而不是普通元组。
labels
(torch.LongTensor
,形状为(batch_size, target_length)
,optional) — 连接主义时间分类的标签。请注意,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
)包含根据配置(Data2VecAudioConfig)和输入而异的各种元素。
loss
(torch.FloatTensor
,形状为(1,)
,optional,当提供labels
时返回) — 语言建模损失(用于下一个标记预测)。
logits
(torch.FloatTensor
,形状为(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测分数(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 后的注意力权重,用于计算自注意力头中的加权平均值。
Data2VecAudioForCTC 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在这个函数内定义,但应该在此之后调用Module
实例,而不是这个,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoProcessor, Data2VecAudioForCTC
>>> 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/data2vec-audio-base-960h")
>>> model = Data2VecAudioForCTC.from_pretrained("facebook/data2vec-audio-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)
66.95
class transformers.Data2VecAudioForSequenceClassification
( config )
参数
config
(Data2VecAudioConfig)-模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。Data2VecAudio 模型在顶部具有一个序列分类头(一个线性层在池化输出之上)用于类似 SUPERB 关键词检测的任务。
Data2VecAudio 是由 Alexei Baevski、Wei-Ning Hsu、Qiantong Xu、Arun Babu、Jiatao Gu 和 Michael Auli 在数据 2vec: 语音、视觉和语言自监督学习的通用框架中提出的。
这个模型继承自 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)
参数 orCTC
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/data2vec-audio-base-960h”) model = Data2VecAudioForCTC.from_pretrained(“facebook/data2vec-audio-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) 66.95
## Data2VecAudioForSequenceClassification
### `class transformers.Data2VecAudioForSequenceClassification`
[< source >](https://github.com/huggingface/transformers/blob/v4.37.2/src/transformers/models/data2vec/modeling_data2vec_audio.py#L1074)
```py
( config )
参数
config
(Data2VecAudioConfig)-模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。Data2VecAudio 模型在顶部具有一个序列分类头(一个线性层在池化输出之上)用于类似 SUPERB 关键词检测的任务。
Data2VecAudio 是由 Alexei Baevski、Wei-Ning Hsu、Qiantong Xu、Arun Babu、Jiatao Gu 和 Michael Auli 在数据 2vec: 语音、视觉和语言自监督学习的通用框架中提出的。
这个模型继承自 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)
参数