Transformers 文档

AltCLIP

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

PyTorch

AltCLIP

AltCLIPCLIP 文本编码器替换为多语言 XLM-R 编码器,并通过教师学习和对比学习对齐图像和文本表示。

您可以在 AltClip 集合中找到所有原始的 AltCLIP 检查点。

点击右侧边栏中的 AltCLIP 模型,查看更多将 AltCLIP 应用于不同任务的示例。

以下示例演示了如何使用 AutoModel 类计算图像与一个或多个标题之间的相似度分数。

自动模型
import torch
import requests
from PIL import Image
from transformers import AltCLIPModel, AltCLIPProcessor

model = AltCLIPModel.from_pretrained("BAAI/AltCLIP", torch_dtype=torch.bfloat16)
processor = AltCLIPProcessor.from_pretrained("BAAI/AltCLIP")

url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
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

labels = ["a photo of a cat", "a photo of a dog"]
for label, prob in zip(labels, probs[0]):
    print(f"{label}: {prob.item():.4f}")

量化通过以较低精度表示权重来减少大型模型的内存负担。有关更多可用量化后端,请参阅量化概述。

以下示例使用torchao仅将权重量化为int4。

# !pip install torchao
import torch
import requests
from PIL import Image
from transformers import AltCLIPModel, AltCLIPProcessor, TorchAoConfig

model = AltCLIPModel.from_pretrained(
    "BAAI/AltCLIP",
    quantization_config=TorchAoConfig("int4_weight_only", group_size=128),
    torch_dtype=torch.bfloat16,
)

processor = AltCLIPProcessor.from_pretrained("BAAI/AltCLIP")

url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
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

labels = ["a photo of a cat", "a photo of a dog"]
for label, prob in zip(labels, probs[0]):
    print(f"{label}: {prob.item():.4f}")

注意事项

AltCLIPConfig

class transformers.AltCLIPConfig

< >

( text_config = None vision_config = None projection_dim = 768 logit_scale_init_value = 2.6592 **kwargs )

参数

  • text_config (dict, 可选) — 用于初始化 AltCLIPTextConfig 的配置选项字典。
  • vision_config (dict, 可选) — 用于初始化 AltCLIPVisionConfig 的配置选项字典。
  • projection_dim (int, 可选, 默认为 768) — 文本和视觉投影层的维度。
  • logit_scale_init_value (float, 可选, 默认为 2.6592) — logit_scale 参数的初始值。默认值按照原始 CLIP 实现使用。
  • kwargs (可选) — 关键字参数字典。

这是用于存储 AltCLIPModel 配置的配置类。它用于根据指定参数实例化 AltCLIP 模型,定义模型架构。使用默认值实例化配置将生成与 AltCLIP BAAI/AltCLIP 架构相似的配置。

配置对象继承自 PretrainedConfig,可用于控制模型输出。有关更多信息,请参阅 PretrainedConfig 文档。

示例

>>> from transformers import AltCLIPConfig, AltCLIPModel

>>> # Initializing a AltCLIPConfig with BAAI/AltCLIP style configuration
>>> configuration = AltCLIPConfig()

>>> # Initializing a AltCLIPModel (with random weights) from the BAAI/AltCLIP style configuration
>>> model = AltCLIPModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

>>> # We can also initialize a AltCLIPConfig from a AltCLIPTextConfig and a AltCLIPVisionConfig

>>> # Initializing a AltCLIPText and AltCLIPVision configuration
>>> config_text = AltCLIPTextConfig()
>>> config_vision = AltCLIPVisionConfig()

>>> config = AltCLIPConfig.from_text_vision_configs(config_text, config_vision)

from_text_vision_configs

< >

( text_config: AltCLIPTextConfig vision_config: AltCLIPVisionConfig **kwargs ) AltCLIPConfig

返回

AltCLIPConfig

一个配置对象的实例

从 altclip 文本模型配置和 altclip 视觉模型配置实例化一个 AltCLIPConfig(或派生类)。

AltCLIPTextConfig

class transformers.AltCLIPTextConfig

< >

( vocab_size = 250002 hidden_size = 1024 num_hidden_layers = 24 num_attention_heads = 16 intermediate_size = 4096 hidden_act = 'gelu' hidden_dropout_prob = 0.1 attention_probs_dropout_prob = 0.1 max_position_embeddings = 514 type_vocab_size = 1 initializer_range = 0.02 initializer_factor = 0.02 layer_norm_eps = 1e-05 pad_token_id = 1 bos_token_id = 0 eos_token_id = 2 position_embedding_type = 'absolute' use_cache = True project_dim = 768 **kwargs )

