Transformers--4-37-中文文档-四十二-
Transformers 4.37 中文文档(四十二)
CLIP
原文链接:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/clip
概述
CLIP 模型是由 Alec Radford、Jong Wook Kim、Chris Hallacy、Aditya Ramesh、Gabriel Goh、Sandhini Agarwal、Girish Sastry、Amanda Askell、Pamela Mishkin、Jack Clark、Gretchen Krueger、Ilya Sutskever 在从自然语言监督中学习可转移的视觉模型中提出的。CLIP(对比语言-图像预训练)是一个在各种(图像,文本)对上训练的神经网络。它可以用自然语言指导来预测最相关的文本片段,给定一个图像,而不直接为任务进行优化,类似于 GPT-2 和 3 的零-shot 能力。
论文的摘要如下:
最先进的计算机视觉系统被训练来预测一组固定的预定对象类别。这种受限的监督形式限制了它们的普遍性和可用性,因为需要额外的标记数据来指定任何其他视觉概念。直接从关于图像的原始文本中学习是一个有前途的替代方案,它利用了更广泛的监督来源。我们证明了预测哪个标题与哪个图像相匹配的简单预训练任务是一种有效且可扩展的方式,可以从互联网收集的 4 亿(图像,文本)对数据集上从头开始学习 SOTA 图像表示。预训练后,自然语言用于引用学习的视觉概念(或描述新的概念),从而实现模型对下游任务的零-shot 转移。我们通过在超过 30 个不同的现有计算机视觉数据集上进行基准测试来研究这种方法的性能,涵盖了 OCR、视频中的动作识别、地理定位以及许多类型的细粒度对象分类等任务。该模型对大多数任务进行了非平凡的转移,并且通常与完全监督的基线具有竞争力,而无需进行任何特定数据集的训练。例如,我们在 ImageNet 零-shot 上匹配了原始 ResNet-50 的准确率,而无需使用其训练的 128 万个训练示例中的任何一个。我们在此 https URL 上发布我们的代码和预训练模型权重。
这个模型是由valhalla贡献的。原始代码可以在这里找到。
使用提示和示例
CLIP 是一个多模态视觉和语言模型。它可用于图像文本相似性和零-shot 图像分类。CLIP 使用类似 ViT 的 transformer 获取视觉特征,并使用因果语言模型获取文本特征。然后将文本和视觉特征投影到具有相同维度的潜在空间。然后使用投影图像和文本特征之间的点积作为相似分数。
为了将图像输入 Transformer 编码器,每个图像被分割成一系列固定大小且不重叠的补丁,然后进行线性嵌入。添加一个[CLS]标记作为整个图像的表示。作者还添加了绝对位置嵌入,并将结果向量序列馈送到标准 Transformer 编码器。CLIPImageProcessor 可用于调整(或重新缩放)和规范化图像以供模型使用。
使用 CLIPTokenizer 对文本进行编码。CLIPProcessor 将 CLIPImageProcessor 和 CLIPTokenizer 包装成单个实例,用于同时对文本进行编码和准备图像。以下示例展示了如何使用 CLIPProcessor 和 CLIPModel 获取图像文本相似度分数。
>>> from PIL import Image
>>> import requests
>>> from transformers import CLIPProcessor, CLIPModel
>>> model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
>>> processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")
>>> 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
资源
官方 Hugging Face 和社区(🌎标志)资源列表,帮助您开始使用 CLIP。
-
使用遥感(卫星)图像和标题微调 CLIP,一篇关于如何使用RSICD 数据集微调 CLIP 并比较由于数据增强而导致的性能变化的博客文章。
图像到文本
- 使用预训练的 CLIP 进行推理,使用波束搜索进行图像字幕生成的笔记本。🌎
图像检索
-
使用预训练的 CLIP 进行图像检索并计算 MRR(平均倒数排名)分数的笔记本。🌎
-
关于图像检索和显示相似度分数的笔记本。🌎
-
使用 Multilingual CLIP 将图像和文本映射到相同向量空间的笔记本。🌎
可解释性
- 关于如何可视化输入标记和图像段之间相似性的笔记本。🌎
如果您有兴趣提交资源以包含在此处,请随时提交拉取请求,我们将进行审核。资源应该尽可能展示新内容,而不是重复现有资源。
CLIPConfig
class transformers.CLIPConfig
( text_config = None vision_config = None projection_dim = 512 logit_scale_init_value = 2.6592 **kwargs )
参数
-
text_config
(dict
, 可选) — 用于初始化 CLIPTextConfig 的配置选项字典。 -
vision_config
(dict
, 可选) — 用于初始化 CLIPVisionConfig 的配置选项字典。 -
projection_dim
(int
, 可选, 默认为 512) — 文本和视觉投影层的维度。 -
logit_scale_init_value
(float
, 可选, 默认为 2.6592) — logit_scale参数的初始值。默认值根据原始 CLIP 实现使用。 -
kwargs
(可选) — 关键字参数字典。
CLIPConfig 是用于存储 CLIPModel 配置的类。它用于根据指定的参数实例化一个 CLIP 模型,定义文本模型和视觉模型配置。使用默认值实例化配置将产生与 CLIP openai/clip-vit-base-patch32 架构类似的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import CLIPConfig, CLIPModel
>>> # Initializing a CLIPConfig with openai/clip-vit-base-patch32 style configuration
>>> configuration = CLIPConfig()
>>> # Initializing a CLIPModel (with random weights) from the openai/clip-vit-base-patch32 style configuration
>>> model = CLIPModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
>>> # We can also initialize a CLIPConfig from a CLIPTextConfig and a CLIPVisionConfig
>>> from transformers import CLIPTextConfig, CLIPVisionConfig
>>> # Initializing a CLIPText and CLIPVision configuration
>>> config_text = CLIPTextConfig()
>>> config_vision = CLIPVisionConfig()
>>> config = CLIPConfig.from_text_vision_configs(config_text, config_vision)
from_text_vision_configs
( text_config: CLIPTextConfig vision_config: CLIPVisionConfig **kwargs ) → export const metadata = 'undefined';CLIPConfig
返回
CLIPConfig
配置对象的一个实例
从 clip 文本模型配置和 clip 视觉模型配置实例化一个 CLIPConfig(或派生类)。
CLIPTextConfig
class transformers.CLIPTextConfig
( vocab_size = 49408 hidden_size = 512 intermediate_size = 2048 projection_dim = 512 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
, optional, defaults to 49408) — CLIP 文本模型的词汇量。定义了在调用 CLIPModel 时可以表示的不同标记数量。 -
hidden_size
(int
, optional, defaults to 512) — 编码器层和池化层的维度。 -
intermediate_size
(int
, optional, defaults to 2048) — Transformer 编码器中“中间”(即前馈)层的维度。 -
projection_dim
(int
, optional, defaults to 512) — 文本和视觉投影层的维度。 -
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
orfunction
, 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) — 注意力概率的 dropout 比率。 -
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。
这是用于存储 CLIPTextModel 配置的配置类。根据指定的参数实例化一个 CLIP 文本编码器,定义模型架构。使用默认值实例化配置将产生类似于 CLIP openai/clip-vit-base-patch32架构的文本编码器的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import CLIPTextConfig, CLIPTextModel
>>> # Initializing a CLIPTextConfig with openai/clip-vit-base-patch32 style configuration
>>> configuration = CLIPTextConfig()
>>> # Initializing a CLIPTextModel (with random weights) from the openai/clip-vit-base-patch32 style configuration
>>> model = CLIPTextModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
CLIPVisionConfig
class transformers.CLIPVisionConfig
( hidden_size = 768 intermediate_size = 3072 projection_dim = 512 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
, 可选, 默认为 768) — 编码器层和池化层的维度。 -
intermediate_size
(int
, 可选, 默认为 3072) — Transformer 编码器中“中间”(即前馈)层的维度。 -
projection_dim
(int
, 可选, 默认为 512) — 文本和视觉投影层的维度。 -
num_hidden_layers
(int
, 可选, 默认为 12) — Transformer 编码器中的隐藏层数量。 -
num_attention_heads
(int
, 可选, 默认为 12) — Transformer 编码器中每个注意力层的注意力头数。 -
num_channels
(int
, 可选, 默认为 3) — 输入通道的数量。 -
image_size
(int
, 可选, 默认为 224) — 每个图像的大小(分辨率)。 -
patch_size
(int
, 可选, 默认为 32) — 每个补丁的大小(分辨率)。 -
hidden_act
(str
或function
, 可选, 默认为"quick_gelu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
、"relu"
、"selu"
和"gelu_new"
以及"quick_gelu"
。 -
layer_norm_eps
(float
, 可选, 默认为 1e-05) — 层归一化层使用的 epsilon。 -
attention_dropout
(float
, 可选, 默认为 0.0) — 注意力概率的 dropout 比率。 -
initializer_range
(float
, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。 -
initializer_factor
(float
, 可选, 默认为 1.0) — 用于初始化所有权重矩阵的因子(应保持为 1,用于内部初始化测试)。
这是用于存储 CLIPVisionModel 配置的配置类。根据指定的参数实例化一个 CLIP 视觉编码器,定义模型架构。使用默认值实例化配置将产生类似于 CLIP openai/clip-vit-base-patch32架构的视觉编码器的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import CLIPVisionConfig, CLIPVisionModel
>>> # Initializing a CLIPVisionConfig with openai/clip-vit-base-patch32 style configuration
>>> configuration = CLIPVisionConfig()
>>> # Initializing a CLIPVisionModel (with random weights) from the openai/clip-vit-base-patch32 style configuration
>>> model = CLIPVisionModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
CLIPTokenizer
class transformers.CLIPTokenizer
( vocab_file merges_file errors = 'replace' unk_token = '<|endoftext|>' bos_token = '<|startoftext|>' eos_token = '<|endoftext|>' pad_token = '<|endoftext|>' **kwargs )
参数
-
vocab_file
(str
) — 词汇表文件的路径。 -
merges_file
(str
) — 合并文件的路径。 -
errors
(str
,可选,默认为"replace"
)— 解码字节为 UTF-8 时要遵循的范例。有关更多信息,请参阅bytes.decode。 -
unk_token
(str
,optional,默认为"<|endoftext|>"
)--未知令牌。词汇表中没有的令牌无法转换为 ID,而是设置为该令牌。 -
bos_token
(str
,optional,默认为"<|startoftext|>"
)--序列标记的开头。 -
eos_token
(str
,optional,默认为"<|endoftext|>"
)--序列结束标记。 -
pad_token
(str
,optional,默认为"<|endoftext|>"
)--用于填充的令牌,例如,在批处理不同长度的序列时。
构建一个 CLIP 分词器。基于字节级字节对编码。
此分词器继承自 PreTrainedTokenizer,其中包含大部分主要方法。用户应参考此超类以获取有关这些方法的更多信息。
build_inputs_with_special_tokens
( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
-
token_ids_0
(List[int]
)— 将添加特殊令牌的 ID 列表。 -
token_ids_1
(List[int]
,可选)— 序列对的可选第二个 ID 列表。
返回
List[int]
具有适当特殊令牌的输入 ID 列表。
通过连接和添加特殊令牌,从序列或序列对构建用于序列分类任务的模型输入。CLIP 序列具有以下格式:
- 单个序列:
<|startoftext|> X <|endoftext|>
序列对不是预期的使用情况,但它们将在没有分隔符的情况下处理。
get_special_tokens_mask
( token_ids_0: List token_ids_1: Optional = None already_has_special_tokens: bool = False ) → export const metadata = 'undefined';List[int]
参数
-
token_ids_0
(List[int]
)— ID 列表。 -
token_ids_1
(List[int]
,可选)— 序列对的可选第二个 ID 列表。 -
already_has_special_tokens
(bool
,可选,默认为False
)— 令牌列表是否已经为模型格式化了特殊令牌。
返回
List[int]
一个整数列表,范围为[0, 1]:1 表示特殊令牌,0 表示序列令牌。
从没有添加特殊令牌的令牌列表中检索序列 id。当使用 tokenizer 的prepare_for_model
方法添加特殊令牌时,将调用此方法。
create_token_type_ids_from_sequences
( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
-
token_ids_0
(List[int]
)— ID 列表。 -
token_ids_1
(List[int]
,可选)— 序列对的可选第二个 ID 列表。
返回
List[int]
零列表。
从传递的两个序列创建一个掩码。CLIP 不使用令牌类型 id,因此返回一个零列表。
save_vocabulary
( save_directory: str filename_prefix: Optional = None )
CLIPTokenizerFast
class transformers.CLIPTokenizerFast
( vocab_file = None merges_file = None tokenizer_file = None unk_token = '<|endoftext|>' bos_token = '<|startoftext|>' eos_token = '<|endoftext|>' pad_token = '<|endoftext|>' **kwargs )
参数
-
vocab_file
(str
,可选)— 词汇文件的路径。 -
merges_file
(str
,可选)— 合并文件的路径。 -
tokenizer_file
(str
,可选)— 要使用的分词器文件的路径,而不是词汇文件。 -
unk_token
(str
,optional,默认为"<|endoftext|>"
)--未知令牌。词汇表中没有的令牌无法转换为 ID,而是设置为该令牌。 -
bos_token
(str
,optional,默认为"<|startoftext|>"
)--序列标记的开头。 -
eos_token
(str
,optional,默认为"<|endoftext|>"
)--序列结束标记。 -
pad_token
(str
,optional,默认为"<|endoftext|>"
)--用于填充的令牌,例如,在批处理不同长度的序列时。
构建一个“快速”CLIP 分词器(由 HuggingFace 的tokenizers库支持)。基于字节级字节对编码。
此分词器继承自 PreTrainedTokenizerFast,其中包含大部分主要方法。用户应参考此超类以获取有关这些方法的更多信息。
build_inputs_with_special_tokens
( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
-
token_ids_0
(List[int]
)— 将添加特殊令牌的 ID 列表。 -
token_ids_1
(List[int]
,可选)— 序列对的可选第二个 ID 列表。
返回
List[int]
具有适当特殊令牌的输入 ID 列表。
通过连接和添加特殊标记,从序列或序列对构建用于序列分类任务的模型输入。CLIP 序列的格式如下:
- 单个序列:
<|startoftext|> X <|endoftext|>
序列对不是预期的用例,但它们将被处理而无需分隔符。
create_token_type_ids_from_sequences
( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
-
token_ids_0
(List[int]
) — ID 列表。 -
token_ids_1
(List[int]
, 可选) — 序列对的可选第二个 ID 列表。
返回
List[int]
零的列表。
从传递的两个序列创建一个掩码。CLIP 不使用标记类型 ID,因此返回一个零列表。
CLIPImageProcessor
class transformers.CLIPImageProcessor
( do_resize: bool = True size: Dict = None resample: Resampling = <Resampling.BICUBIC: 3> do_center_crop: bool = True crop_size: Dict = None do_rescale: bool = True rescale_factor: Union = 0.00392156862745098 do_normalize: bool = True image_mean: Union = None image_std: Union = None do_convert_rgb: bool = True **kwargs )
参数
-
do_resize
(bool
, 可选, 默认为True
) — 是否将图像的(高度,宽度)尺寸调整为指定的size
。可以被preprocess
方法中的do_resize
覆盖。 -
size
(Dict[str, int]
可选, 默认为{"shortest_edge" -- 224}
): 调整大小后的图像大小。图像的最短边被调整为 size[“shortest_edge”],最长边被调整以保持输入的纵横比。可以被preprocess
方法中的size
覆盖。 -
resample
(PILImageResampling
, 可选, 默认为Resampling.BICUBIC
) — 如果调整图像大小,则使用的重采样滤波器。可以被preprocess
方法中的resample
覆盖。 -
do_center_crop
(bool
, 可选, 默认为True
) — 是否将图像居中裁剪到指定的crop_size
。可以被preprocess
方法中的do_center_crop
覆盖。 -
crop_size
(Dict[str, int]
可选, 默认为 224) — 应用center_crop
后输出图像的大小。可以被preprocess
方法中的crop_size
覆盖。 -
do_rescale
(bool
, 可选, 默认为True
) — 是否按指定比例rescale_factor
重新缩放图像。可以被preprocess
方法中的do_rescale
覆盖。 -
rescale_factor
(int
或float
, 可选, 默认为1/255
) — 如果重新缩放图像,则使用的比例因子。可以被preprocess
方法中的rescale_factor
覆盖。 -
do_normalize
(bool
, 可选, 默认为True
) — 是否对图像进行规范化。可以被preprocess
方法中的do_normalize
覆盖。 -
image_mean
(float
或List[float]
, 可选, 默认为[0.48145466, 0.4578275, 0.40821073]
) — 如果规范化图像,则使用的均值。这是一个浮点数或与图像通道数相同长度的浮点数列表。可以被preprocess
方法中的image_mean
参数覆盖。 -
image_std
(float
或List[float]
, 可选, 默认为[0.26862954, 0.26130258, 0.27577711]
) — 如果规范化图像,则使用的标准差。这是一个浮点数或与图像通道数相同长度的浮点数列表。可以被preprocess
方法中的image_std
参数覆盖。 -
do_convert_rgb
(bool
, 可选, 默认为True
) — 是否将图像转换为 RGB。
构建一个 CLIP 图像处理器。
preprocess
( images: Union do_resize: bool = None size: Dict = None resample: Resampling = None do_center_crop: bool = None crop_size: int = None do_rescale: bool = None rescale_factor: float = None do_normalize: bool = None image_mean: Union = None image_std: Union = None do_convert_rgb: bool = None return_tensors: Union = None data_format: Optional = <ChannelDimension.FIRST: 'channels_first'> input_data_format: Union = None **kwargs )
参数
-
images
(ImageInput
) — 要预处理的图像。期望单个或批量图像,像素值范围从 0 到 255。如果传入像素值在 0 到 1 之间的图像,请设置do_rescale=False
。 -
do_resize
(bool
, 可选, 默认为self.do_resize
) — 是否调整图像大小。 -
size
(Dict[str, int]
, optional, defaults toself.size
) — 调整大小后的图像尺寸。图像的最短边被调整为 size[“shortest_edge”],最长边被调整以保持输入的长宽比。 -
resample
(int
, optional, defaults toself.resample
) — 如果调整图像大小,则使用的重采样滤波器。可以是枚举PILImageResampling
之一。仅在do_resize
设置为True
时有效。 -
do_center_crop
(bool
, optional, defaults toself.do_center_crop
) — 是否对图像进行中心裁剪。 -
crop_size
(Dict[str, int]
, optional, defaults toself.crop_size
) — 中心裁剪的尺寸。仅在do_center_crop
设置为True
时有效。 -
do_rescale
(bool
, optional, defaults toself.do_rescale
) — 是否重新缩放图像。 -
rescale_factor
(float
, optional, defaults toself.rescale_factor
) — 如果do_rescale
设置为True
,则用于重新缩放图像的缩放因子。 -
do_normalize
(bool
, optional, defaults toself.do_normalize
) — 是否对图像进行归一化。 -
image_mean
(float
或List[float]
, optional, defaults toself.image_mean
) — 用于归一化的图像均值。仅在do_normalize
设置为True
时有效。 -
image_std
(float
或List[float]
, optional, defaults toself.image_std
) — 用于归一化的图像标准差。仅在do_normalize
设置为True
时有效。 -
do_convert_rgb
(bool
, optional, defaults toself.do_convert_rgb
) — 是否将图像转换为 RGB。 -
return_tensors
(str
或TensorType
, optional) — 要返回的张量类型。可以是以下之一:-
未设置:返回一个
np.ndarray
列表。 -
TensorType.TENSORFLOW
或'tf'
:返回一个tf.Tensor
类型的批次。 -
TensorType.PYTORCH
或'pt'
:返回一个torch.Tensor
类型的批次。 -
TensorType.NUMPY
或'np'
:返回一个np.ndarray
类型的批次。 -
TensorType.JAX
或'jax'
:返回一个jax.numpy.ndarray
类型的批次。
-
-
data_format
(ChannelDimension
或str
, optional, defaults toChannelDimension.FIRST
) — 输出图像的通道维度格式。可以是以下之一:-
"channels_first"
或ChannelDimension.FIRST
:图像以(通道数,高度,宽度)格式。 -
"channels_last"
或ChannelDimension.LAST
:图像以(高度,宽度,通道数)格式。 -
未设置:使用输入图像的通道维度格式。
-
-
input_data_format
(ChannelDimension
或str
, optional) — 输入图像的通道维度格式。如果未设置,则从输入图像中推断通道维度格式。可以是以下之一:-
"channels_first"
或ChannelDimension.FIRST
:图像以(通道数,高度,宽度)格式。 -
"channels_last"
或ChannelDimension.LAST
:图像以(高度,宽度,通道数)格式。 -
"none"
或ChannelDimension.NONE
:图像以(高度,宽度)格式。
-
预处理一张图像或一批图像。
CLIPFeatureExtractor
class transformers.CLIPFeatureExtractor
( *args **kwargs )
CLIPProcessor
class transformers.CLIPProcessor
( image_processor = None tokenizer = None **kwargs )
参数
-
image_processor
(CLIPImageProcessor, optional) — 图像处理器是必需的输入。 -
tokenizer
(CLIPTokenizerFast, optional) — 分词器是必需的输入。
构建一个 CLIP 处理器,将 CLIP 图像处理器和 CLIP 分词器封装成一个处理器。
CLIPProcessor 提供了 CLIPImageProcessor 和 CLIPTokenizerFast 的所有功能。查看__call__()
和 decode()以获取更多信息。
批量解码
( *args **kwargs )
此方法将其所有参数转发给 CLIPTokenizerFast 的 batch_decode()。有关更多信息,请参阅此方法的文档字符串。
解码
( *args **kwargs )
此方法将其所有参数转发给 CLIPTokenizerFast 的 decode()。有关更多信息,请参阅此方法的文档字符串。
Pytorch 隐藏 Pytorch 内容
CLIPModel
class transformers.CLIPModel
( config: CLIPConfig )
参数
config
(CLIPConfig)— 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
此模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
此模型还是 PyTorch 的torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
前向
( 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.clip.modeling_clip.CLIPOutput 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]
范围内:-
1 表示
未被掩盖
的标记, -
0 表示
被掩盖
的标记。
什么是注意力掩码?
-
-
position_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。什么是位置 ID?
-
pixel_values
(torch.FloatTensor
of shape(batch_size, num_channels, height, width)
) — 像素值。默认情况下会忽略填充。可以使用 AutoImageProcessor 获取像素值。有关详细信息,请参阅 CLIPImageProcessor.call
()。 -
return_loss
(bool
, 可选) — 是否返回对比损失。 -
output_attentions
(bool
, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量中的attentions
。 -
output_hidden_states
(bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states
。 -
return_dict
(bool
, 可选) — 是否返回一个 ModelOutput 而不是一个普通元组。
返回
transformers.models.clip.modeling_clip.CLIPOutput
或tuple(torch.FloatTensor)
一个transformers.models.clip.modeling_clip.CLIPOutput
或一个torch.FloatTensor
元组(如果传递了return_dict=False
或config.return_dict=False
)包含根据配置(<class 'transformers.models.clip.configuration_clip.CLIPConfig'>
)和输入的不同元素。
-
loss
(torch.FloatTensor
of shape(1,)
, 可选, 当return_loss
为True
时返回) — 图像-文本相似度的对比损失。 -
logits_per_image:(torch.FloatTensor
of shape(image_batch_size, text_batch_size)
) —image_embeds
和text_embeds
之间的缩放点积分数。这代表图像-文本相似度分数。 -
logits_per_text:(torch.FloatTensor
of shape(text_batch_size, image_batch_size)
) —text_embeds
和image_embeds
之间的缩放点积分数。这代表文本-图像相似度分数。 -
text_embeds(torch.FloatTensor
of shape(batch_size, output_dim
) — 通过将投影层应用于 CLIPTextModel 的池化输出获得的文本嵌入。 -
image_embeds(torch.FloatTensor
of shape(batch_size, output_dim
) — 通过将投影层应用于 CLIPVisionModel 的池化输出获得的图像嵌入。 -
text_model_output(BaseModelOutputWithPooling):
CLIPTextModel 的输出。 -
vision_model_output(BaseModelOutputWithPooling):
CLIPVisionModel 的输出。
CLIPModel 的前向方法,覆盖__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例而不是这个,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
示例:
>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, CLIPModel
>>> model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
>>> processor = AutoProcessor.from_pretrained("openai/clip-vit-base-patch32")
>>> 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
of shape(batch_size, sequence_length)
) — 输入序列标记在词汇表中的索引。默认情况下会忽略填充。可以使用 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 而不是一个普通元组。
返回
text_features(形状为(batch_size, output_dim)
的torch.FloatTensor
)
通过将投影层应用于 CLIPTextModel 的池化输出获得的文本嵌入。
CLIPModel 的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此之后调用,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoTokenizer, CLIPModel
>>> model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
>>> tokenizer = AutoTokenizer.from_pretrained("openai/clip-vit-base-patch32")
>>> 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
(形状为(batch_size, num_channels, height, width)
的torch.FloatTensor
)— 像素值。默认情况下将忽略填充。如果提供,可以使用 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
)
通过将投影层应用于 CLIPVisionModel 的池化输出获得的图像嵌入。
CLIPModel 的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此之后调用,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, CLIPModel
>>> model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
>>> processor = AutoProcessor.from_pretrained("openai/clip-vit-base-patch32")
>>> 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)
CLIPTextModel
class transformers.CLIPTextModel
( config: CLIPTextConfig )
参数
config
(CLIPConfig)— 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained() 方法以加载模型权重。
CLIP 中的文本模型没有任何头部或顶部的投影。该模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
该模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
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]
中:-
对于未被掩码的标记为 1,
-
对于被掩码的标记为 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.clip.configuration_clip.CLIPTextConfig'>
)和输入的不同元素。
-
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
时返回)- 形状为(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 后的注意力权重。
CLIPTextModel 的前向方法覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例而不是这个,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoTokenizer, CLIPTextModel
>>> model = CLIPTextModel.from_pretrained("openai/clip-vit-base-patch32")
>>> tokenizer = AutoTokenizer.from_pretrained("openai/clip-vit-base-patch32")
>>> 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
CLIPTextModelWithProjection
class transformers.CLIPTextModelWithProjection
( config: CLIPTextConfig )
参数
config
(CLIPConfig)- 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
在顶部具有投影层(在池化输出的顶部的线性层)的 CLIP 文本模型。
该模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
该模型还是一个 PyTorch torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有信息。
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.models.clip.modeling_clip.CLIPTextModelOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
)- 词汇表中输入序列标记的索引。默认情况下将忽略填充。可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.
call
()。什么是输入 ID?
-
attention_mask
(torch.Tensor
,形状为(batch_size, sequence_length)
,可选)— 用于避免在填充标记索引上执行注意力的掩码。掩码值选在[0, 1]
范围内。-
1 表示
未被掩码
的标记, -
0 表示
被掩码
的标记。
什么是注意力掩码?
-
-
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 而不是一个普通元组。
返回
transformers.models.clip.modeling_clip.CLIPTextModelOutput
或tuple(torch.FloatTensor)
一个transformers.models.clip.modeling_clip.CLIPTextModelOutput
或一个torch.FloatTensor
元组(如果传递了return_dict=False
或者config.return_dict=False
)包含各种元素,取决于配置(<class 'transformers.models.clip.configuration_clip.CLIPTextConfig'>
)和输入。
-
text_embeds
(torch.FloatTensor
,形状为(batch_size, output_dim)
,可选,在使用with_projection=True
初始化模型时返回)— 通过将投影层应用于 pooler_output 获得的文本嵌入。 -
last_hidden_state
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
)— 模型最后一层的隐藏状态序列。 -
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 之后的注意力权重,用于计算自注意力头中的加权平均值。
CLIPTextModelWithProjection 的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoTokenizer, CLIPTextModelWithProjection
>>> model = CLIPTextModelWithProjection.from_pretrained("openai/clip-vit-base-patch32")
>>> tokenizer = AutoTokenizer.from_pretrained("openai/clip-vit-base-patch32")
>>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="pt")
>>> outputs = model(**inputs)
>>> text_embeds = outputs.text_embeds
CLIPVisionModelWithProjection
class transformers.CLIPVisionModelWithProjection
( config: CLIPVisionConfig )
参数
config
(CLIPConfig)— 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法加载模型权重。
在顶部带有投影层的 CLIP Vision 模型(在池化输出的顶部有一个线性层)。
这个模型继承自 PreTrainedModel。查看超类文档,了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
这个模型也是一个 PyTorch torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
( pixel_values: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.clip.modeling_clip.CLIPVisionModelOutput 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.models.clip.modeling_clip.CLIPVisionModelOutput
或tuple(torch.FloatTensor)
一个transformers.models.clip.modeling_clip.CLIPVisionModelOutput
或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
)包含各种元素,取决于配置(<class 'transformers.models.clip.configuration_clip.CLIPVisionConfig'>
)和输入。
-
image_embeds
(torch.FloatTensor
,形状为(batch_size, output_dim)
可选,当模型初始化时带有with_projection=True
时返回) — 通过将投影层应用于 pooler_output 获得的图像嵌入。 -
last_hidden_state
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
) — 模型最后一层的隐藏状态序列。 -
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 后的注意力权重,用于计算自注意力头中的加权平均值。
CLIPVisionModelWithProjection 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在这个函数内定义,但应该在之后调用Module
实例,而不是在这里调用,因为前者会处理运行前处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, CLIPVisionModelWithProjection
>>> model = CLIPVisionModelWithProjection.from_pretrained("openai/clip-vit-base-patch32")
>>> processor = AutoProcessor.from_pretrained("openai/clip-vit-base-patch32")
>>> 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)
>>> image_embeds = outputs.image_embeds
CLIPVisionModel
class transformers.CLIPVisionModel
( config: CLIPVisionConfig )
参数
config
(CLIPConfig) — 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
CLIP 中的视觉模型,没有顶部的头部或投影。此模型继承自 PreTrainedModel。查看超类文档以了解库为其所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
此模型也是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
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 或torch.FloatTensor
元组
一个 transformers.modeling_outputs.BaseModelOutputWithPooling 或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
时)包含根据配置(<class 'transformers.models.clip.configuration_clip.CLIPVisionConfig'>
)和输入的各种元素。
-
last_hidden_state
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
) — 模型最后一层的隐藏状态序列。 -
pooler_output
(torch.FloatTensor
,形状为(batch_size, hidden_size)
) — 经过用于辅助预训练任务的层进一步处理后的序列第一个标记(分类标记)的最后一层隐藏状态。例如,对于 BERT 系列模型,这返回经过线性层和 tanh 激活函数处理后的分类标记。线性层的权重是从下一个句子预测(分类)目标在预训练期间训练的。 -
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 之后的注意力权重,用于计算自注意力头中的加权平均值。
CLIPVisionModel 的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是此函数,因为前者会负责运行预处理和后处理步骤,而后者会默默忽略它们。
示例:
>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, CLIPVisionModel
>>> model = CLIPVisionModel.from_pretrained("openai/clip-vit-base-patch32")
>>> processor = AutoProcessor.from_pretrained("openai/clip-vit-base-patch32")
>>> 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
TensorFlow 隐藏 TensorFlow 内容
TFCLIPModel
class transformers.TFCLIPModel
( config: CLIPConfig *inputs **kwargs )
参数
config
(CLIPConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
此模型继承自 TFPreTrainedModel。查看超类文档以获取库为其所有模型实现的通用方法(例如下载或保存,调整输入嵌入,修剪头等)。
此模型还是tf.keras.Model的子类。将其用作常规 TF 2.0 Keras 模型,并参考 TF 2.0 文档以获取与一般用法和行为相关的所有内容。
transformers
中的 TensorFlow 模型和层接受两种格式的输入:
-
将所有输入作为关键字参数(类似于 PyTorch 模型),或
-
将所有输入作为列表、元组或字典放在第一个位置参数中。
支持第二种格式的原因是 Keras 方法在将输入传递给模型和层时更喜欢这种格式。由于有此支持,当使用model.fit()
等方法时,应该“只需工作” - 只需以model.fit()
支持的任何格式传递输入和标签!但是,如果要在 Keras 方法之外使用第二种格式,例如在使用 KerasFunctional
API 创建自己的层或模型时,有三种可能性可用于收集第一个位置参数中的所有输入张量:
-
仅包含
input_ids
的单个张量,没有其他内容:model(input_ids)
-
一个长度可变的列表,其中包含按照文档字符串中给定的顺序的一个或多个输入张量:
model([input_ids, attention_mask])
或model([input_ids, attention_mask, token_type_ids])
-
一个字典,其中包含与文档字符串中给定的输入名称相关联的一个或多个输入张量:
model({"input_ids": input_ids, "token_type_ids": token_type_ids})
请注意,在使用子类化创建模型和层时,您无需担心任何这些,因为您可以像对待任何其他 Python 函数一样传递输入!
call
( input_ids: TFModelInputType | None = None pixel_values: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None return_loss: Optional[bool] = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) → export const metadata = 'undefined';transformers.models.clip.modeling_tf_clip.TFCLIPOutput or tuple(tf.Tensor)
参数
-
input_ids
(np.ndarray
,tf.Tensor
,List[tf.Tensor]
,Dict[str, tf.Tensor]
或Dict[str, np.ndarray]
,每个示例的形状必须为(batch_size, sequence_length)
) — 输入序列标记在词汇表中的索引。可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.
call
()和 PreTrainedTokenizer.encode()。什么是输入 ID?
-
pixel_values
(形状为(batch_size, num_channels, height, width)
的np.ndarray
、tf.Tensor
、List[tf.Tensor]
、Dict[str, tf.Tensor]
或Dict[str, np.ndarray]
,每个示例必须具有相同形状)— 像素值。可以使用 AutoImageProcessor 获取像素值。有关详细信息,请参阅 CLIPImageProcessor.call
()。 -
attention_mask
(形状为(batch_size, sequence_length)
的np.ndarray
或tf.Tensor
,可选)— 避免在填充标记索引上执行注意力的掩码。掩码值在[0, 1]
中选择:-
对于未被遮罩的标记,
-
对于被遮罩的标记为 0。
什么是注意力掩码?
-
-
position_ids
(形状为(batch_size, sequence_length)
的np.ndarray
或tf.Tensor
,可选)— 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。什么是位置 ID?
-
return_loss
(bool
,可选)— 是否返回对比损失。 -
output_attentions
(bool
,可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。此参数仅可在急切模式下使用,在图模式下将使用配置中的值。 -
output_hidden_states
(bool
,可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。此参数仅可在急切模式下使用,在图模式下将使用配置中的值。 -
return_dict
(bool
,可选)— 是否返回 ModelOutput 而不是普通元组。此参数仅可在急切模式下使用,在图模式下该值将始终设置为 True。 -
training
(bool
,可选,默认为False
)— 是否在训练模式下使用模型(一些模块如 dropout 模块在训练和评估之间有不同的行为)。
返回
transformers.models.clip.modeling_tf_clip.TFCLIPOutput
或tuple(tf.Tensor)
一个transformers.models.clip.modeling_tf_clip.TFCLIPOutput
或一个tf.Tensor
元组(如果传递了return_dict=False
或config.return_dict=False
时)包含根据配置(<class 'transformers.models.clip.configuration_clip.CLIPConfig'>
)和输入的不同元素。
-
loss
(形状为(1,)
的tf.Tensor
,可选,当return_loss
为True
时返回)— 图像-文本相似性的对比损失。 -
logits_per_image:(形状为
(image_batch_size, text_batch_size)的
tf.Tensor) —
image_embeds和
text_embeds`之间的缩放点积分数。这代表图像-文本相似性分数。 -
logits_per_text:(形状为
(text_batch_size, image_batch_size)的
tf.Tensor) —
text_embeds和
image_embeds`之间的缩放点积分数。这代表文本-图像相似性分数。 -
text_embeds(tf.Tensor
的形状为(batch_size, output_dim)
)— 通过将投影层应用于 TFCLIPTextModel 的汇聚输出获得的文本嵌入。 -
image_embeds(tf.Tensor
of shape(batch_size, output_dim
) — 通过将池化输出应用于 TFCLIPVisionModel 的投影层获得的图像嵌入。 -
text_model_output(~modeling_tf_utils.TFBaseModelOutputWithPooling):
TFCLIPTextModel 的输出。 -
vision_model_output(~modeling_tf_utils.TFBaseModelOutputWithPooling):
TFCLIPVisionModel 的输出。
TFCLIPModel 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的配方需要在此函数内定义,但应该在之后调用Module
实例,而不是在此处调用,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。
示例:
>>> import tensorflow as tf
>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, TFCLIPModel
>>> model = TFCLIPModel.from_pretrained("openai/clip-vit-base-patch32")
>>> processor = AutoProcessor.from_pretrained("openai/clip-vit-base-patch32")
>>> 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="tf", padding=True
... )
>>> outputs = model(**inputs)
>>> logits_per_image = outputs.logits_per_image # this is the image-text similarity score
>>> probs = tf.nn.softmax(logits_per_image, axis=1) # we can take the softmax to get the label probabilities
get_text_features
( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) → export const metadata = 'undefined';text_features (tf.Tensor of shape (batch_size, output_dim)
参数
-
input_ids
(np.ndarray
,tf.Tensor
,List[tf.Tensor]
``Dict[str, tf.Tensor]或
Dict[str, np.ndarray],每个示例的形状必须为
(batch_size, sequence_length)`) — 词汇表中输入序列令牌的索引。可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.
call
()和 PreTrainedTokenizer.encode()。什么是输入 ID?
-
attention_mask
(np.ndarray
或tf.Tensor
of shape(batch_size, sequence_length)
, 可选) — 用于避免在填充令牌索引上执行注意力的掩码。掩码值选择在[0, 1]
之间:-
对于
未被掩码
的令牌为 1, -
对于
被掩码
的令牌为 0。
什么是注意力掩码?
-
-
position_ids
(np.ndarray
或tf.Tensor
of shape(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 而不是普通元组。此参数仅在急切模式下使用,在图模式下该值将始终设置为 True。 -
training
(bool
, 可选, 默认为`False“) — 是否在训练模式下使用模型(一些模块如 dropout 模块在训练和评估之间有不同的行为)。
返回
text_features (tf.Tensor
of shape (batch_size, output_dim
)
通过将池化输出应用于 TFCLIPTextModel 的投影层获得的文本嵌入。
TFCLIPModel 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用 Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoTokenizer, TFCLIPModel
>>> model = TFCLIPModel.from_pretrained("openai/clip-vit-base-patch32")
>>> tokenizer = AutoTokenizer.from_pretrained("openai/clip-vit-base-patch32")
>>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="tf")
>>> text_features = model.get_text_features(**inputs)
get_image_features
( pixel_values: TFModelInputType | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) → export const metadata = 'undefined';image_features (tf.Tensor of shape (batch_size, output_dim)
参数
-
pixel_values
(np.ndarray
,tf.Tensor
,List[tf.Tensor]
``Dict[str, tf.Tensor]或
Dict[str, np.ndarray],每个示例的形状必须为
(batch_size, num_channels, height, width)) — 像素值。可以使用 AutoImageProcessor 获取像素值。有关详细信息,请参阅 CLIPImageProcessor.
call()。output_attentions (
bool,*可选*): 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回的张量下的
attentions`。此参数仅在急切模式下使用,在图模式下将使用配置中的值。 -
output_hidden_states
(bool
,可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回的张量下的hidden_states
。此参数仅在急切模式下使用,在图模式下将使用配置中的值。 -
return_dict
(bool
,可选) — 是否返回 ModelOutput 而不是普通元组。此参数可在急切模式下使用,在图模式下该值将始终设置为 True。 -
training
(bool
,可选,默认为 `False“) — 是否在训练模式下使用模型(一些模块如 dropout 模块在训练和评估之间有不同的行为)。
返回
image_features (tf.Tensor
,形状为 (batch_size, output_dim
)
通过将投影层应用于 TFCLIPVisionModel 的汇总输出获得的图像嵌入。
TFCLIPModel 的前向方法,覆盖了 __call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用 Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, TFCLIPModel
>>> model = TFCLIPModel.from_pretrained("openai/clip-vit-base-patch32")
>>> processor = AutoProcessor.from_pretrained("openai/clip-vit-base-patch32")
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> inputs = processor(images=image, return_tensors="tf")
>>> image_features = model.get_image_features(**inputs)
TFCLIPTextModel
class transformers.TFCLIPTextModel
( config: CLIPTextConfig *inputs **kwargs )
call
( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: Optional[bool] = False ) → export const metadata = 'undefined';transformers.modeling_tf_outputs.TFBaseModelOutputWithPooling or tuple(tf.Tensor)
参数
-
input_ids
(np.ndarray
,tf.Tensor
,List[tf.Tensor]
``Dict[str, tf.Tensor]或
Dict[str, np.ndarray],每个示例的形状必须为
(batch_size, sequence_length)`) — 词汇表中输入序列标记的索引。可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.
call
()和 PreTrainedTokenizer.encode()。什么是输入 ID?
-
attention_mask
(np.ndarray
或tf.Tensor
,形状为(batch_size, sequence_length)
,可选) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选在[0, 1]
之间:-
1 代表未被屏蔽的标记,
-
0 代表被屏蔽的标记。
什么是注意力掩码?
-
-
position_ids
(np.ndarray
或形状为(batch_size, sequence_length)
的tf.Tensor
,可选) — 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。什么是位置 ID?
-
output_attentions
(bool
, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。此参数仅在急切模式下使用,在图模式下将使用配置中的值。 -
output_hidden_states
(bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。此参数仅在急切模式下使用,在图模式下将使用配置中的值。 -
return_dict
(bool
, 可选) — 是否返回 ModelOutput 而不是普通元组。此参数可在急切模式下使用,在图模式下该值将始终设置为 True。 -
training
(bool
, 可选, 默认为`False“) — 是否在训练模式下使用模型(一些模块如 dropout 模块在训练和评估之间有不同的行为)。
返回
transformers.modeling_tf_outputs.TFBaseModelOutputWithPooling 或tf.Tensor
元组
一个 transformers.modeling_tf_outputs.TFBaseModelOutputWithPooling 或一个tf.Tensor
元组(如果传递return_dict=False
或config.return_dict=False
)包含各种元素,取决于配置(<class 'transformers.models.clip.configuration_clip.CLIPTextConfig'>
)和输入。
-
last_hidden_state
(tf.Tensor
,形状为(batch_size, sequence_length, hidden_size)
) — 模型最后一层的隐藏状态序列。 -
pooler_output
(tf.Tensor
,形状为(batch_size, hidden_size)
) — 序列第一个标记(分类标记)的最后一层隐藏状态,经过线性层和 Tanh 激活函数进一步处理。线性层的权重在预训练期间从下一个句子预测(分类)目标中训练。这个输出通常不是输入的语义内容的好摘要,您通常最好对整个输入序列的隐藏状态进行平均或池化。
-
hidden_states
(tuple(tf.Tensor)
, 可选, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的tf.Tensor
元组(一个用于嵌入的输出 + 一个用于每一层的输出)。模型在每一层输出的隐藏状态加上初始嵌入输出。
-
attentions
(tuple(tf.Tensor)
, 可选, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元组(每层一个)。自注意力头中的注意力 softmax 之后的注意力权重,用于计算加权平均值。
TFCLIPTextModel 的前向方法,覆盖__call__
特殊方法。
尽管前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。
示例:
>>> from transformers import AutoTokenizer, TFCLIPTextModel
>>> model = TFCLIPTextModel.from_pretrained("openai/clip-vit-base-patch32")
>>> tokenizer = AutoTokenizer.from_pretrained("openai/clip-vit-base-patch32")
>>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="tf")
>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> pooled_output = outputs.pooler_output # pooled (EOS token) states
TFCLIPVisionModel
class transformers.TFCLIPVisionModel
( config: CLIPVisionConfig *inputs **kwargs )
call
( pixel_values: TFModelInputType | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: Optional[bool] = False ) → export const metadata = 'undefined';transformers.modeling_tf_outputs.TFBaseModelOutputWithPooling or tuple(tf.Tensor)
参数
-
pixel_values
(np.ndarray
,tf.Tensor
,List[tf.Tensor]
Dict[str, tf.Tensor]
或Dict[str, np.ndarray]
,每个示例必须具有形状(batch_size, num_channels, height, width)
) — 像素值。可以使用 AutoImageProcessor 获取像素值。有关详细信息,请参阅 CLIPImageProcessor.call
()。output_attentions (bool
, optional): 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。此参数仅在急切模式下使用,在图模式下将使用配置中的值。 -
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。此参数仅在急切模式下使用,在图模式下将使用配置中的值。 -
return_dict
(bool
, optional) — 是否返回 ModelOutput 而不是普通元组。此参数可以在急切模式下使用,在图模式下该值将始终设置为 True。 -
training
(bool
, optional, 默认为False
) — 是否在训练模式下使用模型(一些模块如 dropout 模块在训练和评估之间有不同的行为)。
返回
transformers.modeling_tf_outputs.TFBaseModelOutputWithPooling 或 tuple(tf.Tensor)
一个 transformers.modeling_tf_outputs.TFBaseModelOutputWithPooling 或一个tf.Tensor
元组(如果传递return_dict=False
或config.return_dict=False
时)包含各种元素,取决于配置(<class 'transformers.models.clip.configuration_clip.CLIPVisionConfig'>
)和输入。
-
last_hidden_state
(tf.Tensor
,形状为(batch_size, sequence_length, hidden_size)
) — 模型最后一层的隐藏状态序列。 -
pooler_output
(tf.Tensor
,形状为(batch_size, hidden_size)
) — 序列第一个标记(分类标记)的最后一层隐藏状态,进一步由线性层和 Tanh 激活函数处理。线性层的权重是在预训练期间从下一个句子预测(分类)目标中训练的。这个输出通常不是输入语义内容的好摘要,通常最好对整个输入序列的隐藏状态进行平均或池化。
-
hidden_states
(tuple(tf.Tensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的tf.Tensor
元组(一个用于嵌入的输出 + 一个用于每个层的输出)。模型在每个层的输出的隐藏状态加上初始嵌入输出。
-
attentions
(tuple(tf.Tensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元组(每个层一个)。注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
TFCLIPVisionModel 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, TFCLIPVisionModel
>>> model = TFCLIPVisionModel.from_pretrained("openai/clip-vit-base-patch32")
>>> processor = AutoProcessor.from_pretrained("openai/clip-vit-base-patch32")
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> inputs = processor(images=image, return_tensors="tf")
>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> pooled_output = outputs.pooler_output # pooled CLS states
JAX 隐藏 JAX 内容
FlaxCLIPModel
class transformers.FlaxCLIPModel
( config: CLIPConfig input_shape: Optional = None seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True **kwargs )
参数
-
config
(CLIPConfig) — 模型的所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。 -
dtype
(jax.numpy.dtype
, 可选, 默认为jax.numpy.float32
) — 计算的数据类型。可以是jax.numpy.float32
、jax.numpy.float16
(在 GPU 上)和jax.numpy.bfloat16
(在 TPU 上)之一。这可以用于在 GPU 或 TPU 上启用混合精度训练或半精度推断。如果指定了
dtype
,则所有计算将使用给定的dtype
执行。请注意,这仅指定计算的数据类型,不会影响模型参数的数据类型。
如果要更改模型参数的数据类型,请参阅 to_fp16()和 to_bf16()。
此模型继承自 FlaxPreTrainedModel。查看超类文档以了解库为其所有模型实现的通用方法(如从 PyTorch 模型下载、保存和转换权重)。
此模型也是flax.linen.Module的子类。将其用作常规的 Flax linen 模块,并参考 Flax 文档以了解所有与一般用法和行为相关的事项。
最后,此模型支持 JAX 的固有功能,例如:
__call__
( input_ids pixel_values attention_mask = None position_ids = None params: dict = None dropout_rng: PRNGKey = None train: bool = False output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.clip.modeling_flax_clip.FlaxCLIPOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(numpy.ndarray
of shape(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。默认情况下,如果提供填充,则将忽略填充。可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.
call
()。什么是输入 ID?
-
attention_mask
(numpy.ndarray
of shape(batch_size, sequence_length)
, 可选) — 避免在填充标记索引上执行注意力的掩码。掩码值选在[0, 1]
之间:-
1 代表
未被掩盖
的标记, -
0 代表
被掩盖
的标记。
什么是注意力掩码?
-
-
position_ids
(形状为(batch_size, sequence_length)
的numpy.ndarray
,可选)- 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。什么是位置 ID?
-
pixel_values
(形状为(batch_size, num_channels, height, width)
的numpy.ndarray
)- 像素值。默认情况下将忽略填充。可以使用 AutoImageProcessor 获取像素值。有关详细信息,请参见 CLIPImageProcessor.call
()。 -
output_attentions
(bool
,可选)- 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。 -
output_hidden_states
(bool
,可选)- 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。 -
return_dict
(bool
,可选)- 是否返回 ModelOutput 而不是普通元组。
返回
transformers.models.clip.modeling_flax_clip.FlaxCLIPOutput
或tuple(torch.FloatTensor)
transformers.models.clip.modeling_flax_clip.FlaxCLIPOutput
或一个torch.FloatTensor
元组(如果传递了return_dict=False
或config.return_dict=False
时)包含各种元素,取决于配置(<class 'transformers.models.clip.configuration_clip.CLIPConfig'>
)和输入。
-
logits_per_image:(jnp.ndarray
,形状为(image_batch_size, text_batch_size)
)-image_embeds
和text_embeds
之间的缩放点积分数。这代表图像-文本相似度分数。 -
logits_per_text:(jnp.ndarray
,形状为(text_batch_size, image_batch_size)
)-text_embeds
和image_embeds
之间的缩放点积分数。这代表文本-图像相似度分数。 -
text_embeds(jnp.ndarray
,形状为(batch_size, output_dim)
)- 通过将投影层应用于 FlaxCLIPTextModel 的汇聚输出获得的文本嵌入。 -
image_embeds(jnp.ndarray
,形状为(batch_size, output_dim)
)- 通过将投影层应用于 FlaxCLIPVisionModel 的汇聚输出获得的图像嵌入。 -
text_model_output(FlaxBaseModelOutputWithPooling):
FlaxCLIPTextModel 的输出。 -
vision_model_output(FlaxBaseModelOutputWithPooling):
FlaxCLIPVisionModel 的输出。
FlaxCLIPPreTrainedModel
的前向方法,覆盖__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
示例:
>>> import jax
>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, FlaxCLIPModel
>>> model = FlaxCLIPModel.from_pretrained("openai/clip-vit-base-patch32")
>>> processor = AutoProcessor.from_pretrained("openai/clip-vit-base-patch32")
>>> 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="np", padding=True
... )
>>> outputs = model(**inputs)
>>> logits_per_image = outputs.logits_per_image # this is the image-text similarity score
>>> probs = jax.nn.softmax(logits_per_image, axis=1) # we can take the softmax to get the label probabilities
get_text_features
( input_ids attention_mask = None position_ids = None params: dict = None dropout_rng: PRNGKey = None train = False ) → export const metadata = 'undefined';text_features (jnp.ndarray of shape (batch_size, output_dim)
参数
-
input_ids
(形状为(batch_size, sequence_length)
的numpy.ndarray
)- 词汇表中输入序列标记的索引。默认情况下将忽略填充。可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.
call
()。什么是输入 ID?
返回
文本特征(jnp.ndarray
,形状为(batch_size, output_dim)
)
通过将 FlaxCLIPTextModel 的池化输出应用于投影层获得的文本嵌入。
示例:
>>> from transformers import AutoTokenizer, FlaxCLIPModel
>>> model = FlaxCLIPModel.from_pretrained("openai/clip-vit-base-patch32")
>>> tokenizer = AutoTokenizer.from_pretrained("openai/clip-vit-base-patch32")
>>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="np")
>>> text_features = model.get_text_features(**inputs)
get_image_features
( pixel_values params: dict = None dropout_rng: PRNGKey = None train = False ) → export const metadata = 'undefined';image_features (jnp.ndarray of shape (batch_size, output_dim)
参数
pixel_values
(形状为(batch_size, num_channels, height, width)
的numpy.ndarray
)— 像素值。默认情况下将忽略填充。可以使用 AutoImageProcessor 获取像素值。有关详细信息,请参阅 CLIPImageProcessor.call
()。
返回
图像特征(jnp.ndarray
,形状为(batch_size, output_dim)
)
通过将 FlaxCLIPVisionModel 的池化输出应用于投影层获得的图像嵌入
示例:
>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, FlaxCLIPModel
>>> model = FlaxCLIPModel.from_pretrained("openai/clip-vit-base-patch32")
>>> processor = AutoProcessor.from_pretrained("openai/clip-vit-base-patch32")
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> inputs = processor(images=image, return_tensors="np")
>>> image_features = model.get_image_features(**inputs)
FlaxCLIPTextModel
class transformers.FlaxCLIPTextModel
( config: CLIPTextConfig input_shape = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True **kwargs )
__call__
( input_ids attention_mask = None position_ids = None params: dict = None dropout_rng: PRNGKey = None train: bool = False output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPooling or tuple(torch.FloatTensor)
参数
-
input_ids
(形状为(batch_size, sequence_length)
的numpy.ndarray
)— 词汇表中输入序列标记的索引。默认情况下将忽略填充。可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.
call
()。什么是输入 ID?
-
attention_mask
(形状为(batch_size, sequence_length)
的numpy.ndarray
,可选)— 避免在填充标记索引上执行注意力的掩码。选择的掩码值为[0, 1]
:-
对于
未被掩盖
的标记为 1, -
0 表示
被掩盖
的标记。
什么是注意力掩码?
-
-
position_ids
(形状为(batch_size, sequence_length)
的numpy.ndarray
,可选)— 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。什么是位置 ID?
-
output_attentions
(bool
,可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。 -
output_hidden_states
(bool
,可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。 -
return_dict
(bool
,可选)— 是否返回 ModelOutput 而不是普通元组。
返回
transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPooling 或 tuple(torch.FloatTensor)
一个 transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPooling 或一个torch.FloatTensor
元组(如果传递了return_dict=False
或config.return_dict=False
时)包含根据配置(<class 'transformers.models.clip.configuration_clip.CLIPTextConfig'>
)和输入不同元素。
-
last_hidden_state
(形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
)— 模型最后一层的隐藏状态序列输出。 -
pooler_output
(形状为(batch_size, hidden_size)
的jnp.ndarray
)— 序列第一个标记(分类标记)的最后一层隐藏状态,经过线性层和 Tanh 激活函数进一步处理。线性层的权重是在预训练期间从下一个句子预测(分类)目标中训练的。 -
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 之后的注意力权重,用于计算自注意力头中的加权平均值。
FlaxCLIPTextPreTrainedModel
的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoTokenizer, FlaxCLIPTextModel
>>> model = FlaxCLIPTextModel.from_pretrained("openai/clip-vit-base-patch32")
>>> tokenizer = AutoTokenizer.from_pretrained("openai/clip-vit-base-patch32")
>>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="np")
>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> pooler_output = outputs.pooler_output # pooled (EOS token) states
FlaxCLIPTextModelWithProjection
class transformers.FlaxCLIPTextModelWithProjection
( config: CLIPTextConfig input_shape = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True **kwargs )
__call__
( input_ids attention_mask = None position_ids = None params: dict = None dropout_rng: PRNGKey = None train: bool = False output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.clip.modeling_flax_clip.FlaxCLIPTextModelOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(形状为(batch_size, sequence_length)
的numpy.ndarray
)— 词汇表中输入序列标记的索引。默认情况下将忽略填充。可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.
call
()。什么是输入 ID?
-
attention_mask
(形状为(batch_size, sequence_length)
的numpy.ndarray
,可选)— 用于避免在填充标记索引上执行注意力的掩码。选择在[0, 1]
范围内的掩码值:-
1 表示
未被掩码
的标记, -
0 表示
被掩码
的标记。
什么是注意力掩码?
-
-
position_ids
(形状为(batch_size, sequence_length)
的numpy.ndarray
,可选)— 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。什么是位置 ID?
-
output_attentions
(可选,bool
)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量中的attentions
。 -
output_hidden_states
(可选,bool
)— 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states
。 -
return_dict
(bool
, 可选) — 是否返回 ModelOutput 而不是普通元组。
返回
transformers.models.clip.modeling_flax_clip.FlaxCLIPTextModelOutput
或tuple(torch.FloatTensor)
一个transformers.models.clip.modeling_flax_clip.FlaxCLIPTextModelOutput
或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
)包含根据配置(<class 'transformers.models.clip.configuration_clip.CLIPTextConfig'>
)和输入的各种元素。
-
text_embeds
(形状为(batch_size, output_dim)的 jnp.ndarray
) — 通过将投影层应用于 FlaxCLIPTextModel 的池化输出获得的文本嵌入。 -
last_hidden_state
(形状为(batch_size, sequence_length, hidden_size)的 jnp.ndarray
) — 模型最后一层的隐藏状态序列。 -
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 之后,用于计算自注意力头中的加权平均值。
FlaxCLIPTextPreTrainedModel
的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会处理运行前后处理步骤,而后者会默默忽略它们。
示例:
>>> from transformers import AutoTokenizer, FlaxCLIPTextModelWithProjection
>>> model = FlaxCLIPTextModelWithProjection.from_pretrained("openai/clip-vit-base-patch32")
>>> tokenizer = AutoTokenizer.from_pretrained("openai/clip-vit-base-patch32")
>>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="np")
>>> outputs = model(**inputs)
>>> text_embeds = outputs.text_embeds
FlaxCLIPVisionModel
class transformers.FlaxCLIPVisionModel
( config: CLIPVisionConfig input_shape: Optional = None seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True **kwargs )
__call__
( pixel_values params: dict = None dropout_rng: PRNGKey = None train: bool = False output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPooling or tuple(torch.FloatTensor)
参数
-
pixel_values
(形状为(batch_size, num_channels, height, width)的 numpy.ndarray
) — 像素值。默认情况下将忽略填充。可以使用 AutoImageProcessor 获取像素值。有关详细信息,请参阅 CLIPImageProcessor.call
()。 -
output_attentions
(bool
, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。 -
output_hidden_states
(bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。 -
return_dict
(bool
, 可选) — 是否返回 ModelOutput 而不是普通元组。
返回
transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPooling 或 tuple(torch.FloatTensor)
一个 transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPooling 或一个 torch.FloatTensor
元组(如果传递了 return_dict=False
或当 config.return_dict=False
时)包括根据配置(<class 'transformers.models.clip.configuration_clip.CLIPVisionConfig'>
)和输入的不同元素。
-
last_hidden_state
(形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
)- 模型最后一层的隐藏状态序列。 -
pooler_output
(形状为(batch_size, hidden_size)
的jnp.ndarray
)- 序列第一个标记(分类标记)的最后一层隐藏状态,经过线性层和 Tanh 激活函数进一步处理。线性层权重是在预训练期间从下一个句子预测(分类)目标中训练的。 -
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 之后,用于计算自注意力头中的加权平均值。
FlaxCLIPVisionPreTrainedModel
的前向方法,覆盖了 __call__
特殊方法。
尽管前向传递的方法需要在此函数内定义,但应该在此之后调用 Module
实例,而不是这个,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
示例:
>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, FlaxCLIPVisionModel
>>> model = FlaxCLIPVisionModel.from_pretrained("openai/clip-vit-base-patch32")
>>> processor = AutoProcessor.from_pretrained("openai/clip-vit-base-patch32")
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> inputs = processor(images=image, return_tensors="np")
>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> pooler_output = outputs.pooler_output # pooled CLS states
CLIPSeg
原始文本:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/clipseg
概述
CLIPSeg 模型是由 Timo Lüddecke 和 Alexander Ecker 在使用文本和图像提示进行图像分割中提出的。CLIPSeg 在冻结的 CLIP 模型之上添加了一个最小的解码器,用于零样本和一样本图像分割。
论文摘要如下:
图像分割通常通过训练一个固定对象类别的模型来解决。随后合并额外类别或更复杂查询是昂贵的,因为需要在包含这些表达的数据集上重新训练模型。在这里,我们提出了一个系统,可以根据测试时的任意提示生成图像分割。提示可以是文本或图像。这种方法使我们能够为三种常见的分割任务创建一个统一的模型(仅训练一次),这些任务具有不同的挑战:指代表达分割、零样本分割和一样本分割。我们基于 CLIP 模型作为骨干,扩展了一个基于 transformer 的解码器,实现了密集预测。在扩展的 PhraseCut 数据集上训练后,我们的系统可以根据自由文本提示或表达查询的附加图像为图像生成二进制分割图。我们详细分析了不同变体的基于图像的提示。这种新颖的混合输入不仅可以动态适应上述三种分割任务,还可以适应任何可以制定文本或图像查询的二进制分割任务。最后,我们发现我们的系统能够很好地适应涉及功能或属性的广义查询
CLIPSeg 概述。取自原始论文。
使用提示
-
CLIPSegForImageSegmentation 在 CLIPSegModel 之上添加了一个解码器。后者与 CLIPModel 相同。
-
CLIPSegForImageSegmentation 可以根据测试时的任意提示生成图像分割。提示可以是文本(作为
input_ids
提供给模型)或图像(作为conditional_pixel_values
提供给模型)。还可以提供自定义的条件嵌入(作为conditional_embeddings
提供给模型)。
资源
列出了官方 Hugging Face 和社区(由🌎表示)的资源,以帮助您开始使用 CLIPSeg。如果您有兴趣提交资源以包含在此处,请随时打开一个 Pull Request,我们将进行审查!资源应该展示一些新东西,而不是重复现有资源。
图像分割
CLIPSegConfig
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(或派生类)。
CLIPSegTextConfig
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
orfunction
, 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
CLIPSegVisionConfig
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
orfunction
, 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
CLIPSegProcessor
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()。请参考此方法的文档字符串以获取更多信息。
CLIPSegModel
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]
之间:-
对于未被掩盖的标记为 1,
-
对于被掩盖的标记为 0。
什么是注意力掩码?
-
-
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)
CLIPSegTextModel
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
CLIPSegVisionModel
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
CLIPSegForImageSegmentation
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]
中的掩码值:-
1 表示未被
masked
的标记。 -
0 表示被
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])
CLVP
原始文本:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/clvp
概述
CLVP(对比语言-声音预训练变压器)模型由 James Betker 在通过缩放实现更好的语音合成中提出。
论文摘要如下:
近年来,图像生成领域已经通过自回归变压器和 DDPMs 的应用而发生了革命。这些方法将图像生成过程建模为逐步的概率过程,并利用大量计算和数据来学习图像分布。提高性能的这种方法不一定局限于图像。本文描述了一种将图像生成领域的进展应用于语音合成的方法。结果是 TorToise - 一种富有表现力的、多声音的文本到语音系统。
该模型由Susnato Dhar贡献。原始代码可在此处找到。
使用提示
-
CLVP 是 Tortoise TTS 模型的一个重要部分。
-
CLVP 可用于将不同生成的语音候选与提供的文本进行比较,并将最佳语音标记转发到扩散模型。
-
强烈建议使用
ClvpModelForConditionalGeneration.generate()
方法进行龟速使用。 -
请注意,CLVP 模型期望音频采样率为 22.05 kHz,而其他音频模型期望为 16 kHz。
简要说明:
-
ClvpTokenizer 对文本输入进行标记化处理,而 ClvpFeatureExtractor 从所需音频中提取对数梅尔频谱图。
-
ClvpConditioningEncoder
获取这些文本标记和音频表示,并将它们转换为在文本和音频上进行条件化的嵌入。 -
ClvpForCausalLM 使用这些嵌入来生成多个语音候选。
-
每个语音候选通过语音编码器(ClvpEncoder)传递,将它们转换为矢量表示,文本编码器(ClvpEncoder)将文本标记转换为相同的潜在空间。
-
最后,我们将每个语音向量与文本向量进行比较,以查看哪个语音向量与文本向量最相似。
-
ClvpModelForConditionalGeneration.generate()
将上述所有逻辑压缩为一个方法。
示例:
>>> import datasets
>>> from transformers import ClvpProcessor, ClvpModelForConditionalGeneration
>>> # Define the Text and Load the Audio (We are taking an audio example from HuggingFace Hub using `datasets` library).
>>> text = "This is an example text."
>>> ds = datasets.load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> ds = ds.cast_column("audio", datasets.Audio(sampling_rate=22050))
>>> sample = ds[0]["audio"]
>>> # Define processor and model.
>>> processor = ClvpProcessor.from_pretrained("susnato/clvp_dev")
>>> model = ClvpModelForConditionalGeneration.from_pretrained("susnato/clvp_dev")
>>> # Generate processor output and model output.
>>> processor_output = processor(raw_speech=sample["array"], sampling_rate=sample["sampling_rate"], text=text, return_tensors="pt")
>>> generated_output = model.generate(**processor_output)
ClvpConfig
class transformers.ClvpConfig
( text_config = None speech_config = None decoder_config = None projection_dim = 768 logit_scale_init_value = 2.6592 initializer_factor = 1.0 **kwargs )
参数
-
text_config
(dict
, 可选) — 用于初始化 CLVP 文本编码器的配置选项字典。 -
speech_config
(dict
, 可选) — 用于初始化 CLVP 语音编码器的配置选项字典。 -
decoder_config
(dict
, 可选) — 用于初始化 ClvpDecoderConfig 的配置选项字典。 -
projection_dim
(int
, 可选, 默认为 768) — 文本和语音投影层的维度。 -
logit_scale_init_value
(float
, 可选, 默认为 2.6592) — logit_scale参数的初始值。默认值根据原始 CLVP 实现使用。 -
initializer_factor
(float
, 可选, 默认为 1.0) — 用于初始化所有权重矩阵的因子(应保持为 1.0,用于内部初始化测试)。 -
kwargs
(可选) — 关键字参数字典。
ClvpConfig 是用于存储 ClvpModelForConditionalGeneration 配置的类。它用于根据指定的参数实例化 CLVP 模型,定义文本模型、语音模型和解码器模型配置。使用默认值实例化配置将产生类似于 CLVP susnato/clvp_dev 架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读来自 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import ClvpConfig, ClvpModelForConditionalGeneration
>>> # Initializing a ClvpConfig with susnato/clvp_dev style configuration
>>> configuration = ClvpConfig()
>>> # Initializing a ClvpModelForConditionalGeneration (with random weights) from the susnato/clvp_dev style configuration
>>> model = ClvpModelForConditionalGeneration(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
>>> # We can also initialize a CLVPConfig from a CLVPTextConfig, CLVPSpeechConfig and a CLVPAutoRegressiveConfig
>>> from transformers import ClvpEncoderConfig, ClvpDecoderConfig
>>> # Initializing a CLVP text, CLVP speech and CLVP decoder configuration
>>> config_text = ClvpEncoderConfig()
>>> config_speech = ClvpEncoderConfig()
>>> decoder_config = ClvpDecoderConfig()
>>> config = ClvpConfig.from_sub_model_configs(config_text, config_speech, decoder_config)
from_sub_model_configs
( text_config: ClvpEncoderConfig speech_config: ClvpEncoderConfig decoder_config: ClvpDecoderConfig **kwargs ) → export const metadata = 'undefined';ClvpConfig
参数
-
text_config
(ClvpEncoderConfig
) — 类型为 ClvpEncoderConfig 的文本模型配置。 -
speech_config
(ClvpEncoderConfig
) — 类型为 ClvpEncoderConfig 的语音模型配置。 -
decoder_config
(ClvpDecoderConfig
) — 类型为 ClvpDecoderConfig 的解码器模型配置。
返回
ClvpConfig
配置对象的一个实例
从 CLVP 文本模型配置、CLVP 语音模型配置和 CLVP 解码器模型配置实例化一个 ClvpConfig(或派生类)。
ClvpEncoderConfig
class transformers.ClvpEncoderConfig
( vocab_size = 256 hidden_size = 768 intermediate_size = 1536 projection_dim = 768 num_hidden_layers = 20 num_attention_heads = 12 hidden_act = 'gelu' layer_norm_eps = 1e-05 attention_dropout = 0.1 dropout = 0.1 use_rotary_embedding = True use_attention_bias = False summary_type = 'mean' initializer_factor = 1.0 bos_token_id = 255 eos_token_id = 0 **kwargs )
参数
-
vocab_size
(int
, 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
orfunction
, 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 toTrue
) — 是否使用旋转嵌入。 -
use_attention_bias
(bool
, optional, defaults toFalse
) — 在自注意力期间是否使用 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
ClvpDecoderConfig
class transformers.ClvpDecoderConfig
( vocab_size = 8194 max_position_embeddings = 608 max_text_tokens = 404 hidden_size = 1024 num_hidden_layers = 30 num_attention_heads = 16 n_inner = None num_mel_attn_blocks = 6 activation_function = 'gelu_new' resid_pdrop = 0.1 embd_pdrop = 0.1 attention_dropout = 0.1 layer_norm_epsilon = 1e-05 initializer_range = 0.02 summary_type = 'cls_index' summary_use_proj = True summary_activation = None summary_proj_to_labels = True summary_first_dropout = 0.1 use_cache = True bos_token_id = 8192 eos_token_id = 8193 feature_size = 80 use_attention_bias = True initializer_factor = 1.0 decoder_fixing_codes = [83, 45, 45, 248] **kwargs )
参数
-
vocab_size
(int
, 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
ClvpTokenizer
class transformers.ClvpTokenizer
( vocab_file merges_file errors = 'replace' unk_token = '[UNK]' bos_token = '<|endoftext|>' eos_token = '[STOP]' pad_token = '[STOP]' add_prefix_space = False add_bos_token = False add_eos_token = False **kwargs )
参数
-
vocab_file
(str
) — 词汇文件的路径。 -
merges_file
(str
) — 合并文件的路径。 -
errors
(str
, 可选, 默认为"replace"
) — 解码字节为 UTF-8 时要遵循的范例。更多信息请参考 bytes.decode。 -
unk_token
(str
, 可选, 默认为"[UNK]"
) — 未知标记。词汇表中没有的标记无法转换为 ID,而是设置为此标记。 -
bos_token
(str
,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 )
ClvpFeatureExtractor
class transformers.ClvpFeatureExtractor
( feature_size = 80 sampling_rate = 22050 default_audio_length = 6 hop_length = 256 chunk_length = 30 n_fft = 1024 padding_value = 0.0 mel_norms = None return_attention_mask = False **kwargs )
参数
-
feature_size
(int
,可选,默认为 80)— 提取特征的特征维度。 -
sampling_rate
(int
,可选,默认为 22050)— 音频文件应数字化的采样率,以赫兹(Hz)表示。 -
default_audio_length
(int
,可选,默认为 6)— 原始音频的默认长度(以秒为单位)。如果在__call__
中未设置max_length
,则将自动设置为 default_audio_length *self.sampling_rate
。 -
hop_length
(int
,可选,默认为 256)— 用于获取梅尔频率系数的 STFT 中的重叠窗口的长度。 -
chunk_length
(int
,可选,默认为 30)— 用于修剪和填充较长或较短音频序列的sampling_rate
个样本块的最大数量。 -
n_fft
(int
,可选,默认为 1024)— 傅立叶变换的大小。 -
padding_value
(float
,可选,默认为 0.0)— 用于填充音频的填充值。应对应于静音。 -
mel_norms
(长度为feature_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'
: 返回 TensorFlowtf.constant
对象。 -
'pt'
: 返回 PyTorchtorch.Tensor
对象。 -
'np'
: 返回 Numpynp.ndarray
对象。
-
-
padding_value
(float
,默认为 0.0) — 用于填充填充值/向量的值。 -
max_length
(int
,可选) — 输入的最大长度。
ClvpFeatureExtractor
用于从样本声音或 raw_speech
中提取各种声音特定属性,如声音的音高和音调、说话速度,甚至说话缺陷,如口吃或结巴。
首先,声音被填充或截断,使其成为 self.default_audio_length
秒长的波形,然后从中提取对数梅尔频谱图。
ClvpProcessor
class transformers.ClvpProcessor
( feature_extractor tokenizer )
参数
-
feature_extractor
(ClvpFeatureExtractor
) — ClvpFeatureExtractor 的一个实例。特征提取器是必需的输入。 -
tokenizer
(ClvpTokenizer
) — ClvpTokenizer 的一个实例。分词器是必需的输入。
构建一个 CLVP 处理器,将 CLVP 特征提取器和 CLVP 分词器封装成一个单一处理器。
ClvpProcessor 提供了 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()。有关更多信息,请参阅此方法的文档字符串。
ClvpModelForConditionalGeneration
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]
中:-
对于未被“掩码”的标记为 1,
-
对于被“掩码”的标记为 0。
什么是注意力掩码?
-
-
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]
之间:-
1 表示
未被掩码
的标记, -
0 表示
被掩码
的标记。
什么是注意力掩码?
-
返回
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"]
... )
ClvpForCausalLM
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]
中:-
0 对应于句子 A标记,
-
1 对应于句子 B标记。
什么是标记类型 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]
中:-
1 表示头部是
not masked
, -
0 表示头部是
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
实例,而不是前者,因为前者负责运行前处理和后处理步骤,而后者会默默地忽略它们。
ClvpModel
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]
中:-
1 表示未被
屏蔽
的标记, -
0 表示被
屏蔽
的标记。
如果使用了
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]
中:-
0 对应于句子 A的标记,
-
1 对应于句子 B的标记。
什么是标记类型 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]
中:-
1 表示头部是
未屏蔽
, -
0 表示头部是
屏蔽
。
-
-
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
实例,而不是在此处调用,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
Clvp 编码器
类 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 而不是普通元组。
Clvp 解码器
类 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]
中:-
1 表示未被
掩码
的标记, -
0 表示被
掩码
的标记。
如果使用了
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]
中:-
0 对应于句子 A标记,
-
1 对应于句子 B标记。
什么是标记类型 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]
中:-
1 表示头部未被
掩码
, -
0 表示头部被
掩码
。
-
-
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
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
Data2Vec
原始文本:
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 和语音)可以在这里找到。视觉的原始代码可以在这里找到。
使用提示
-
Data2VecAudio、Data2VecText 和 Data2VecVision 都是使用相同的自监督学习方法进行训练的。
-
对于 Data2VecAudio,预处理与 Wav2Vec2Model 相同,包括特征提取。
-
对于 Data2VecText,预处理与 RobertaModel 相同,包括标记化。
-
对于 Data2VecVision,预处理与 BeitModel 相同,包括特征提取。
资源
官方 Hugging Face 和社区(由🌎表示)资源列表,帮助您开始使用 Data2Vec。
图像分类
-
要在自定义数据集上微调 TFData2VecVisionForImageClassification,请参阅此笔记本。
Data2VecText 文档资源
-
文本分类任务指南
-
标记分类任务指南
-
问答任务指南
-
因果语言建模任务指南
-
掩码语言建模任务指南
-
多项选择任务指南
Data2VecAudio 文档资源
-
音频分类任务指南
-
自动语音识别任务指南
Data2VecVision 文档资源
-
图像分类
-
语义分割
如果您有兴趣提交资源以包含在此处,请随时打开一个 Pull Request,我们将对其进行审查!资源应该展示一些新内容,而不是重复现有资源。
Data2VecTextConfig
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
Data2VecAudioConfig
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
orfunction
, 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]
orList[int]
, optional, defaults to(512, 512, 512, 512, 512, 512, 512)
) — 定义特征编码器中每个 1D 卷积层的输入和输出通道数的整数元组。conv_dim的长度定义了 1D 卷积层的数量。 -
conv_stride
(Tuple[int]
orList[int]
, optional, defaults to(5, 2, 2, 2, 2, 2, 2)
) — 定义特征编码器中每个 1D 卷积层的步幅的整数元组。conv_stride的长度定义了卷积层的数量,并且必须与conv_dim的长度匹配。 -
conv_kernel
(Tuple[int]
orList[int]
, optional, defaults to(10, 3, 3, 3, 3, 3, 3)
) — 定义特征编码器中每个 1D 卷积层的内核大小的整数元组。conv_kernel的长度定义了卷积层的数量,并且必须与conv_dim的长度匹配。 -
conv_bias
(bool
, optional, defaults toFalse
) — 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 toFalse
) — 是否将torch.nn.CTCLoss
的无限损失和相关梯度置零。当输入太短无法与目标对齐时,主要会出现无限损失。仅在训练 Data2VecAudioForCTC 实例时相关。 -
use_weighted_layer_sum
(bool
, optional, defaults toFalse
) — 是否使用带有学习权重的层输出的加权平均。仅在使用 Data2VecAudioForSequenceClassification 实例时相关。 -
classifier_proj_size
(int
, optional, defaults to 256) — 分类前的投影维度,用于标记均值池化。 -
tdnn_dim
(Tuple[int]
orList[int]
, optional, defaults to(512, 512, 512, 512, 1500)
) — 一个整数元组,定义XVector模型中TDNN模块中每个 1D 卷积层的输出通道数。tdnn_dim的长度定义了TDNN层数。 -
tdnn_kernel
(Tuple[int]
orList[int]
, optional, defaults to(5, 3, 3, 1, 1)
) — 一个整数元组,定义XVector模型中TDNN模块中每个 1D 卷积层的核大小。tdnn_kernel的长度必须与tdnn_dim的长度相匹配。 -
tdnn_dilation
(Tuple[int]
orList[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 toFalse
) — 是否在 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
Data2VecVisionConfig
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
orfunction
, 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 toFalse
) — 是否在掩蔽图像建模中使用掩蔽标记。 -
use_absolute_position_embeddings
(bool
, optional, defaults toFalse
) — 是否使用类似 BERT 的绝对位置嵌入。 -
use_relative_position_bias
(bool
, optional, defaults toFalse
) — 是否在自注意力层中使用 T5 风格的相对位置嵌入。 -
use_shared_relative_position_bias
(bool
, optional, defaults toFalse
) — 是否在 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 toTrue
) — 是否对补丁的最终隐藏状态进行平均池化,而不是使用 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 toTrue
) — 是否在训练期间使用辅助头。 -
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 toFalse
) — 是否在分类层之前将辅助头的输出与输入连接起来。 -
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 内容
Data2VecAudioModel
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]
范围内:-
1 表示
未被掩码
的令牌, -
0 表示
被掩码
的令牌。
什么是注意力掩码?
如果相应的处理器具有
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]
Data2VecAudioForAudioFrameClassification
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()
Data2VecAudioForCTC
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]
之间:-
1 用于
未被掩码
的标记, -
0 用于
被掩码
的标记。
什么是注意力掩码?
如果相应的处理器具有
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
Data2VecAudioForSequenceClassification
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)
参数
DePlot
原文:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/deplot
概述
DePlot 是由 Fangyu Liu, Julian Martin Eisenschlos, Francesco Piccinno, Syrine Krichene, Chenxi Pang, Kenton Lee, Mandar Joshi, Wenhu Chen, Nigel Collier, Yasemin Altun 在论文DePlot: One-shot visual language reasoning by plot-to-table translation中提出的。
该论文的摘要如下:
图表等视觉语言在人类世界中无处不在。理解图表和图表需要强大的推理能力。先前的最先进(SOTA)模型至少需要数万个训练示例,它们的推理能力仍然非常有限,特别是对于复杂的人类编写的查询。本文提出了视觉语言推理的第一个一次性解决方案。我们将视觉语言推理的挑战分解为两个步骤:(1)图表到文本的翻译,以及(2)对翻译文本进行推理。该方法的关键是一个名为 DePlot 的模态转换模块,它将图表或图表的图像转换为线性化表格。然后可以直接使用 DePlot 的输出来提示预训练的大型语言模型(LLM),利用 LLM 的少量推理能力。为了获得 DePlot,我们通过建立统一的任务格式和度量标准,对绘图到表格任务进行了标准化,并在此任务上端到端地训练 DePlot。然后可以将 DePlot 与 LLM 一起以即插即用的方式使用。与在超过 28k 数据点上微调的 SOTA 模型相比,DePlot+LLM 仅通过一次提示就实现了对人类编写查询的图表 QA 任务的微调 SOTA 的 24.0%的改进。
DePlot 是使用Pix2Struct
架构训练的模型。您可以在Pix2Struct 文档中找到有关Pix2Struct
的更多信息。DePlot 是Pix2Struct
架构的视觉问答子集。它在图像上呈现输入问题并预测答案。
使用示例
目前 DePlot 有一个检查点可用:
google/deplot
:在 ChartQA 数据集上微调的 DePlot
from transformers import AutoProcessor, Pix2StructForConditionalGeneration
import requests
from PIL import Image
model = Pix2StructForConditionalGeneration.from_pretrained("google/deplot")
processor = AutoProcessor.from_pretrained("google/deplot")
url = "https://raw.githubusercontent.com/vis-nlp/ChartQA/main/ChartQA%20Dataset/val/png/5090.png"
image = Image.open(requests.get(url, stream=True).raw)
inputs = processor(images=image, text="Generate underlying data table of the figure below:", return_tensors="pt")
predictions = model.generate(**inputs, max_new_tokens=512)
print(processor.decode(predictions[0], skip_special_tokens=True))
微调
要微调 DePlot,请参考 pix2struct 的fine-tuning 笔记本。对于Pix2Struct
模型,我们发现使用 Adafactor 和余弦学习率调度程序对模型进行微调可以实现更快的收敛:
from transformers.optimization import Adafactor, get_cosine_schedule_with_warmup
optimizer = Adafactor(self.parameters(), scale_parameter=False, relative_step=False, lr=0.01, weight_decay=1e-05)
scheduler = get_cosine_schedule_with_warmup(optimizer, num_warmup_steps=1000, num_training_steps=40000)
DePlot 是使用Pix2Struct
架构训练的模型。有关 API 参考,请参阅Pix2Struct
文档。
Donut
原文链接:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/donut
概述
Donut 模型是由 Geewook Kim、Teakgyu Hong、Moonbin Yim、Jeongyeon Nam、Jinyoung Park、Jinyeong Yim、Wonseok Hwang、Sangdoo Yun、Dongyoon Han、Seunghyun Park 提出的,用于执行文档理解任务,如文档图像分类、表单理解和视觉问答的图像变压器编码器和自回归文本变压器解码器。
该论文的摘要如下:
理解文档图像(例如发票)是一项核心但具有挑战性的任务,因为它需要复杂的功能,如阅读文本和对文档的整体理解。当前的视觉文档理解(VDU)方法将阅读文本的任务外包给现成的光学字符识别(OCR)引擎,并专注于使用 OCR 输出进行理解任务。尽管这种基于 OCR 的方法表现出有希望的性能,但它们存在以下问题:1)使用 OCR 的计算成本高;2)OCR 模型在语言或文档类型上的不灵活性;3)OCR 错误传播到后续过程。为了解决这些问题,在本文中,我们介绍了一种名为 Donut 的新型无 OCR VDU 模型,代表文档理解变压器。作为无 OCR VDU 研究的第一步,我们提出了一个简单的架构(即变压器)和一个预训练目标(即交叉熵损失)。Donut 在概念上简单而有效。通过大量实验和分析,我们展示了一个简单的无 OCR VDU 模型 Donut,在速度和准确性方面在各种 VDU 任务上取得了最先进的性能。此外,我们提供了一个合成数据生成器,帮助模型在各种语言和领域中进行灵活的预训练。
Donut 高层概述。摘自原始论文。
使用提示
-
开始使用 Donut 的最快方法是查看教程笔记本,展示了如何在推理时使用模型以及在自定义数据上进行微调。
-
Donut 始终在 VisionEncoderDecoder 框架内使用。
推理示例
Donut 的VisionEncoderDecoder
模型接受图像作为输入,并利用 generate()来自动生成给定输入图像的文本。
DonutImageProcessor 类负责预处理输入图像,[XLMRobertaTokenizer
/XLMRobertaTokenizerFast
]解码生成的目标标记为目标字符串。DonutProcessor 将 DonutImageProcessor 和[XLMRobertaTokenizer
/XLMRobertaTokenizerFast
]包装成一个单一实例,既提取输入特征又解码预测的标记 ID。
- 逐步文档图像分类
>>> import re
>>> from transformers import DonutProcessor, VisionEncoderDecoderModel
>>> from datasets import load_dataset
>>> import torch
>>> processor = DonutProcessor.from_pretrained("naver-clova-ix/donut-base-finetuned-rvlcdip")
>>> model = VisionEncoderDecoderModel.from_pretrained("naver-clova-ix/donut-base-finetuned-rvlcdip")
>>> device = "cuda" if torch.cuda.is_available() else "cpu"
>>> model.to(device)
>>> # load document image
>>> dataset = load_dataset("hf-internal-testing/example-documents", split="test")
>>> image = dataset[1]["image"]
>>> # prepare decoder inputs
>>> task_prompt = "<s_rvlcdip>"
>>> decoder_input_ids = processor.tokenizer(task_prompt, add_special_tokens=False, return_tensors="pt").input_ids
>>> pixel_values = processor(image, return_tensors="pt").pixel_values
>>> outputs = model.generate(
... pixel_values.to(device),
... decoder_input_ids=decoder_input_ids.to(device),
... max_length=model.decoder.config.max_position_embeddings,
... pad_token_id=processor.tokenizer.pad_token_id,
... eos_token_id=processor.tokenizer.eos_token_id,
... use_cache=True,
... bad_words_ids=[[processor.tokenizer.unk_token_id]],
... return_dict_in_generate=True,
... )
>>> sequence = processor.batch_decode(outputs.sequences)[0]
>>> sequence = sequence.replace(processor.tokenizer.eos_token, "").replace(processor.tokenizer.pad_token, "")
>>> sequence = re.sub(r"<.*?>", "", sequence, count=1).strip() # remove first task start token
>>> print(processor.token2json(sequence))
{'class': 'advertisement'}
- 逐步文档解析
>>> import re
>>> from transformers import DonutProcessor, VisionEncoderDecoderModel
>>> from datasets import load_dataset
>>> import torch
>>> processor = DonutProcessor.from_pretrained("naver-clova-ix/donut-base-finetuned-cord-v2")
>>> model = VisionEncoderDecoderModel.from_pretrained("naver-clova-ix/donut-base-finetuned-cord-v2")
>>> device = "cuda" if torch.cuda.is_available() else "cpu"
>>> model.to(device)
>>> # load document image
>>> dataset = load_dataset("hf-internal-testing/example-documents", split="test")
>>> image = dataset[2]["image"]
>>> # prepare decoder inputs
>>> task_prompt = "<s_cord-v2>"
>>> decoder_input_ids = processor.tokenizer(task_prompt, add_special_tokens=False, return_tensors="pt").input_ids
>>> pixel_values = processor(image, return_tensors="pt").pixel_values
>>> outputs = model.generate(
... pixel_values.to(device),
... decoder_input_ids=decoder_input_ids.to(device),
... max_length=model.decoder.config.max_position_embeddings,
... pad_token_id=processor.tokenizer.pad_token_id,
... eos_token_id=processor.tokenizer.eos_token_id,
... use_cache=True,
... bad_words_ids=[[processor.tokenizer.unk_token_id]],
... return_dict_in_generate=True,
... )
>>> sequence = processor.batch_decode(outputs.sequences)[0]
>>> sequence = sequence.replace(processor.tokenizer.eos_token, "").replace(processor.tokenizer.pad_token, "")
>>> sequence = re.sub(r"<.*?>", "", sequence, count=1).strip() # remove first task start token
>>> print(processor.token2json(sequence))
{'menu': {'nm': 'CINNAMON SUGAR', 'unitprice': '17,000', 'cnt': '1 x', 'price': '17,000'}, 'sub_total': {'subtotal_price': '17,000'}, 'total': {'total_price': '17,000', 'cashprice': '20,000', 'changeprice': '3,000'}}
- 逐步文档视觉问答(DocVQA)
>>> import re
>>> from transformers import DonutProcessor, VisionEncoderDecoderModel
>>> from datasets import load_dataset
>>> import torch
>>> processor = DonutProcessor.from_pretrained("naver-clova-ix/donut-base-finetuned-docvqa")
>>> model = VisionEncoderDecoderModel.from_pretrained("naver-clova-ix/donut-base-finetuned-docvqa")
>>> device = "cuda" if torch.cuda.is_available() else "cpu"
>>> model.to(device)
>>> # load document image from the DocVQA dataset
>>> dataset = load_dataset("hf-internal-testing/example-documents", split="test")
>>> image = dataset[0]["image"]
>>> # prepare decoder inputs
>>> task_prompt = "<s_docvqa><s_question>{user_input}</s_question><s_answer>"
>>> question = "When is the coffee break?"
>>> prompt = task_prompt.replace("{user_input}", question)
>>> decoder_input_ids = processor.tokenizer(prompt, add_special_tokens=False, return_tensors="pt").input_ids
>>> pixel_values = processor(image, return_tensors="pt").pixel_values
>>> outputs = model.generate(
... pixel_values.to(device),
... decoder_input_ids=decoder_input_ids.to(device),
... max_length=model.decoder.config.max_position_embeddings,
... pad_token_id=processor.tokenizer.pad_token_id,
... eos_token_id=processor.tokenizer.eos_token_id,
... use_cache=True,
... bad_words_ids=[[processor.tokenizer.unk_token_id]],
... return_dict_in_generate=True,
... )
>>> sequence = processor.batch_decode(outputs.sequences)[0]
>>> sequence = sequence.replace(processor.tokenizer.eos_token, "").replace(processor.tokenizer.pad_token, "")
>>> sequence = re.sub(r"<.*?>", "", sequence, count=1).strip() # remove first task start token
>>> print(processor.token2json(sequence))
{'question': 'When is the coffee break?', 'answer': '11-14 to 11:39 a.m.'}
查看model hub以查找 Donut 检查点。
训练
请参阅教程笔记本。
DonutSwinConfig
class transformers.DonutSwinConfig
( image_size = 224 patch_size = 4 num_channels = 3 embed_dim = 96 depths = [2, 2, 6, 2] num_heads = [3, 6, 12, 24] window_size = 7 mlp_ratio = 4.0 qkv_bias = True hidden_dropout_prob = 0.0 attention_probs_dropout_prob = 0.0 drop_path_rate = 0.1 hidden_act = 'gelu' use_absolute_embeddings = False initializer_range = 0.02 layer_norm_eps = 1e-05 **kwargs )
参数
-
image_size
(int
, optional, defaults to 224) — 每个图像的大小(分辨率)。 -
patch_size
(int
, optional, defaults to 4) — 每个补丁的大小(分辨率)。 -
num_channels
(int
, optional, defaults to 3) — 输入通道数。 -
embed_dim
(int
, optional, defaults to 96) — 补丁嵌入的维度。 -
depths
(list(int)
, optional, defaults to[2, 2, 6, 2]
) — Transformer 编码器中每层的深度。 -
num_heads
(list(int)
, optional, defaults to[3, 6, 12, 24]
) — Transformer 编码器每层的注意力头数。 -
window_size
(int
, optional, defaults to 7) — 窗口大小。 -
mlp_ratio
(float
, optional, defaults to 4.0) — MLP 隐藏维度与嵌入维度的比率。 -
qkv_bias
(bool
, optional, defaults toTrue
) — 是否为查询、键和值添加可学习的偏置。 -
hidden_dropout_prob
(float
, optional, defaults to 0.0) — 嵌入层和编码器中所有全连接层的 dropout 概率。 -
attention_probs_dropout_prob
(float
, optional, defaults to 0.0) — 注意力概率的 dropout 比率。 -
drop_path_rate
(float
, optional, defaults to 0.1) — 随机深度率。 -
hidden_act
(str
orfunction
, optional, defaults to"gelu"
) — 编码器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
、"relu"
、"selu"
和"gelu_new"
。 -
use_absolute_embeddings
(bool
, optional, defaults toFalse
) — 是否将绝对位置嵌入添加到补丁嵌入中。 -
initializer_range
(float
, optional, defaults to 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。 -
layer_norm_eps
(float
, optional, defaults to 1e-05) — 层归一化层使用的 epsilon。
这是用于存储 DonutSwinModel 配置的配置类。根据指定的参数实例化一个 Donut 模型,定义模型架构。使用默认值实例化配置将产生类似于 Donut naver-clova-ix/donut-base架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import DonutSwinConfig, DonutSwinModel
>>> # Initializing a Donut naver-clova-ix/donut-base style configuration
>>> configuration = DonutSwinConfig()
>>> # Randomly initializing a model from the naver-clova-ix/donut-base style configuration
>>> model = DonutSwinModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
DonutImageProcessor
class transformers.DonutImageProcessor
( do_resize: bool = True size: Dict = None resample: Resampling = <Resampling.BILINEAR: 2> do_thumbnail: bool = True do_align_long_axis: bool = False do_pad: bool = True do_rescale: bool = True rescale_factor: Union = 0.00392156862745098 do_normalize: bool = True image_mean: Union = None image_std: Union = None **kwargs )
参数
-
do_resize
(bool
, optional, defaults toTrue
) — 是否将图像的(高度,宽度)尺寸调整为指定的size
。可以被preprocess
方法中的do_resize
覆盖。 -
size
(Dict[str, int]
optional, defaults to{"shortest_edge" -- 224}
): 调整大小后的图像尺寸。图像的最短边被调整为 size[“shortest_edge”],最长边被调整以保持输入的长宽比。可以被preprocess
方法中的size
覆盖。 -
resample
(PILImageResampling
, optional, defaults toResampling.BILINEAR
) — 如果调整图像大小,要使用的重采样滤波器。可以被preprocess
方法中的resample
覆盖。 -
do_thumbnail
(bool
, optional, defaults toTrue
) — 是否使用缩略图方法调整图像大小。 -
do_align_long_axis
(bool
,可选,默认为False
) — 是否通过旋转 90 度来使图像的长轴与size
的长轴对齐。 -
do_pad
(bool
,可选,默认为True
) — 是否填充图像。如果在preprocess
中将random_padding
设置为True
,则每个图像都会在每一侧填充随机数量的填充,直到批次中最大的图像尺寸。否则,所有图像都会填充到批次中最大的图像尺寸。 -
do_rescale
(bool
,可选,默认为True
) — 是否按照指定的比例因子rescale_factor
重新调整图像。可以被preprocess
方法中的do_rescale
覆盖。 -
rescale_factor
(int
或float
,可选,默认为1/255
) — 如果重新调整图像,则使用的比例因子。可以被preprocess
方法中的rescale_factor
覆盖。 -
do_normalize
(bool
,可选,默认为True
) — 是否对图像进行归一化。可以被preprocess
方法中的do_normalize
覆盖。 -
image_mean
(float
或List[float]
,可选,默认为IMAGENET_STANDARD_MEAN
) — 如果对图像进行归一化,则使用的均值。这是一个浮点数或与图像通道数相同长度的浮点数列表。可以被preprocess
方法中的image_mean
参数覆盖。 -
image_std
(float
或List[float]
,可选,默认为IMAGENET_STANDARD_STD
) — 图像标准差。
构建一个 Donut 图像处理器。
preprocess
( images: Union do_resize: bool = None size: Dict = None resample: Resampling = None do_thumbnail: bool = None do_align_long_axis: bool = None do_pad: bool = None random_padding: bool = False do_rescale: bool = None rescale_factor: float = None do_normalize: bool = None image_mean: Union = None image_std: Union = None return_tensors: Union = None data_format: Optional = <ChannelDimension.FIRST: 'channels_first'> input_data_format: Union = None **kwargs )
参数
-
images
(ImageInput
) — 要预处理的图像。期望单个图像或批量图像,像素值范围为 0 到 255。如果传入像素值在 0 到 1 之间的图像,请设置do_rescale=False
。 -
do_resize
(bool
,可选,默认为self.do_resize
) — 是否调整图像大小。 -
size
(Dict[str, int]
,可选,默认为self.size
) — 调整大小后的图像尺寸。图像的最短边被调整为 min(size[“height”], size[“width”]),最长边被调整以保持输入的长宽比。 -
resample
(int
,可选,默认为self.resample
) — 如果调整图像大小,则使用的重采样滤波器。这可以是PILImageResampling
枚举值之一。仅当do_resize
设置为True
时才会生效。 -
do_thumbnail
(bool
,可选,默认为self.do_thumbnail
) — 是否使用缩略图方法调整图像大小。 -
do_align_long_axis
(bool
,可选,默认为self.do_align_long_axis
) — 是否通过旋转 90 度来使图像的长轴与size
的长轴对齐。 -
do_pad
(bool
,可选,默认为self.do_pad
) — 是否填充图像。如果在preprocess
中将random_padding
设置为True
,则每个图像都会在每一侧填充随机数量的填充,直到批次中最大的图像尺寸。否则,所有图像都会填充到批次中最大的图像尺寸。 -
random_padding
(bool
,可选,默认为self.random_padding
) — 在填充图像时是否使用随机填充。如果为True
,则批次中的每个图像都会在每一侧填充随机数量的填充,直到批次中最大的图像尺寸。 -
do_rescale
(bool
,可选,默认为self.do_rescale
) — 是否重新调整图像像素值。 -
rescale_factor
(float
,可选,默认为self.rescale_factor
) — 如果do_rescale
设置为True
,则用于重新调整图像的重新调整因子。 -
do_normalize
(bool
,可选,默认为self.do_normalize
) — 是否对图像进行归一化。 -
image_mean
(float
或List[float]
,可选,默认为self.image_mean
) — 用于归一化的图像均值。 -
image_std
(float
或List[float]
,可选,默认为self.image_std
) — 用于归一化的图像标准差。 -
return_tensors
(str
或TensorType
,可选) — 要返回的张量类型。可以是以下之一:-
未设置:返回一个
np.ndarray
列表。 -
TensorType.TENSORFLOW
或'tf'
:返回类型为tf.Tensor
的批处理。 -
TensorType.PYTORCH
或'pt'
:返回类型为torch.Tensor
的批处理。 -
TensorType.NUMPY
或'np'
:返回类型为np.ndarray
的批处理。 -
TensorType.JAX
或'jax'
:返回类型为jax.numpy.ndarray
的批处理。
-
-
data_format
(ChannelDimension
或str
,可选,默认为ChannelDimension.FIRST
)— 输出图片的通道维度格式。可以是以下之一:-
ChannelDimension.FIRST
:图片格式为(通道数,高度,宽度)。 -
ChannelDimension.LAST
:图片格式为(高度,宽度,通道数)。 -
未设置:默认为输入图片的通道维度格式。
-
-
input_data_format
(ChannelDimension
或str
,可选)— 输入图片的通道维度格式。如果未设置,将从输入图片中推断通道维度格式。可以是以下之一:-
"channels_first"
或ChannelDimension.FIRST
:图片格式为(通道数,高度,宽度)。 -
"channels_last"
或ChannelDimension.LAST
:图片格式为(高度,宽度,通道数)。 -
"none"
或ChannelDimension.NONE
:图片格式为(高度,宽度)。
-
预处理一张图片或一批图片。
DonutFeatureExtractor
class transformers.DonutFeatureExtractor
( *args **kwargs )
__call__
( images **kwargs )
预处理一张图片或一批图片。
DonutProcessor
class transformers.DonutProcessor
( image_processor = None tokenizer = None **kwargs )
参数
-
image_processor
(DonutImageProcessor,可选)— DonutImageProcessor 的实例。图像处理器是必需的输入。 -
tokenizer
([XLMRobertaTokenizer
/XLMRobertaTokenizerFast
],可选)— [XLMRobertaTokenizer
/XLMRobertaTokenizerFast
]的实例。分词器是必需的输入。
构建一个 Donut 处理器,将一个 Donut 图像处理器和一个 XLMRoBERTa 分词器包装成一个单一处理器。
DonutProcessor 提供了 DonutImageProcessor 和[XLMRobertaTokenizer
/XLMRobertaTokenizerFast
]的所有功能。查看更多信息,请参阅call()和 decode()。
__call__
( *args **kwargs )
在正常模式下使用时,此方法将所有参数转发到 AutoImageProcessor 的__call__()
并返回其输出。如果在上下文as_target_processor()
中使用,则此方法将所有参数转发到 DonutTokenizer 的~DonutTokenizer.__call__
。有关更多信息,请参阅上述两种方法的文档。
from_pretrained
( pretrained_model_name_or_path: Union cache_dir: Union = None force_download: bool = False local_files_only: bool = False token: Union = None revision: str = 'main' **kwargs )
参数
-
pretrained_model_name_or_path
(str
或os.PathLike
)— 这可以是:-
一个字符串,指向 huggingface.co 上托管的预训练特征提取器的模型 id。有效的模型 id 可以位于根级别,如
bert-base-uncased
,或者在用户或组织名称下进行命名空间化,如dbmdz/bert-base-german-cased
。 -
一个目录的路径,其中包含使用 save_pretrained()方法保存的特征提取器文件,例如,
./my_model_directory/
。 -
一个保存的特征提取器 JSON 文件的路径或 URL,例如,
./my_model_directory/preprocessor_config.json
。**kwargs — 传递给 from_pretrained()和~tokenization_utils_base.PreTrainedTokenizer.from_pretrained
的额外关键字参数。
-
实例化与预训练模型相关联的处理器。
这个类方法只是调用特征提取器的 from_pretrained()、图像处理器 ImageProcessingMixin 和分词器~tokenization_utils_base.PreTrainedTokenizer.from_pretrained
方法。更多信息请参考上述方法的文档字符串。
保存预训练模型
( save_directory push_to_hub: bool = False **kwargs )
参数
-
save_directory
(str
或os.PathLike
) — 将要保存特征提取器 JSON 文件和分词器文件的目录(如果目录不存在,则会创建)。 -
push_to_hub
(bool
, 可选, 默认为False
) — 是否在保存后将模型推送到 Hugging Face 模型中心。您可以使用repo_id
指定要推送到的存储库(将默认为您的命名空间中的save_directory
名称)。 -
kwargs
(Dict[str, Any]
, 可选) — 传递给 push_to_hub()方法的额外关键字参数。
将此处理器的属性(特征提取器、分词器等)保存在指定的目录中,以便可以使用 from_pretrained()方法重新加载。
这个类方法只是调用 save_pretrained()和 save_pretrained()。更多信息请参考上述方法的文档字符串。
批量解码
( *args **kwargs )
这个方法将所有参数转发给 DonutTokenizer 的 batch_decode()。更多信息请参考此方法的文档字符串。
解码
( *args **kwargs )
这个方法将所有参数转发给 DonutTokenizer 的 decode()。更多信息请参考此方法的文档字符串。
DonutSwinModel
class transformers.DonutSwinModel
( config add_pooling_layer = True use_mask_token = False )
参数
config
(DonutSwinConfig)— 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
裸 Donut Swin 模型变压器输出原始隐藏状态,没有特定的头部在顶部。该模型是 PyTorch torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
前向
( pixel_values: Optional = None bool_masked_pos: Optional = None head_mask: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.donut.modeling_donut_swin.DonutSwinModelOutput or tuple(torch.FloatTensor)
参数
-
pixel_values
(形状为(batch_size, num_channels, height, width)
的torch.FloatTensor
)— 像素值。像素值可以使用 AutoImageProcessor 获取。有关详细信息,请参阅 DonutImageProcessor.call
()。 -
head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选)— 用于使自注意力模块中选择的头部失效的掩码。掩码值在[0, 1]
中选择:-
1 表示头部未被遮罩,
-
0 表示头部被遮罩。
-
-
output_attentions
(bool
,可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。 -
output_hidden_states
(bool
,可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。 -
return_dict
(bool
,可选)— 是否返回 ModelOutput 而不是普通元组。 -
bool_masked_pos
(形状为(batch_size, num_patches)
的torch.BoolTensor
)— 布尔掩码位置。指示哪些补丁被屏蔽(1)哪些没有(0)。
返回值
transformers.models.donut.modeling_donut_swin.DonutSwinModelOutput
或tuple(torch.FloatTensor)
一个transformers.models.donut.modeling_donut_swin.DonutSwinModelOutput
或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
)包含根据配置(DonutSwinConfig)和输入的各种元素。
-
last_hidden_state
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
)— 模型最后一层的隐藏状态序列。 -
pooler_output
(形状为(batch_size, hidden_size)
的torch.FloatTensor
,可选,当传递add_pooling_layer=True
时返回)— 最后一层隐藏状态的平均池化。 -
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 之后的注意力权重,用于计算自注意力头中的加权平均值。
-
reshaped_hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) — 形状为(batch_size, hidden_size, height, width)
的torch.FloatTensor
元组(一个用于嵌入的输出 + 一个用于每个阶段的输出)。模型在每一层输出的隐藏状态以及包括空间维度的初始嵌入输出进行了重塑。
DonutSwinModel 的前向方法,覆盖了 __call__
特殊方法。
虽然前向传递的步骤需要在这个函数内定义,但应该在之后调用 Module
实例,而不是这个函数,因为前者会处理运行前后的处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoImageProcessor, DonutSwinModel
>>> import torch
>>> from datasets import load_dataset
>>> dataset = load_dataset("huggingface/cats-image")
>>> image = dataset["test"]["image"][0]
>>> image_processor = AutoImageProcessor.from_pretrained("https://huggingface.co/naver-clova-ix/donut-base")
>>> model = DonutSwinModel.from_pretrained("https://huggingface.co/naver-clova-ix/donut-base")
>>> inputs = image_processor(image, return_tensors="pt")
>>> with torch.no_grad():
... outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 49, 768]
FLAVA
原文链接:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/flava
概述
FLAVA 模型在FLAVA: A Foundational Language And Vision Alignment Model中由 Amanpreet Singh, Ronghang Hu, Vedanuj Goswami, Guillaume Couairon, Wojciech Galuba, Marcus Rohrbach 和 Douwe Kiela 提出,并已被 CVPR 2022 接受。
该论文旨在创建一个统一的基础模型,可以跨越视觉、语言以及视觉-语言多模态任务。
论文摘要如下:
最先进的视觉和视觉-语言模型依赖于大规模视觉-语言预训练,以在各种下游任务上获得良好的性能。通常,这些模型通常是跨模态(对比)或多模态(具有早期融合),但不是两者兼具;它们通常只针对特定的模态或任务。一个有前途的方向是使用一个单一的整体通用模型,作为“基础”,一次性针对所有模态 —— 一个真正的视觉和语言基础模型应该擅长视觉任务、语言任务以及视觉和语言任务。我们介绍 FLAVA 作为这样一个模型,并展示了在涵盖这些目标模态的 35 个任务范围内的出色性能。
FlavaConfig
class transformers.FlavaConfig
( image_config: Dict = None text_config: Dict = None multimodal_config: Dict = None image_codebook_config: Dict = None hidden_size: int = 768 layer_norm_eps: float = 1e-12 projection_dim: int = 768 init_codebook: bool = True logit_scale_init_value: float = 2.6592 initializer_range: float = 0.02 ce_ignore_index: int = -100 mim_weight: float = 1.0 mlm_weight: float = 1.0 global_contrastive_weight: float = 1.0 itm_weight: float = 1.0 mmm_image_weight: float = 1.0 mmm_text_weight: float = 1.0 global_backprop_contrastive: bool = True skip_unmasked_multimodal_encoder: bool = True return_loss: bool = True **kwargs )
参数
-
text_config
(dict
, optional) — 用于初始化 FlavaTextConfig 的配置选项字典。 -
image_config
(dict
, optional) — 用于初始化 FlavaImageConfig 的配置选项字典。 -
multimodal_config
(dict
, optional) — 用于初始化 FlavaMultimodalConfig 的配置选项字典。 -
hidden_size
(int
, optional, 默认为 768) — 编码器层和池化层的维度。 -
layer_norm_eps
(float
, optional, 默认为 1e-12) — 层归一化层使用的 epsilon 值。 -
projection_dim
(int
, optional, 默认为 512) — 文本和图像投影层的维度。 -
logit_scale_init_value
(float
, optional, 默认为 2.6592) — logit_scale参数的初始值。默认值与原始 FLAVA/CLIP 实现相同。 -
initializer_range
(float
, optional, 默认为 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。 -
ce_ignore_index
(int
, optional, 默认为-100) — 用于忽略的交叉熵索引。 -
mim_weight
(float
, optional, 默认为 1.0) — 分配给 MIM(Masked Image Modeling)单模态损失的权重。 -
mlm_weight
(float
, optional, 默认为 1.0) — 分配给 MLM(Masked Language Modeling)单模态损失的权重。 -
global_contrastive_weight
(float
, optional, 默认为 1.0) — 分配给全局对比度交叉对齐损失的权重。 -
itm_weight
(float
, optional, 默认为 1.0) — 分配给图像-文本匹配多模态损失的权重。 -
mmm_image_weight
(float
, optional, 默认为 1.0) — 分配给 MMM 损失图像部分的权重。 -
mmm_text_weight
(float
, optional, 默认为 1.0) — 分配给 MMM 损失文本部分的权重。 -
global_backprop_contrastive
(bool
, optional, 默认为True
) — 是否在对比损失中通过所有工作器进行全局反向传播。 -
skip_unmasked_multimodal_encoder
(bool
,可选,默认为True
)— 是否跳过运行未屏蔽的多模态编码器,其输出不被 FLAVA 损失使用。 -
return_loss
(bool
,可选,默认为True
)— 是否返回损失或不返回 -
kwargs
(可选)— 关键字参数的字典。
FlavaConfig 是用于存储 FlavaModel 配置的配置类。根据指定的参数实例化 FLAVA 模型,定义文本模型、图像模型、图像码书和多模态模型配置。使用默认值实例化配置将产生类似于 FLAVA facebook/flava-full架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import FlavaConfig, FlavaModel, FlavaForPreTraining
>>> # Initializing a FlavaConfig with style configuration
>>> configuration = FlavaConfig()
>>> # Initializing a FlavaModel and FlavaForPreTraining model (with random weights) from the style configuration
>>> model = FlavaModel(configuration)
>>> model_pre = FlavaForPreTraining(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
>>> configuration_pre = model_pre.config
from_configs
( image_config: FlavaImageConfig text_config: FlavaTextConfig multimodal_config: FlavaMultimodalConfig image_codebook_config: FlavaImageCodebookConfig **kwargs ) → export const metadata = 'undefined';FlavaConfig
返回
FlavaConfig
配置对象的实例
从 flava 文本模型配置、flava 图像模型配置、flava 多模态模型和 flava 码书模型配置中实例化一个 FlavaConfig(或派生类)。
FlavaTextConfig
class transformers.FlavaTextConfig
( vocab_size: int = 30522 type_vocab_size: int = 2 max_position_embeddings: int = 512 position_embedding_type: str = 'absolute' hidden_size: int = 768 num_hidden_layers: int = 12 num_attention_heads: int = 12 intermediate_size: int = 3072 hidden_act: str = 'gelu' hidden_dropout_prob: float = 0.0 attention_probs_dropout_prob: float = 0.0 initializer_range: float = 0.02 layer_norm_eps: float = 1e-12 pad_token_id: int = 0 qkv_bias: bool = True **kwargs )
参数
-
vocab_size
(int
,可选,默认为 30522)— BERT 模型的词汇量。定义在调用 FlavaTextModel 时可以表示的不同标记数量。 -
type_vocab_size
(int
,可选,默认为 2)— 在调用 FlavaTextModel 时传递的token_type_ids
的词汇量大小。请注意,即使文本编码器允许token_type_ids
的值为 2,但对于仅文本的预训练和微调,类似于 RoBERTa,只使用 1。 -
max_position_embeddings
(int
,可选,默认为 512)— 模型可能使用的最大序列长度。通常设置为较大的值以防万一(例如 512、1024 或 2048)。对于 VL,传递给模型的 max_length 为 77。 -
position_embedding_type
(str
,可选,默认为"absolute"
)— 位置嵌入的类型。选择"absolute"
、"relative_key"
、"relative_key_query"
中的一个。对于位置嵌入,请使用"absolute"
。有关"relative_key"
的更多信息,请参考Self-Attention with Relative Position Representations (Shaw et al.)。有关"relative_key_query"
的更多信息,请参考Improve Transformer Models with Better Relative Position Embeddings (Huang et al.)中的Method 4。 -
hidden_size
(int
,可选,默认为 768)— 编码器层和池化层的维度。 -
num_hidden_layers
(int
,可选,默认为 12)— Transformer 编码器中的隐藏层数。 -
num_attention_heads
(int
,可选,默认为 12)— Transformer 编码器中每个注意力层的注意力头数。 -
intermediate_size
(int
,可选,默认为 3072)— Transformer 编码器中“中间”(即前馈)层的维度。 -
hidden_act
(str
orfunction
, optional, defaults to"gelu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
、"relu"
、"selu"
和"gelu_new"
。 -
hidden_dropout_prob
(float
, optional, defaults to 0.1) — 嵌入层、编码器和池化器中所有全连接层的 dropout 概率。 -
attention_probs_dropout_prob
(float
, optional, defaults to 0.1) — 注意力概率的 dropout 比率。 -
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) — 输入通道的数量。 -
qkv_bias
(bool
, optional, defaults toTrue
) — 是否为查询、键和值添加偏置。
这是用于存储 FlavaTextModel 配置的配置类。根据指定的参数实例化 FLAVA 模型,定义模型架构。
使用默认值实例化配置将产生类似于 FLAVA facebook/flava-full架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import FlavaTextConfig, FlavaTextModel
>>> # Initializing a FlavaTextModel with style configuration
>>> configuration = FlavaTextConfig()
>>> # Initializing a FlavaTextModel model (with random weights) from the style configuration
>>> model = FlavaTextModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
FlavaImageConfig
class transformers.FlavaImageConfig
( hidden_size: int = 768 num_hidden_layers: int = 12 num_attention_heads: int = 12 intermediate_size: int = 3072 hidden_act: int = 'gelu' hidden_dropout_prob: float = 0.0 attention_probs_dropout_prob: float = 0.0 initializer_range: float = 0.02 layer_norm_eps: float = 1e-12 image_size: int = 224 patch_size: int = 16 num_channels: int = 3 qkv_bias: bool = True mask_token: bool = True vocab_size: int = 8192 **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
orfunction
, optional, defaults to"gelu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
、"relu"
、"selu"
和"gelu_new"
。 -
hidden_dropout_prob
(float
, optional, defaults to 0.0) — 嵌入层、编码器和池化器中所有全连接层的 dropout 概率。 -
attention_probs_dropout_prob
(float
, optional, defaults to 0.0) — 注意力概率的 dropout 比率。 -
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) — 输入通道的数量。 -
qkv_bias
(bool
, optional, defaults toTrue
) — 是否为查询、键和值添加偏置。 -
mask_token
(bool
, optional, defaults toTrue
) — 是否使用掩码标记。用于 FLAVA 的 MIM(Masked Image Modeling)损失。 -
vocab_size
(int
,可选,默认为 8192) — 与 FlavaImageModel 一起用于 FLAVA 的 MIM(Masked Image Modeling)损失的 FlavaImageCodebook 的词汇表大小。
这是用于存储 FlavaImageModel 配置的配置类。根据指定的参数实例化 FLAVA 模型,定义模型架构。
使用默认值实例化配置将产生类似于 FLAVA facebook/flava-full 架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import FlavaImageConfig, FlavaImageModel
>>> # Initializing a FlavaImageModel with style configuration
>>> configuration = FlavaImageConfig()
>>> # Initializing a FlavaImageModel model (with random weights) from the style configuration
>>> model = FlavaImageModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
FlavaMultimodalConfig
class transformers.FlavaMultimodalConfig
( hidden_size: int = 768 num_hidden_layers: int = 6 num_attention_heads: int = 12 intermediate_size: int = 3072 hidden_act: int = 'gelu' hidden_dropout_prob: int = 0.0 attention_probs_dropout_prob: int = 0.0 initializer_range: float = 0.02 layer_norm_eps: float = 1e-12 qkv_bias: bool = True use_cls_token: bool = True **kwargs )
参数
-
hidden_size
(int
,可选,默认为 768) — 编码器层和池化层的维度。 -
num_hidden_layers
(int
,可选,默认为 6) — Transformer 编码器中的隐藏层数。 -
num_attention_heads
(int
,可选,默认为 12) — Transformer 编码器中每个注意力层的注意力头数。 -
intermediate_size
(int
,可选,默认为 3072) — Transformer 编码器中“中间”(即前馈)层的维度。 -
hidden_act
(str
或function
,可选,默认为"gelu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
、"relu"
、"selu"
和"gelu_new"
。 -
hidden_dropout_prob
(float
,可选,默认为 0.0) — 嵌入层、编码器和池化器中所有全连接层的 dropout 概率。 -
attention_probs_dropout_prob
(float
,可选,默认为 0.0) — 注意力概率的 dropout 比率。 -
initializer_range
(float
,可选,默认为 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。 -
layer_norm_eps
(float
,可选,默认为 1e-12) — 层归一化层使用的 epsilon。 -
qkv_bias
(bool
,可选,默认为True
) — 是否向查询、键和值添加偏置。 -
use_cls_token
(bool
,可选,默认为True
) — 是否在多模态设置中使用额外的 CLS 标记。通常由 FLAVA 模型需要。
这是用于存储 FlavaMultimodalModel 配置的配置类。根据指定的参数实例化 FLAVA 模型,定义模型架构。
使用默认值实例化配置将产生类似于 FLAVA facebook/flava-full 架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import FlavaMultimodalConfig, FlavaMultimodalModel
>>> # Initializing a FlavaMultimodalModel with style configuration
>>> configuration = FlavaMultimodalConfig()
>>> # Initializing a FlavaMultimodalModel model (with random weights) from the style configuration
>>> model = FlavaMultimodalModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
FlavaImageCodebookConfig
class transformers.FlavaImageCodebookConfig
( num_groups: int = 4 input_channels: int = 3 num_blocks_per_group: int = 2 hidden_size: int = 256 vocab_size: int = 8192 freeze: int = True initializer_range: float = 0.02 **kwargs )
FlavaProcessor
class transformers.FlavaProcessor
( image_processor = None tokenizer = None **kwargs )
参数
-
image_processor
(FlavaImageProcessor,可选)— 图像处理器是必需的输入。 -
tokenizer
(BertTokenizerFast,可选)— Tokenizer 是必需的输入。
构造一个 FLAVA 处理器,将 FLAVA 图像处理器和 FLAVA 标记器包装成单个处理器。
FlavaProcessor 提供了 FlavaImageProcessor 和 BertTokenizerFast 的所有功能。有关更多信息,请参阅__call__()
和 decode()。
batch_decode
( *args **kwargs )
这种方法将其所有参数转发给 BertTokenizerFast 的 batch_decode()。有关更多信息,请参考此方法的文档字符串。
decode
( *args **kwargs )
这种方法将其所有参数转发给 BertTokenizerFast 的 decode()。有关更多信息,请参考此方法的文档字符串。
FlavaFeatureExtractor
class transformers.FlavaFeatureExtractor
( *args **kwargs )
FlavaImageProcessor
class transformers.FlavaImageProcessor
( do_resize: bool = True size: Dict = None resample: Resampling = <Resampling.BICUBIC: 3> do_center_crop: bool = True crop_size: Dict = None do_rescale: bool = True rescale_factor: Union = 0.00392156862745098 do_normalize: bool = True image_mean: Union = None image_std: Union = None return_image_mask: bool = False input_size_patches: int = 14 total_mask_patches: int = 75 mask_group_min_patches: int = 16 mask_group_max_patches: Optional = None mask_group_min_aspect_ratio: float = 0.3 mask_group_max_aspect_ratio: Optional = None return_codebook_pixels: bool = False codebook_do_resize: bool = True codebook_size: bool = None codebook_resample: int = <Resampling.LANCZOS: 1> codebook_do_center_crop: bool = True codebook_crop_size: int = None codebook_do_rescale: bool = True codebook_rescale_factor: Union = 0.00392156862745098 codebook_do_map_pixels: bool = True codebook_do_normalize: bool = True codebook_image_mean: Union = None codebook_image_std: Union = None **kwargs )
参数
-
do_resize
(bool
,可选,默认为True
)— 是否将图像的(高度,宽度)尺寸调整为指定的size
。可以被preprocess
中的do_resize
参数覆盖。 -
size
(Dict[str, int]
可选,默认为{"height" -- 224, "width": 224}
):调整大小后的图像尺寸。可以被preprocess
中的size
参数覆盖。 -
resample
(PILImageResampling
,可选,默认为PILImageResampling.BICUBIC
)— 如果调整图像大小,则要使用的重采样滤镜。可以被preprocess
中的resample
参数覆盖。 -
do_center_crop
(bool
,可选,默认为True
)— 是否对图像进行中心裁剪。可以被preprocess
中的do_center_crop
参数覆盖。 -
crop_size
(Dict[str, int]
可选,默认为{"height" -- 224, "width": 224}
):中心裁剪后图像的大小(crop_size["height"], crop_size["width"])
。可以被preprocess
中的crop_size
参数覆盖。 -
do_rescale
(bool
,可选,默认为True
)— 是否按指定比例rescale_factor
对图像进行重新缩放。可以被preprocess
中的do_rescale
参数覆盖。 -
rescale_factor
(int
或float
,可选,默认为1/255
)— 如果重新缩放图像,则要使用的比例因子。可以被preprocess
中的rescale_factor
参数覆盖。 -
do_normalize
(bool
,可选,默认为True
)— 是否对图像进行归一化。可以被preprocess
中的do_normalize
参数覆盖。 -
image_mean
(float
或List[float]
, optional, 默认为IMAGENET_STANDARD_MEAN
) — 如果对图像进行标准化,则使用的均值。这是一个浮点数或与图像通道数相同长度的浮点数列表。可以被preprocess
方法中的image_mean
参数覆盖。 -
image_std
(float
或List[float]
, optional, 默认为IMAGENET_STANDARD_STD
) — 如果对图像进行标准化,则使用的标准差。这是一个浮点数或与图像通道数相同长度的浮点数列表。可以被preprocess
方法中的image_std
参数覆盖。 -
return_image_mask
(bool
, optional, 默认为False
) — 是否返回图像掩码。可以被preprocess
中的return_image_mask
参数覆盖。 -
input_size_patches
(int
, optional, 默认为 14) — 图像中高度和宽度方向的补丁数。14x14 = 总共 196 个补丁。可以被preprocess
中的input_size_patches
参数覆盖。 -
total_mask_patches
(int
, optional, 默认为 75) — 应该被遮蔽的总补丁数。可以被preprocess
中的total_mask_patches
参数覆盖。 -
mask_group_min_patches
(int
, optional, 默认为 16) — 应该被遮蔽的最小补丁数。可以被preprocess
中的mask_group_min_patches
参数覆盖。 -
mask_group_max_patches
(int
, optional) — 应该被遮蔽的最大补丁数。可以被preprocess
中的mask_group_max_patches
参数覆盖。 -
mask_group_min_aspect_ratio
(float
, optional, 默认为 0.3) — 掩码窗口的最小长宽比。可以被preprocess
中的mask_group_min_aspect_ratio
参数覆盖。 -
mask_group_max_aspect_ratio
(float
, optional) — 掩码窗口的最大长宽比。可以被preprocess
中的mask_group_max_aspect_ratio
参数覆盖。 -
codebook_do_resize
(bool
, optional, 默认为True
) — 是否将输入调整大小以适应码书。可以被preprocess
中的codebook_size
参数覆盖。 -
codebook_size
(Dict[str, int]
, optional, 默认为{"height" -- 224, "width": 224}
): 将输入调整大小以适应码书到指定大小。可以被preprocess
中的codebook_size
参数覆盖。 -
codebook_resample
(PILImageResampling
, optional, 默认为PILImageResampling.LANCZOS
) — 如果调整码书图像大小,则使用的重采样滤波器。可以被preprocess
中的codebook_resample
参数覆盖。 -
codebook_do_center_crop
(bool
, optional, 默认为True
) — 是否在码书输入中心裁剪输入。如果输入尺寸沿任何边缘小于codebook_crop_size
,则图像将填充为 0,然后进行中心裁剪。可以被preprocess
中的codebook_do_center_crop
参数覆盖。 -
codebook_crop_size
(Dict[str, int]
, optional, 默认为{"height" -- 224, "width": 224}
): 应用中心裁剪时,码书输入的期望输出大小。可以被preprocess
中的codebook_crop_size
参数覆盖。 -
codebook_do_rescale
(bool
, optional, 默认为True
) — 是否按照指定的比例因子codebook_rescale_factor
重新缩放码书输入。可以被preprocess
中的codebook_do_rescale
参数覆盖。 -
codebook_rescale_factor
(int
或float
, optional, 默认为1/255
) — 如果重新缩放码书图像,则定义要使用的比例因子。可以被preprocess
中的codebook_rescale_factor
参数覆盖。 -
codebook_do_map_pixels
(bool
, optional, 默认为True
) — 是否将码书输入的像素值映射到 (1 - 2e)x + e。可以被preprocess
中的codebook_do_map_pixels
参数覆盖。 -
codebook_do_normalize
(bool
, optional, 默认为True
) — 是否对用于 codebook 的输入进行规范化,使用codebook_image_mean
和codebook_image_std
。可以被preprocess
中的codebook_do_normalize
参数覆盖。 -
codebook_image_mean
(Optional[Union[float, Iterable[float]]]
, optional, 默认为[0, 0, 0]
) — 每个通道的均值序列,在为 codebook 规范化图像时使用。可以被preprocess
中的codebook_image_mean
参数覆盖。 -
codebook_image_std
(Optional[Union[float, Iterable[float]]]
, optional, 默认为[0.5, 0.5, 0.5]
) — 每个通道的标准差序列,在为 codebook 规范化图像时使用。可以被preprocess
中的codebook_image_std
参数覆盖。
构建一个 Flava 图像处理器。
preprocess
( images: Union do_resize: Optional = None size: Dict = None resample: Resampling = None do_center_crop: Optional = None crop_size: Optional = None do_rescale: Optional = None rescale_factor: Optional = None do_normalize: Optional = None image_mean: Union = None image_std: Union = None return_image_mask: Optional = None input_size_patches: Optional = None total_mask_patches: Optional = None mask_group_min_patches: Optional = None mask_group_max_patches: Optional = None mask_group_min_aspect_ratio: Optional = None mask_group_max_aspect_ratio: Optional = None return_codebook_pixels: Optional = None codebook_do_resize: Optional = None codebook_size: Optional = None codebook_resample: Optional = None codebook_do_center_crop: Optional = None codebook_crop_size: Optional = None codebook_do_rescale: Optional = None codebook_rescale_factor: Optional = None codebook_do_map_pixels: Optional = None codebook_do_normalize: Optional = None codebook_image_mean: Optional = None codebook_image_std: Optional = None return_tensors: Union = None data_format: ChannelDimension = <ChannelDimension.FIRST: 'channels_first'> input_data_format: Union = None **kwargs )
参数
-
images
(ImageInput
) — 要预处理的图像。期望单个图像或批量图像,像素值范围为 0 到 255。如果传入像素值在 0 到 1 之间的图像,请设置do_rescale=False
。 -
do_resize
(bool
, optional, 默认为self.do_resize
) — 是否调整图像大小。 -
size
(Dict[str, int]
, optional, 默认为self.size
) — 图像的大小。 -
resample
(int
, optional, 默认为self.resample
) — 如果调整图像大小,则使用的重采样滤波器。这可以是PILImageResampling
枚举值之一,仅在do_resize
设置为True
时有效。 -
do_center_crop
(bool
, optional, 默认为self.do_center_crop
) — 是否对图像进行中心裁剪。 -
crop_size
(Dict[str, int]
, optional, 默认为self.crop_size
) — 中心裁剪的大小。仅在do_center_crop
设置为True
时有效。 -
do_rescale
(bool
, optional, 默认为self.do_rescale
) — 是否将图像值重新缩放在 [0 - 1] 之间。 -
rescale_factor
(float
, optional, 默认为self.rescale_factor
) — 如果do_rescale
设置为True
,则用于重新缩放图像的重新缩放因子。 -
do_normalize
(bool
, optional, 默认为self.do_normalize
) — 是否对图像进行规范化。 -
image_mean
(float
或List[float]
, optional, 默认为self.image_mean
) — 图像均值。 -
image_std
(float
或List[float]
, optional, 默认为self.image_std
) — 图像标准差。 -
return_image_mask
(bool
, optional, 默认为self.return_image_mask
) — 是否返回图像掩码。 -
input_size_patches
(int
, optional, 默认为self.input_size_patches
) — 从图像中提取的补丁的大小。 -
total_mask_patches
(int
, optional, 默认为self.total_mask_patches
) — 从图像中提取的总补丁数。 -
mask_group_min_patches
(int
, optional, 默认为self.mask_group_min_patches
) — 从图像中提取的最小补丁数。 -
mask_group_max_patches
(int
, optional, 默认为self.mask_group_max_patches
) — 从图像中提取的补丁的最大数量。 -
mask_group_min_aspect_ratio
(float
, optional, 默认为self.mask_group_min_aspect_ratio
) — 从图像中提取的补丁的最小长宽比。 -
mask_group_max_aspect_ratio
(float
, optional, 默认为self.mask_group_max_aspect_ratio
) — 从图像中提取的补丁的最大长宽比。 -
return_codebook_pixels
(bool
, optional, 默认为self.return_codebook_pixels
) — 是否返回 codebook 像素。 -
codebook_do_resize
(bool
, optional, 默认为self.codebook_do_resize
) — 是否调整 codebook 像素的大小。 -
codebook_size
(Dict[str, int]
, optional, 默认为self.codebook_size
) — codebook 像素的大小。 -
codebook_resample
(int
, 可选, 默认为self.codebook_resample
) — 如果调整码书像素大小,则要使用的重采样滤波器。这可以是枚举PILImageResampling
中的一个。仅在codebook_do_resize
设置为True
时有效。 -
codebook_do_center_crop
(bool
, 可选, 默认为self.codebook_do_center_crop
) — 是否对码书像素进行中心裁剪。 -
codebook_crop_size
(Dict[str, int]
, 可选, 默认为self.codebook_crop_size
) — 码书像素中心裁剪的大小。仅在codebook_do_center_crop
设置为True
时有效。 -
codebook_do_rescale
(bool
, 可选, 默认为self.codebook_do_rescale
) — 是否将码书像素值重新缩放到 [0 - 1] 之间。 -
codebook_rescale_factor
(float
, 可选, 默认为self.codebook_rescale_factor
) — 如果codebook_do_rescale
设置为True
,则用于重新缩放码书像素的重新缩放因子。 -
codebook_do_map_pixels
(bool
, 可选, 默认为self.codebook_do_map_pixels
) — 是否映射码书像素值。 -
codebook_do_normalize
(bool
, 可选, 默认为self.codebook_do_normalize
) — 是否对码书像素进行归一化。 -
codebook_image_mean
(float
或List[float]
, 可选, 默认为self.codebook_image_mean
) — 如果codebook_do_normalize
设置为True
,则用于归一化码书像素的码书像素均值。 -
codebook_image_std
(float
或List[float]
, 可选, 默认为self.codebook_image_std
) — 如果codebook_do_normalize
设置为True
,则用于归一化码书像素的码书像素标准差。 -
return_tensors
(str
或TensorType
, 可选) — 要返回的张量类型。可以是以下之一:-
未设置: 返回一个
np.ndarray
列表。 -
TensorType.TENSORFLOW
或'tf'
: 返回类型为tf.Tensor
的批次。 -
TensorType.PYTORCH
或'pt'
: 返回类型为torch.Tensor
的批次。 -
TensorType.NUMPY
或'np'
: 返回类型为np.ndarray
的批次。 -
TensorType.JAX
或'jax'
: 返回类型为jax.numpy.ndarray
的批次。
-
-
data_format
(ChannelDimension
或str
, 可选, 默认为ChannelDimension.FIRST
) — 输出图像的通道维度格式。可以是以下之一:-
ChannelDimension.FIRST
: 图像以 (通道数、高度、宽度) 格式。 -
ChannelDimension.LAST
: 图像以 (高度、宽度、通道数) 格式。
-
-
input_data_format
(ChannelDimension
或str
, 可选) — 输入图像的通道维度格式。如果未设置,则从输入图像中推断通道维度格式。可以是以下之一:-
"channels_first"
或ChannelDimension.FIRST
: 图像以 (通道数、高度、宽度) 格式。 -
"channels_last"
或ChannelDimension.LAST
: 图像以 (高度、宽度、通道数) 格式。 -
"none"
或ChannelDimension.NONE
: 图像以 (高度、宽度) 格式。
-
预处理图像或图像批次。
FlavaForPreTraining
class transformers.FlavaForPreTraining
( config: FlavaConfig image_codebook: Optional = None )
参数
-
config
(FlavaConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained() 方法以加载模型权重。 -
image_codebook
(nn.Module
) — 如果传入,图像码书将设置为此值。否则,将使用配置中定义的 image_codebook_config 作为第一个参数进行初始化。
用于预训练的 FLAVA 模型,输出损失、嵌入、对数和变换器输出。
这个模型是 PyTorch 的torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有事项。
forward
( input_ids: Optional = None input_ids_masked: Optional = None pixel_values: Optional = None codebook_pixel_values: Optional = None attention_mask: Optional = None token_type_ids: Optional = None bool_masked_pos: Optional = None position_ids: Optional = None image_attention_mask: Optional = None skip_unmasked_multimodal_encoder: bool = None mlm_labels: Optional = None mim_labels: Optional = None itm_labels: Optional = None output_attentions: Optional = None output_hidden_states: bool = True return_dict: Optional = None return_loss: Optional = None ) → export const metadata = 'undefined';transformers.models.flava.modeling_flava.FlavaForPreTrainingOutput or tuple(torch.FloatTensor)
参数
-
input_ids_masked
(形状为(batch_size, text_seq_len)
的torch.LongTensor
)— 词汇表中输入序列标记的索引。这些是原始任务的掩盖版本,用于 MLM。索引可以使用 AutoTokenizer 以及DataCollatorForMaskedLanguageModeling
获取。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。什么是输入 ID? -
input_ids
(形状为(batch_size, text_seq_len)
的torch.LongTensor
)— 词汇表中输入序列标记的索引。索引可以使用 AutoTokenizer 获取。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。什么是输入 ID? -
token_type_ids
(形状为(batch_size, text_seq_len)
的torch.LongTensor
,可选)— 段标记索引,用于指示输入的第一部分和第二部分。索引在[0, 1]
中选择:-
0 对应于句子 A标记,
-
1 对应于句子 B标记。什么是标记类型 ID?
-
-
pixel_values
(形状为(batch_size, num_channels, height, width)
的torch.FloatTensor
)— 像素值。像素值可以使用 AutoImageProcessor 获取。有关详细信息,请参阅 FlavaImageProcessor.call
()。 -
bool_masked_pos
(形状为(batch_size, image_num_patches)
的torch.BoolTensor
)— 布尔掩码位置。指示哪些补丁被掩盖(1),哪些没有(0)。 -
interpolate_pos_encoding
(布尔值,可选)— 是否插值预训练位置编码。 -
image_attention_mask
(形状为(batch_size, image_num_patches)
的torch.FloatTensor
,可选)— 用于避免特定于图像的填充令牌索引执行注意力的掩码。掩码值在[0, 1]
中选择:-
1 表示
未被掩盖
的标记, -
0 表示被
掩盖
的标记。什么是注意力掩码?
-
-
skip_unmasked_multimodal_encoder
(布尔值,可选)— 跳过未掩盖输入的多模态编码器的任何计算。FLAVA 预训练目前不需要未掩盖的多模态嵌入或输出。 -
mlm_labels
(形状为(batch_size, text_seq_len)
的torch.LongTensor
,可选)— 用于计算从左到右的语言和多模态掩码建模损失(下一个词预测)的标签。索引应在[-100, 0, ..., text_config.vocab_size - 1]
中(参见input_ids
文档字符串)。索引设置为-100
的标记将被忽略(掩盖),损失仅计算具有标签在[0, ..., text_config.vocab_size - 1]
中的标记。 -
mim_labels
(形状为(batch_size, image_num_patches)
的torch.LongTensor
,可选)- 用于计算图像和多模态掩码建模损失的标签。索引应在[-100, 0, ..., image_config.vocab_size - 1]
中。将索引设置为-100
的标记将被忽略(masked),仅对具有标签在[0, ..., image_config.vocab_size - 1]
中的标记计算损失。如果未传递,则它们将使用分配给模型的图像码书自动生成。默认情况下,它使用 FlavaImageCodebook。请参阅 FlavaImageCodebook 以了解如何生成 mim_labels。 -
itm_labels
(形状为(batch_size, 1)
的torch.LongTensor
,可选)- 用于计算图像文本匹配损失的标签。0 表示配对不匹配,1 表示匹配。标签为 0 的配对也将被跳过用于计算 MMM 和全局对比损失。 -
return_loss
(bool
,可选,默认为 None)- 是否返回计算的损失。 -
attention_mask
(形状为(batch_size, text_seq_len)
的torch.FloatTensor
,可选)- 用于避免在填充标记索引上执行注意力的掩码。掩码值选定在[0, 1]
中:-
1 表示未被
masked
的标记, -
0 表示被
masked
的标记。什么是注意力掩码?
-
-
head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选)- 用于使自注意力模块的选定头部失效的掩码。掩码值选定在[0, 1]
中:-
1 表示头部未被
masked
, -
0 表示头部是
masked
。
-
-
output_attentions
(bool
,可选)- 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。 -
output_hidden_states
(bool
,可选)- 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。 -
return_dict
(bool
,可选)- 是否返回 ModelOutput 而不是普通元组。示例 -
返回
transformers.models.flava.modeling_flava.FlavaForPreTrainingOutput
或tuple(torch.FloatTensor)
一个transformers.models.flava.modeling_flava.FlavaForPreTrainingOutput
或一个torch.FloatTensor
元组(如果传递了return_dict=False
或当config.return_dict=False
时)包括根据配置(<class 'transformers.models.flava.configuration_flava.FlavaConfig'>
)和输入的不同元素。
-
loss
(torch.FloatTensor
,可选,当return_loss
为 True 时返回)- 为此模型计算的总损失。 -
loss_info
(FlavaLosses
)- FLAVA 预训练损失的详细信息。检查FlavaLosses
类描述以获取关键信息。 -
image_embeddings
(形状为(batch_size, output_dim)
的torch.FloatTensor
,可选,当存在pixel_values
时返回)- 这些基本上是 FlavaImageModel 的汇总输出的图像嵌入。 -
image_output
(BaseModelOutputWithPooling
,可选,当存在pixel_values
时返回)- FlavaImageModel 的输出。 -
text_embeddings
(形状为(batch_size, output_dim)
的torch.FloatTensor
,可选,当存在input_ids
时返回)- 这些基本上是 FlavaTextModel 的汇总输出的文本嵌入。 -
text_output
(BaseModelOutputWithPooling
,可选,当存在input_ids
时返回)- FlavaTextModel 的输出。 -
multimodal_embeddings
(torch.FloatTensor
,形状为(batch_size, output_dim)
,可选,当input_ids
和pixel_values
存在且skip_unmasked_multimodal_encoder
为None
或False
时返回)- 这些多模态嵌入基本上是 FlavaTextModel 的汇总输出。 -
multimodal_output
(BaseModelOutputWithPooling
,当input_ids
和pixel_values
存在且skip_unmasked_multimodal_encoder
为None
或False
时返回)- FlavaMultimodalModel 的输出。 -
image_masked_embeddings
(torch.FloatTensor
,形状为(batch_size, output_dim)
,可选,当pixel_values
存在时返回)- 这些图像嵌入基本上是 FlavaImageModel 的汇总输出。使用bool_masked_pos
来创建被屏蔽的图像。 -
image_masked_output
(BaseModelOutputWithPooling
,可选,当pixel_values
存在时返回)- FlavaImageModel 的输出。使用bool_masked_pos
来创建被屏蔽的图像。 -
text_masked_embeddings
(torch.FloatTensor
,形状为(batch_size, output_dim)
,可选,当input_ids_masked
存在时返回)- 这些文本嵌入基本上是 FlavaTextModel 的汇总输出。 -
text_masked_output
(BaseModelOutputWithPooling
,可选,当input_ids_masked
存在时返回)- FlavaTextModel 的输出。 -
multimodal_masked_embeddings
(torch.FloatTensor
,形状为(batch_size, output_dim)
,可选,当input_ids
和pixel_values
存在时返回)- 这些多模态嵌入基本上是 FlavaTextModel 的汇总输出。 -
multimodal_masked_output
(BaseModelOutputWithPooling
,当input_ids_masked
和pixel_values
存在时返回)- FlavaMultimodalModel 的输出。 -
mim_logits
(torch.FloatTensor
,形状为(batch_size, num_image_patches, image_vocab_size)
或形状为(total_masked_patches, image_vocab_size)
,可选,当pixel_values
存在且input_ids_masked
不存在时返回)- MIM 单模态损失的 logits。使用book_masked_pos
来获取被屏蔽的补丁。当bool_masked_pos
中有一些补丁被屏蔽时,返回扁平化的输出。 -
mlm_logits
(torch.FloatTensor
,形状为(batch_size, text_seq_length, text_vocab_size)
或形状为(total_masked_seq_length, text_vocab_size)
,可选,当input_ids_masked
存在且pixel_values
不存在时返回)- MLM 单模态损失的 logits。当input_ids_masked
中有一些标记被屏蔽时,返回扁平化的输出。 -
itm_logits
(torch.FloatTensor
,形状为(batch_size, 2)
,可选,当input_ids_masked
和pixel_values
存在时返回)- ITM 损失的 logits。请注意,ITM 损失是在 FLAVA 中对被屏蔽的配对进行计算的。 -
mmm_image_logits
(torch.FloatTensor
,形状为(batch_size, num_image_patches, image_vocab_size)
或形状为(total_masked_patches, image_vocab_size)
,可选,当pixel_values
和input_ids_masked
存在时返回)- MMM 图像多模态损失的 logits。使用book_masked_pos
来获取被屏蔽的补丁。当bool_masked_pos
中有一些补丁被屏蔽时,返回扁平化的输出。 -
mmm_text_logits
(形状为(batch_size, text_seq_length, text_vocab_size)
或形状为(total_masked_seq_length, text_vocab_size)
的torch.FloatTensor
,可选,当pixel_values
和input_ids_masked
存在时返回)- 用于 MMM 文本多模态损失的 logits。当input_ids_masked
中有一些标记被屏蔽时,返回扁平化的输出。 -
contrastive_logits_per_image
(形状为(image_batch_size, text_batch_size)
的torch.FloatTensor
)-image_embeddings
和text_embeddings
之间的缩放点积分数,但分别通过 FLAVA 的image_projection
和text_projection
层。这代表了图像文本相似性得分。这是在未屏蔽的图像和文本上计算的。 -
contrastive_logits_per_text
(形状为(text_batch_size, image_batch_size)
的torch.FloatTensor
)-text_embeddings
和image_embeddings
之间的缩放点积分数,但分别通过 FLAVA 的text_projection
和image_projection
层。这是在未屏蔽的图像和文本上计算的。
FlavaForPreTraining 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行前处理和后处理步骤,而后者会默默地忽略它们。
FlavaModel
class transformers.FlavaModel
( config: FlavaConfig )
参数
config
(FlavaConfig)- 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
裸的 FLAVA 模型变压器输出原始隐藏状态,没有特定的头部。这个模型是 PyTorch 的torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有事项。
forward
( input_ids: Optional = None pixel_values: Optional = None attention_mask: Optional = None token_type_ids: Optional = None bool_masked_pos: Optional = None position_ids: Optional = None image_attention_mask: Optional = None skip_multimodal_encoder: Optional = None output_attentions: Optional = None output_hidden_states: bool = True return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.flava.modeling_flava.FlavaModelOutput or tuple(torch.FloatTensor)
参数
-
pixel_values
(形状为(batch_size, num_channels, height, width)
的torch.FloatTensor
)- 像素值。像素值可以使用 AutoImageProcessor 获取。有关详细信息,请参阅 FlavaImageProcessor.call
()。 -
bool_masked_pos
(形状为(batch_size, image_num_patches)
的torch.BoolTensor
)- 布尔掩码位置。指示哪些补丁被屏蔽(1),哪些没有(0)。 -
interpolate_pos_encoding
(bool
,可选)- 是否插值预训练位置编码。 -
input_ids
(形状为(batch_size, image_num_patches + text_seq_len)
的torch.LongTensor
)- 词汇表中输入序列标记的索引。索引可以使用 AutoTokenizer 获取。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。什么是输入 ID? -
token_type_ids
(torch.LongTensor
,形状为(batch_size, image_num_patches + text_seq_len)
,可选) — 段令牌索引,指示输入的第一部分和第二部分。 索引在[0, 1]
中选择:-
0 对应于 句子 A 令牌,
-
1 对应于 句子 B 令牌。 什么是令牌类型 ID?
-
-
attention_mask
(torch.FloatTensor
,形状为(batch_size, image_num_patches + text_seq_len)
,可选) — 用于避免在填充令牌索引上执行注意力的掩码。 选择的掩码值为[0, 1]
:-
1 表示未被“掩盖”的令牌。
-
0 表示被“掩盖”的令牌。 什么是注意力掩码?
-
-
head_mask
(torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 用于使自注意力模块的选定头部无效的掩码。 选择的掩码值在[0, 1]
中:-
1 表示头部未被“掩盖”,
-
0 表示头部被“掩盖”。
-
-
output_attentions
(bool
,可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。 -
output_hidden_states
(bool
,可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。 -
return_dict
(bool
,可选) — 是否返回 ModelOutput 而不是普通元组。 -
skip_multimodal_encoder
(bool,可选) — 跳过多模态编码的任何计算。 如果不打算使用多模态编码,则此选项很有用。
返回
transformers.models.flava.modeling_flava.FlavaModelOutput
或 tuple(torch.FloatTensor)
一个 transformers.models.flava.modeling_flava.FlavaModelOutput
或一个 torch.FloatTensor
元组(如果传递了 return_dict=False
或当 config.return_dict=False
时),包括根据配置 (<class 'transformers.models.flava.configuration_flava.FlavaConfig'>
) 和输入而异的各种元素。
-
image_embeddings
(torch.FloatTensor
,形状为(batch_size, output_dim)
,可选,当pixel_values
存在时返回) — 基本上是 FlavaImageModel 的汇总输出的图像嵌入。 -
image_output
(BaseModelOutputWithPooling
,可选,当pixel_values
存在时返回) — FlavaImageModel 的输出。 -
text_embeddings
(torch.FloatTensor
,形状为(batch_size, output_dim)
,可选,当input_ids
存在时返回) — 基本上是 FlavaTextModel 的汇总输出的文本嵌入。 -
text_output
(BaseModelOutputWithPooling
,可选,当input_ids
存在时返回) — FlavaTextModel 的输出。 -
multimodal_embeddings
(torch.FloatTensor
,形状为(batch_size, output_dim)
,可选,当input_ids
和pixel_values
存在且skip_multimodal_encoder
为None
或False
时返回) — 基本上是 FlavaTextModel 的汇总输出的多模态嵌入。 -
multimodal_output
(BaseModelOutputWithPooling
,当input_ids
和pixel_values
存在且skip_multimodal_encoder
为None
或False
时返回) — FlavaMultimodalModel 的输出。
FlavaModel 的前向方法,覆盖了 __call__
特殊方法。
尽管前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, FlavaModel
>>> model = FlavaModel.from_pretrained("facebook/flava-full")
>>> processor = AutoProcessor.from_pretrained("facebook/flava-full")
>>> 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"], images=image, return_tensors="pt", padding=True)
>>> outputs = model(**inputs)
>>> image_embeddings = outputs.image_embeddings
>>> text_embeddings = outputs.text_embeddings
>>> multimodal_embeddings = outputs.multimodal_embeddings
>>> outputs.image_embeddings.shape
torch.Size([1, 197, 768])
>>> text_embeddings.shape
torch.Size([1, 7, 768])
>>> multimodal_embeddings.shape
torch.Size([1, 205, 768])
get_text_features
( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None )
参数
-
input_ids
(形状为(batch_size, text_seq_length)
的torch.LongTensor
)— 输入序列标记在词汇表中的索引。可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。什么是输入 ID? -
token_type_ids
(形状为(batch_size, text_seq_length)
的torch.LongTensor
,可选)— 段标记索引,指示输入的第一部分和第二部分。索引选择在[0, 1]
中:-
0 对应于句子 A标记,
-
1 对应于句子 B标记。什么是标记类型 ID?
-
-
attention_mask
(形状为(batch_size, text_seq_length)
的torch.FloatTensor
,可选)— 用于避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
之间:-
1 表示未被“masked”的标记,
-
对于被
masked
掉的标记,值为 0。什么是注意力掩码?
-
-
head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选)— 用于使自注意力模块的选定头部失效的掩码。掩码值选择在[0, 1]
中:-
1 表示头部未被“masked”,
-
0 表示头部被
masked
。
-
-
output_attentions
(bool
,可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回的张量下的attentions
。 -
output_hidden_states
(bool
,可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回的张量下的hidden_states
。 -
return_dict
(bool
,可选)— 是否返回 ModelOutput 而不是普通元组。
FlavaModel 的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
get_image_features
( pixel_values: Optional = None bool_masked_pos: Optional = None interpolate_pos_encoding: Optional = None attention_mask: Optional = None head_mask: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None )
参数
-
pixel_values
(形状为(batch_size, num_channels, height, width)
的torch.FloatTensor
)— 像素值。像素值可以使用 AutoImageProcessor 获取。有关详细信息,请参阅 FlavaImageProcessor.call
()。 -
bool_masked_pos
(形状为(batch_size, image_num_patches)
的torch.BoolTensor
)— 布尔掩码位置。指示哪些补丁被掩盖(1),哪些没有(0)。 -
interpolate_pos_encoding
(bool
,可选)— 是否插值预训练位置编码。 -
attention_mask
(形状为(batch_size, image_num_patches)
的torch.FloatTensor
,可选)— 用于避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
之间:-
1 表示未被“masked”的标记,
-
对于被
masked
掉的标记,值为 0。什么是注意力掩码?
-
-
head_mask
(torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于使自注意力模块中选择的头部失效的掩码。掩码值选在[0, 1]
之间:-
1 表示头部
未被掩盖
, -
0 表示头部
被掩盖
。
-
-
output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。 -
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。 -
return_dict
(bool
, optional) — 是否返回 ModelOutput 而不是普通元组。
FlavaModel 的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
FlavaImageCodebook
class transformers.FlavaImageCodebook
( config: FlavaImageCodebookConfig **kwargs: Any )
参数
config
(FlavaImageCodebookConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
FLAVA 的图像代码簿模型受到 DALL-E 原始编码器的启发。输出原始隐藏状态,可用于根据 DALL-E 的词汇为基于图像的 MIM 生成图像标记。用于为 MIM 生成图像的图像标记,请使用get_codebook_indices
。
此模型是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有事项。
forward
( pixel_values: FloatTensor )
get_codebook_indices
( pixel_values: Tensor )
get_codebook_probs
( pixel_values: Tensor )
FlavaTextModel
class transformers.FlavaTextModel
( config: FlavaTextConfig add_pooling_layer: bool = True )
参数
config
(FlavaTextConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
裸的 FLAVA 文本模型变压器输出原始隐藏状态,没有特定的头部。此模型是 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 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
(torch.LongTensor
of shape(batch_size, text_seq_length)
) — Indices of input sequence tokens in the vocabulary. Indices can be obtained using AutoTokenizer. See PreTrainedTokenizer.encode() and PreTrainedTokenizer.call
() for details. What are input IDs? -
token_type_ids
(torch.LongTensor
of shape(batch_size, text_seq_length)
, optional) — 段标记索引,用于指示输入的第一部分和第二部分。索引选定在[0, 1]
之间:-
0 对应于句子 A标记。
-
1 对应于句子 B标记。什么是标记类型 ID?
-
-
attention_mask
(torch.FloatTensor
of shape(batch_size, text_seq_length)
, optional) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选定在[0, 1]
之间:-
1 表示未被掩盖的标记,
-
0 表示被掩盖的标记。什么是注意力掩码?
-
-
head_mask
(torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于使自注意力模块中的选定头部失效的掩码。掩码值选定在[0, 1]
之间:-
1 表示头部未被掩盖,
-
0 表示头部被掩盖。
-
-
output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量中的attentions
。 -
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states
。 -
return_dict
(bool
, optional) — 是否返回 ModelOutput 而不是普通元组。
返回
transformers.modeling_outputs.BaseModelOutputWithPooling 或tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.BaseModelOutputWithPooling 或一个torch.FloatTensor
的元组(如果传递return_dict=False
或当config.return_dict=False
时),包括根据配置(FlavaTextConfig)和输入的不同元素。
-
last_hidden_state
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
) — 模型最后一层的隐藏状态的序列。 -
pooler_output
(torch.FloatTensor
of shape(batch_size, hidden_size)
) — Last layer hidden-state of the first token of the sequence (classification token) after further processing through the layers used for the auxiliary pretraining task. E.g. for BERT-family of models, this returns the classification token after processing through a linear layer and a tanh activation function. The linear layer weights are trained from the next sentence prediction (classification) objective during pretraining. -
hidden_states
(tuple(torch.FloatTensor)
, optional, returned whenoutput_hidden_states=True
is passed or whenconfig.output_hidden_states=True
) — Tuple oftorch.FloatTensor
(one for the output of the embeddings, if the model has an embedding layer, + one for the output of each layer) of shape(batch_size, sequence_length, hidden_size)
。模型每一层的隐藏状态以及可选的初始嵌入输出。
-
attentions
(tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或当config.output_attentions=True
时返回)— 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
FlavaTextModel 的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoTokenizer, FlavaTextModel
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/flava-full")
>>> model = FlavaTextModel.from_pretrained("facebook/flava-full")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
FlavaImageModel
class transformers.FlavaImageModel
( config: FlavaImageConfig add_pooling_layer: bool = True )
参数
config
(FlavaImageConfig)— 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
裸的 FLAVA 图像模型变换器输出没有特定头部的原始隐藏状态。此模型是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
( pixel_values: Optional = None bool_masked_pos: Optional = None interpolate_pos_encoding: Optional = None attention_mask: Optional = None head_mask: 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
(形状为(batch_size, num_channels, height, width)
的torch.FloatTensor
)— 像素值。像素值可以使用 AutoImageProcessor 获取。有关详细信息,请参阅 FlavaImageProcessor.call
()。 -
bool_masked_pos
(形状为(batch_size, image_num_patches)
的torch.BoolTensor
)— 布尔掩码位置。指示哪些补丁被掩盖(1),哪些没有(0)。 -
interpolate_pos_encoding
(bool
,可选)— 是否插值预训练位置编码。 -
attention_mask
(torch.FloatTensor
,形状为(batch_size, image_num_patches)
,可选)— 用于避免在填充令牌索引上执行注意力的掩码。掩码值选定在[0, 1]
之间:-
1 表示未被
masked
的令牌, -
0 表示被
masked
的令牌。什么是注意力掩码?
-
-
head_mask
(torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
,可选)— 用于使自注意力模块中的选定头部失效的掩码。掩码值选定在[0, 1]
之间:-
1 表示头部未被
masked
。 -
0 表示头部被
masked
。
-
-
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
)包含各种元素,具体取决于配置(FlavaImageConfig)和输入。
-
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
时返回)— 形状为(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 之后的注意力权重,用于计算自注意力头中的加权平均值。
FlavaImageModel 的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。
示例:
>>> from transformers import AutoImageProcessor, FlavaImageModel
>>> import torch
>>> from datasets import load_dataset
>>> dataset = load_dataset("huggingface/cats-image")
>>> image = dataset["test"]["image"][0]
>>> image_processor = AutoImageProcessor.from_pretrained("facebook/flava-full")
>>> model = FlavaImageModel.from_pretrained("facebook/flava-full")
>>> inputs = image_processor(image, return_tensors="pt")
>>> with torch.no_grad():
... outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 197, 768]
FlavaMultimodalModel
class transformers.FlavaMultimodalModel
( config: FlavaMultimodalConfig add_pooling_layer = True )
参数
config
(FlavaMultimodalConfig)— 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
裸的 FLAVA 多模型变压器输出原始隐藏状态,没有特定的头部。此模型是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有信息。
forward
( hidden_states: Tensor attention_mask: Optional = None head_mask: 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)
参数
-
hidden_states
(形状为(batch_size, image_num_patches + text_seq_len, hidden_size)
的torch.FloatTensor
)— 单模编码器的连接隐藏状态。 -
attention_mask
(形状为(batch_size, image_num_patches + text_seq_len)
的torch.FloatTensor
,可选)— 用于避免在填充标记索引上执行注意力的掩码。掩码值选在[0, 1]
之间:-
1 表示
未被掩码
的标记, -
对于被
masked
的标记为 0。什么是注意力掩码?
-
-
head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选) — 用于使自注意力模块中选择的头部失效的掩码。在[0, 1]
中选择的掩码值:-
1 表示头部未被
masked
, -
0 表示头部被
masked
。
-
-
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
时)包含根据配置(FlavaMultimodalConfig)和输入而异的各种元素。
-
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
时返回) — 形状为(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 后的注意力权重,用于计算自注意力头中的加权平均值。
FlavaMultimodalModel 的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。
示例:
>>> from transformers import AutoTokenizer, FlavaMultimodalModel
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/flava-full")
>>> model = FlavaMultimodalModel.from_pretrained("facebook/flava-full")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)