参数

  • vocab_size (int, 可选, 默认为 250002) — AltCLIP 模型的词汇表大小。定义了调用 AltCLIPTextModel 时传入的 inputs_ids 可以表示的不同标记的数量。
  • hidden_size (int, 可选, 默认为 1024) — 编码器层和池化层的维度。
  • num_hidden_layers (int, 可选, 默认为 24) — Transformer 编码器中的隐藏层数量。
  • num_attention_heads (int, 可选, 默认为 16) — Transformer 编码器中每个注意力层的注意力头数量。
  • intermediate_size (int, 可选, 默认为 4096) — Transformer 编码器中“中间”(通常称为前馈)层的维度。
  • hidden_act (strCallable, 可选, 默认为 "gelu") — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,则支持 "gelu""relu""silu""gelu_new"
  • hidden_dropout_prob (float, 可选, 默认为 0.1) — 嵌入、编码器和池化器中所有全连接层的 dropout 概率。
  • attention_probs_dropout_prob (float, 可选, 默认为 0.1) — 注意力概率的 dropout 比率。
  • max_position_embeddings (int, 可选, 默认为 514) — 此模型可能使用的最大序列长度。通常为了以防万一会将其设置得很大(例如,512、1024 或 2048)。
  • type_vocab_size (int, 可选, 默认为 1) — 调用 AltCLIPTextModel 时传入的 token_type_ids 的词汇表大小
  • initializer_range (float, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。
  • initializer_factor (float, 可选, 默认为 1.0) — 初始化所有权重矩阵的因子(应保持为 1,内部用于初始化测试)。
  • layer_norm_eps (float, 可选, 默认为 1e-05) — 层归一化层使用的 epsilon 值。
  • pad_token_id (int, 可选, 默认为 1) — 填充标记的 ID。
  • bos_token_id (int, 可选, 默认为 0) — 序列开始标记的 ID。
  • eos_token_id (Union[int, list[int]], 可选, 默认为 2) — 序列结束标记的 ID。可选地,使用列表设置多个序列结束标记。
  • 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.) 中的方法 4
  • use_cache (bool, 可选, 默认为 True) — 模型是否应返回最后一个键/值注意力(并非所有模型都使用)。仅在 config.is_decoder=True 时相关。
  • project_dim (int, 可选, 默认为 768) — 映射层之前的教师模型的维度。

这是用于存储 AltCLIPTextModel 配置的配置类。它用于根据指定参数实例化 AltCLIP 文本模型,定义模型架构。使用默认值实例化配置将生成与 AltCLIP BAAI/AltCLIP 架构相似的配置。

配置对象继承自 PretrainedConfig,可用于控制模型输出。有关更多信息,请参阅 PretrainedConfig 文档。

示例

>>> from transformers import AltCLIPTextModel, AltCLIPTextConfig

>>> # Initializing a AltCLIPTextConfig with BAAI/AltCLIP style configuration
>>> configuration = AltCLIPTextConfig()

>>> # Initializing a AltCLIPTextModel (with random weights) from the BAAI/AltCLIP style configuration
>>> model = AltCLIPTextModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

AltCLIPVisionConfig

class transformers.AltCLIPVisionConfig

< >

( 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 (strfunction, 可选, 默认为 "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,内部用于初始化测试)。

这是用于存储 AltCLIPModel 配置的配置类。它用于根据指定参数实例化 AltCLIP 模型,定义模型架构。使用默认值实例化配置将生成与 AltCLIP BAAI/AltCLIP 架构相似的配置。

配置对象继承自 PretrainedConfig,可用于控制模型输出。有关更多信息,请参阅 PretrainedConfig 文档。

示例

>>> from transformers import AltCLIPVisionConfig, AltCLIPVisionModel

>>> # Initializing a AltCLIPVisionConfig with BAAI/AltCLIP style configuration
>>> configuration = AltCLIPVisionConfig()

>>> # Initializing a AltCLIPVisionModel (with random weights) from the BAAI/AltCLIP style configuration
>>> model = AltCLIPVisionModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

AltCLIPModel

class transformers.AltCLIPModel

< >

( config: AltCLIPConfig )

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = None pixel_values: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.LongTensor] = None token_type_ids: typing.Optional[torch.Tensor] = None return_loss: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None interpolate_pos_encoding: bool = False return_dict: typing.Optional[bool] = None ) transformers.models.altclip.modeling_altclip.AltCLIPOutputtuple(torch.FloatTensor)

参数

  • input_ids (形状为 (batch_size, sequence_length)torch.LongTensor, 可选) — 词汇表中输入序列 token 的索引。默认情况下会忽略填充。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什么是 input ID?

  • pixel_values (形状为 (batch_size, num_channels, image_size, image_size)torch.FloatTensor, 可选) — 与输入图像对应的张量。可以使用 {image_processor_class} 获取像素值。有关详细信息,请参阅 {image_processor_class}.__call__{processor_class} 使用 {image_processor_class} 处理图像)。
  • attention_mask (形状为 (batch_size, sequence_length)torch.Tensor, 可选) — 用于避免对填充 token 索引执行注意力的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示 未被掩盖 的 token,
    • 0 表示 被掩盖 的 token。

    什么是注意力掩码?

  • position_ids (形状为 (batch_size, sequence_length)torch.LongTensor, 可选) — 每个输入序列 token 在位置嵌入中的位置索引。选择范围为 [0, config.n_positions - 1]

    什么是位置 ID?

  • token_type_ids (形状为 (batch_size, sequence_length)torch.Tensor, 可选) — 分段 token 索引,用于指示输入的第一个和第二个部分。索引在 [0, 1] 中选择:

    • 0 对应于 句子 A token,
    • 1 对应于 句子 B token。

    什么是 token 类型 ID?

  • return_loss (bool, 可选) — 是否返回对比损失。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回张量中的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量中的 hidden_states
  • interpolate_pos_encoding (bool, 默认为 False) — 是否对预训练的位置编码进行插值。
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。

返回

transformers.models.altclip.modeling_altclip.AltCLIPOutputtuple(torch.FloatTensor)

一个 transformers.models.altclip.modeling_altclip.AltCLIPOutput 或一个 torch.FloatTensor 元组(如果传递 return_dict=False 或当 config.return_dict=False 时),包含根据配置(AltCLIPConfig)和输入的不同元素。

  • loss (torch.FloatTensor,形状为 (1,), 可选, 当 return_lossTrue 时返回) — 图像-文本相似度的对比损失。
  • logits_per_image (形状为 (image_batch_size, text_batch_size)torch.FloatTensor) — image_embedstext_embeds 之间的缩放点积分数。这表示图像-文本相似度分数。
  • logits_per_text (形状为 (text_batch_size, image_batch_size)torch.FloatTensor) — text_embedsimage_embeds 之间的缩放点积分数。这表示文本-图像相似度分数。
  • text_embeds (形状为 (batch_size, output_dim) 的 torch.FloatTensor) — 通过对 AltCLIPTextModel 的池化输出应用投影层获得的文本嵌入。
  • image_embeds (形状为 (batch_size, output_dim) 的 torch.FloatTensor) — 通过对 AltCLIPVisionModel 的池化输出应用投影层获得的图像嵌入。
  • text_model_output (<class '~modeling_outputs.BaseModelOutputWithPooling'>.text_model_output, 默认为 None) — AltCLIPTextModel 的输出。
  • vision_model_output (<class '~modeling_outputs.BaseModelOutputWithPooling'>.vision_model_output, 默认为 None) — AltCLIPVisionModel 的输出。

AltCLIPModel 的 forward 方法,重写了 __call__ 特殊方法。

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

示例

>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, AltCLIPModel

>>> model = AltCLIPModel.from_pretrained("BAAI/AltCLIP")
>>> processor = AutoProcessor.from_pretrained("BAAI/AltCLIP")
>>> 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_image_features

< >

( pixel_values: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None interpolate_pos_encoding: bool = False return_dict: typing.Optional[bool] = None ) image_features (形状为 (batch_size, output_dim) 的 torch.FloatTensor)

参数

  • pixel_values (形状为 (batch_size, num_channels, image_size, image_size)torch.FloatTensor, 可选) — 与输入图像对应的张量。可以使用 {image_processor_class} 获取像素值。有关详细信息,请参阅 {image_processor_class}.__call__{processor_class} 使用 {image_processor_class} 处理图像)。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回张量中的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量中的 hidden_states
  • interpolate_pos_encoding (bool, 默认为 False) — 是否对预训练的位置编码进行插值。
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。

返回

image_features (torch.FloatTensor, 形状为 (batch_size, output_dim)

通过对 AltCLIPVisionModel 的池化输出应用投影层获得的图像嵌入。

示例

>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, AltCLIPModel

>>> model = AltCLIPModel.from_pretrained("BAAI/AltCLIP")
>>> processor = AutoProcessor.from_pretrained("BAAI/AltCLIP")
>>> 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)

get_text_features

< >

( input_ids: typing.Optional[torch.Tensor] = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.Tensor] = None token_type_ids = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) text_features (形状为 (batch_size, output_dim) 的 torch.FloatTensor)

参数

  • input_ids (形状为 (batch_size, sequence_length)torch.Tensor, 可选) — 词汇表中输入序列 token 的索引。默认情况下会忽略填充。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什么是 input ID?

  • attention_mask (形状为 (batch_size, sequence_length)torch.Tensor, 可选) — 用于避免对填充 token 索引执行注意力的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示 未被掩盖 的 token,
    • 0 表示 被掩盖 的 token。

    什么是注意力掩码?

  • position_ids (形状为 (batch_size, sequence_length)torch.Tensor, 可选) — 每个输入序列 token 在位置嵌入中的位置索引。选择范围为 [0, config.n_positions - 1]

    什么是位置 ID?

  • token_type_ids (形状为 (batch_size, sequence_length) 的 ``) -- 分段 token 索引,用于指示输入的第一个和第二个部分。索引在 [0, 1] 中选择:

    • 0 对应于 句子 A token,
    • 1 对应于 句子 B token。

    什么是 token 类型 ID?

  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回张量中的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量中的 hidden_states
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。

返回

text_features (torch.FloatTensor, 形状为 (batch_size, output_dim)

通过对 AltCLIPTextModel 的池化输出应用投影层获得的文本嵌入。

示例

>>> from transformers import AutoProcessor, AltCLIPModel

>>> model = AltCLIPModel.from_pretrained("BAAI/AltCLIP")
>>> processor = AutoProcessor.from_pretrained("BAAI/AltCLIP")
>>> inputs = processor(text=["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="pt")
>>> text_features = model.get_text_features(**inputs)

AltCLIPTextModel

class transformers.AltCLIPTextModel

< >

( config )

forward

< >

( input_ids: typing.Optional[torch.Tensor] = None attention_mask: typing.Optional[torch.Tensor] = None token_type_ids: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.Tensor] = None inputs_embeds: typing.Optional[torch.Tensor] = None encoder_hidden_states: typing.Optional[torch.Tensor] = None encoder_attention_mask: typing.Optional[torch.Tensor] = None output_attentions: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None ) transformers.modeling_outputs.BaseModelOutputWithPoolingAndProjectiontuple(torch.FloatTensor)

参数

  • input_ids (形状为 (batch_size, sequence_length)torch.Tensor, 可选) — 词汇表中输入序列 token 的索引。默认情况下会忽略填充。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什么是 input ID?

  • attention_mask (形状为 (batch_size, sequence_length)torch.Tensor, 可选) — 用于避免对填充 token 索引执行注意力的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示 未被掩盖 的 token,
    • 0 表示 被掩盖 的 token。

    什么是注意力掩码?

  • token_type_ids (形状为 (batch_size, sequence_length)torch.Tensor, 可选) — 分段 token 索引,用于指示输入的第一个和第二个部分。索引在 [0, 1] 中选择:

    • 0 对应于 句子 A token,
    • 1 对应于 句子 B token。

    什么是 token 类型 ID?

  • position_ids (形状为 (batch_size, sequence_length)torch.Tensor, 可选) — 每个输入序列 token 在位置嵌入中的位置索引。选择范围为 [0, config.n_positions - 1]

    什么是位置 ID?

  • head_mask (形状为 (num_heads,)(num_layers, num_heads)torch.Tensor, 可选) — 用于将自注意力模块的选定头部置零的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示头部 未被掩盖
    • 0 表示头部 被掩盖
  • inputs_embeds (形状为 (batch_size, sequence_length, hidden_size)torch.Tensor, 可选) — 可选地,你可以选择直接传递嵌入表示,而不是传递 input_ids。如果你想对如何将 input_ids 索引转换为关联向量拥有比模型内部嵌入查找矩阵更多的控制权,这会很有用。
  • encoder_hidden_states (形状为 (batch_size, sequence_length, hidden_size)torch.Tensor, 可选) — 编码器最后一层输出的隐藏状态序列。如果模型配置为解码器,则在交叉注意力中使用。
  • encoder_attention_mask (形状为 (batch_size, sequence_length)torch.Tensor, 可选) — 用于避免对编码器输入填充 token 索引执行注意力的掩码。如果模型配置为解码器,则此掩码用于交叉注意力。掩码值在 [0, 1] 中选择:

    • 1 表示 未被掩盖 的 token,
    • 0 表示 被掩盖 的 token。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回张量中的 attentions
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量中的 hidden_states

返回

transformers.modeling_outputs.BaseModelOutputWithPoolingAndProjectiontuple(torch.FloatTensor)

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

  • last_hidden_state (torch.FloatTensor, 形状为 (batch_size, sequence_length, hidden_size)) — 模型最后一层输出的隐藏状态序列。

  • pooler_output (形状为 (batch_size, hidden_size)torch.FloatTensor) — 序列第一个 token(分类 token)的最后一层隐藏状态,经过辅助预训练任务所用层的进一步处理后得到。例如,对于 BERT 系列模型,这表示分类 token 在经过线性层和 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 后的注意力权重,用于计算自注意力头中的加权平均值。

  • projection_state (tuple(torch.FloatTensor), 当传递 output_attentions=True 或当 config.output_attentions=True 时返回) — 形状为 (batch_size,config.project_dim)torch.FloatTensor 元组。

    投影层之前的文本嵌入,用于模拟教师编码器的最后一个隐藏状态。

AltCLIPTextModel 的 forward 方法,重写了 __call__ 特殊方法。

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

示例

>>> from transformers import AutoProcessor, AltCLIPTextModel

>>> model = AltCLIPTextModel.from_pretrained("BAAI/AltCLIP")
>>> processor = AutoProcessor.from_pretrained("BAAI/AltCLIP")

>>> texts = ["it's a cat", "it's a dog"]

>>> inputs = processor(text=texts, padding=True, return_tensors="pt")

>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> pooled_output = outputs.pooler_output  # pooled CLS states

AltCLIPVisionModel

class transformers.AltCLIPVisionModel

< >

( config: AltCLIPVisionConfig )

forward

< >

( pixel_values: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None interpolate_pos_encoding: bool = False return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.BaseModelOutputWithPoolingtuple(torch.FloatTensor)

参数

  • pixel_values (torch.FloatTensor, 形状为 (batch_size, num_channels, image_size, image_size), 可选) — 对应输入图像的张量。像素值可以使用 {image_processor_class} 获取。有关详细信息,请参见 {image_processor_class}.__call__{processor_class} 使用 {image_processor_class} 处理图像)。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。更多详细信息请参见返回张量中的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。更多详细信息请参见返回张量中的 hidden_states
  • interpolate_pos_encoding (bool, 默认为 False) — 是否插值预训练的位置编码。
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通的元组。

返回

transformers.modeling_outputs.BaseModelOutputWithPoolingtuple(torch.FloatTensor)

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

  • last_hidden_state (torch.FloatTensor, 形状为 (batch_size, sequence_length, hidden_size)) — 模型最后一层输出的隐藏状态序列。

  • pooler_output (形状为 (batch_size, hidden_size)torch.FloatTensor) — 序列第一个 token(分类 token)的最后一层隐藏状态,经过辅助预训练任务所用层的进一步处理后得到。例如,对于 BERT 系列模型,这表示分类 token 在经过线性层和 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 后的注意力权重,用于计算自注意力头中的加权平均值。

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

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

示例

>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, AltCLIPVisionModel

>>> model = AltCLIPVisionModel.from_pretrained("BAAI/AltCLIP")
>>> processor = AutoProcessor.from_pretrained("BAAI/AltCLIP")

>>> 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

AltCLIPProcessor

class transformers.AltCLIPProcessor

< >

( image_processor = None tokenizer = None )

参数

构造一个 AltCLIP 处理器,它将 CLIP 图像处理器和 XLM-Roberta 分词器封装到一个单一的处理器中。

AltCLIPProcessor 提供了 CLIPImageProcessorXLMRobertaTokenizerFast 的所有功能。有关更多信息,请参阅 __call__()decode()

batch_decode

< >

( *args **kwargs )

此方法将其所有参数转发到 XLMRobertaTokenizerFast 的 batch_decode()。有关更多信息,请参阅此方法的文档字符串。

decode

< >

( *args **kwargs )

此方法将其所有参数转发到 XLMRobertaTokenizerFast 的 decode()。有关更多信息,请参阅此方法的文档字符串。

< > 在 GitHub 上更新