Transformers 文档
AIMv2
并获得增强的文档体验
开始使用
该模型于 2024 年 11 月 21 日在 HF papers 上发表,并于 2025 年 7 月 8 日贡献给 Hugging Face Transformers。
AIMv2
概述
AIMv2 模型由 Enrico Fini、Mustafa Shukor、Xiujun Li、Philipp Dufter、Michal Klein、David Haldimann、Sai Aitharaju、Victor Guilherme Turrisi da Costa、Louis Béthune、Zhe Gan、Alexander T Toshev、Marcin Eichner、Moin Nabi、Yinfei Yang、Joshua M. Susskind 和 Alaaeldin El-Nouby 在多模态自回归视觉编码器预训练 (Multimodal Autoregressive Pre-training of Large Vision Encoders) 一文中提出。
论文摘要如下:
我们提出了一种用于大规模视觉编码器预训练的新型方法。基于近期视觉模型自回归预训练的进展,我们将此框架扩展到多模态场景(即图像和文本)。在本文中,我们介绍了 AIMV2,这是一个通用的视觉编码器系列,其特点是预训练过程简单、可扩展性强,并在各种下游任务中表现优异。这是通过将视觉编码器与多模态解码器配对,自回归地生成原始图像块和文本标记来实现的。我们的编码器不仅在多模态评估中表现出色,在定位、接地和分类等视觉基准测试中也表现优异。值得注意的是,我们的 AIMV2-3B 编码器在冻结主干的情况下,在 ImageNet-1k 上达到了 89.5% 的准确率。此外,在各种场景下的多模态图像理解方面,AIMV2 的表现持续优于最先进的对比学习模型(如 CLIP、SigLIP)。
该模型由 Yaswanth Gali 贡献。原始代码可以在 这里 找到。
用法示例
以下是使用特定检查点(checkpoint)对调整大小后的图像和原始分辨率图像进行图像特征提取的示例
import requests
from PIL import Image
from transformers import AutoImageProcessor, AutoModel
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
processor = AutoImageProcessor.from_pretrained("apple/aimv2-large-patch14-native")
model = AutoModel.from_pretrained("apple/aimv2-large-patch14-native", device_map="auto")
inputs = processor(images=image, return_tensors="pt").to(model.device)
outputs = model(**inputs)以下是一个执行零样本(zero-shot)分类的检查点示例
import requests
from PIL import Image
from transformers import AutoModel, AutoProcessor
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
text = ["Picture of a dog.", "Picture of a cat.", "Picture of a horse."]
processor = AutoProcessor.from_pretrained("apple/aimv2-large-patch14-224-lit")
model = AutoModel.from_pretrained("apple/aimv2-large-patch14-224-lit", device_map="auto")
inputs = processor(
images=image,
text=text,
add_special_tokens=True,
truncation=True,
padding=True,
return_tensors="pt",
)
outputs = model(**inputs)
probs = outputs.logits_per_image.softmax(dim=-1)Aimv2Config
class transformers.Aimv2Config
< 源代码 >( transformers_version: str | None = None architectures: list[str] | None = None output_hidden_states: bool | None = False return_dict: bool | None = True dtype: typing.Union[str, ForwardRef('torch.dtype'), NoneType] = None chunk_size_feed_forward: int = 0 is_encoder_decoder: bool = False id2label: dict[int, str] | dict[str, str] | None = None label2id: dict[str, int] | dict[str, str] | None = None problem_type: typing.Optional[typing.Literal['regression', 'single_label_classification', 'multi_label_classification']] = None text_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None vision_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None initializer_factor: float = 1.0 projection_dim: int = 512 logit_scale_init_value: float = 2.6592 max_logit_scale: float = 100.0 )
参数
- text_config (
Union[dict, ~configuration_utils.PreTrainedConfig], 可选) — 文本主干(text backbone)的配置对象或字典。 - vision_config (
Union[dict, ~configuration_utils.PreTrainedConfig], 可选) — 视觉主干(vision backbone)的配置对象或字典。 - initializer_factor (
float, 可选,默认为1.0) — 用于初始化所有权重矩阵的因子(应保持为 1,内部用于初始化测试)。 - projection_dim (
int, 可选,默认为512) — 文本和视觉投影层的维度。 - logit_scale_init_value (
float, 可选,默认为2.6592) — logit_scale 参数的初始值。 - max_logit_scale (
float, 可选,默认为100.0) — 要使用的最大 logit 比例。
这是用于存储 Aimv2Model 配置的配置类。它根据指定的参数实例化一个 Aimv2 模型,定义模型架构。使用默认值实例化配置将产生与 apple/aimv2-large-patch14-224-lit 类似的配置。
配置对象继承自 PreTrainedConfig,可用于控制模型输出。阅读 PreTrainedConfig 的文档以获取更多信息。
示例
>>> from transformers import Aimv2Config, Aimv2Model
>>> # Initializing a Aimv2Config with apple/aimv2-large-patch14-224-lit style configuration
>>> configuration = Aimv2Config()
>>> # Initializing a Aimv2Model (with random weights) from the apple/aimv2-large-patch14-224-lit style configuration
>>> model = Aimv2Model(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
>>> # We can also initialize a Aimv2Config from a Aimv2TextConfig and a Aimv2VisionConfig
>>> from transformers import Aimv2TextConfig, Aimv2VisionConfig
>>> # Initializing a AIMv2Text and AIMv2Vision configuration
>>> config_text = Aimv2TextConfig()
>>> config_vision = Aimv2VisionConfig()
>>> config = Aimv2Config(text_config=config_text, vision_config=config_vision)Aimv2TextConfig
class transformers.Aimv2TextConfig
< 源代码 >( transformers_version: str | None = None architectures: list[str] | None = None output_hidden_states: bool | None = False return_dict: bool | None = True dtype: typing.Union[str, ForwardRef('torch.dtype'), NoneType] = None chunk_size_feed_forward: int = 0 is_encoder_decoder: bool = False id2label: dict[int, str] | dict[str, str] | None = None label2id: dict[str, int] | dict[str, str] | None = None problem_type: typing.Optional[typing.Literal['regression', 'single_label_classification', 'multi_label_classification']] = None vocab_size: int = 49408 hidden_size: int = 768 intermediate_size: int = 2048 num_hidden_layers: int = 12 num_attention_heads: int = 6 max_position_embeddings: int = 77 hidden_act: str = 'silu' attention_dropout: float | int = 0.0 eos_token_id: int | list[int] | None = 49407 rms_norm_eps: float = 1e-05 qkv_bias: bool = False mlp_bias: bool = False initializer_range: float = 0.02 )
参数
- vocab_size (
int, 可选,默认为49408) — 模型的词汇表大小。定义了可以由input_ids表示的不同标记(token)的数量。 - hidden_size (
int, 可选,默认为768) — 隐藏层表示的维度。 - intermediate_size (
int, 可选,默认为2048) — MLP 表示的维度。 - num_hidden_layers (
int, 可选,默认为12) — Transformer 解码器中的隐藏层数量。 - num_attention_heads (
int, 可选,默认为6) — Transformer 解码器中每个注意力层的注意力头数量。 - max_position_embeddings (
int, 可选,默认为77) — 此模型可能使用的最大序列长度。 - hidden_act (
str, 可选,默认为silu) — 解码器中的非线性激活函数(函数或字符串)。例如:"gelu","relu","silu"等。 - attention_dropout (
Union[float, int], 可选,默认为0.0) — 注意力概率的丢弃(dropout)率。 - eos_token_id (
Union[int, list[int]], 可选,默认为49407) — 词汇表中用于表示流结束(end-of-stream)的标记 ID。 - rms_norm_eps (
float, 可选,默认为1e-05) — RMS 归一化层使用的 epsilon 值。 - qkv_bias (
bool, 可选,默认为False) — 是否为查询(queries)、键(keys)和值(values)添加偏置(bias)。 - mlp_bias (
bool, 可选,默认为False) — MLP 层中的 up_proj、down_proj 和 gate_proj 层是否使用偏置。 - initializer_range (
float, 可选,默认为0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
这是用于存储 Aimv2Model 配置的配置类。它根据指定的参数实例化一个 Aimv2 模型,定义模型架构。使用默认值实例化配置将产生与 apple/aimv2-large-patch14-224-lit 类似的配置。
配置对象继承自 PreTrainedConfig,可用于控制模型输出。阅读 PreTrainedConfig 的文档以获取更多信息。
示例
>>> from transformers import Aimv2TextConfig, Aimv2TextModel
>>> # Initializing a Aimv2TextConfig with google/aimv2-base-patch16-224 style configuration
>>> configuration = Aimv2TextConfig()
>>> # Initializing a Aimv2TextModel (with random weights) from the google/aimv2-base-patch16-224 style configuration
>>> model = Aimv2TextModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configAimv2VisionConfig
class transformers.Aimv2VisionConfig
< 源码 >( transformers_version: str | None = None architectures: list[str] | None = None output_hidden_states: bool | None = False return_dict: bool | None = True dtype: typing.Union[str, ForwardRef('torch.dtype'), NoneType] = None chunk_size_feed_forward: int = 0 is_encoder_decoder: bool = False id2label: dict[int, str] | dict[str, str] | None = None label2id: dict[str, int] | dict[str, str] | None = None problem_type: typing.Optional[typing.Literal['regression', 'single_label_classification', 'multi_label_classification']] = None hidden_size: int = 1024 intermediate_size: int = 2816 num_hidden_layers: int = 24 num_attention_heads: int = 8 num_channels: int = 3 image_size: int | list[int] | tuple[int, int] = 224 patch_size: int | list[int] | tuple[int, int] = 14 hidden_act: str = 'silu' attention_dropout: float | int = 0.0 rms_norm_eps: float = 1e-05 qkv_bias: bool = False mlp_bias: bool = False initializer_range: float = 0.02 use_head: bool = True is_native: bool = False )
参数
- hidden_size (
int, 可选, 默认为1024) — 隐藏层表示的维度。 - intermediate_size (
int, 可选, 默认为2816) — MLP 表示的维度。 - num_hidden_layers (
int, 可选, 默认为24) — Transformer 解码器中的隐藏层数量。 - num_attention_heads (
int, 可选, 默认为8) — Transformer 解码器中每个注意力层的注意力头数。 - num_channels (
int, 可选, 默认为3) — 输入通道的数量。 - image_size (
Union[int, list[int], tuple[int, int]], 可选, 默认为224) — 每张图像的大小(分辨率)。 - patch_size (
Union[int, list[int], tuple[int, int]], 可选, 默认为14) — 每个补丁(patch)的大小(分辨率)。 - hidden_act (
str, 可选, 默认为silu) — 解码器中的非线性激活函数(函数或字符串)。例如:"gelu","relu","silu"等。 - attention_dropout (
Union[float, int], 可选, 默认为0.0) — 注意力概率的丢弃率。 - rms_norm_eps (
float, 可选, 默认为1e-05) — RMS 归一化层使用的 epsilon 值。 - qkv_bias (
bool, 可选, 默认为False) — 是否在查询(queries)、键(keys)和值(values)中添加偏置。 - mlp_bias (
bool, 可选, 默认为False) — 在 MLP 层中的 up_proj、down_proj 和 gate_proj 层是否使用偏置。 - initializer_range (
float, 可选, 默认为0.02) — 用于初始化所有权重矩阵的截断正态分布初始化器的标准差。 - use_head (
str, 可选, 默认为True) — 是否使用注意力池化头(Attention Pooling Head)。 - is_native (
str, 可选, 默认为False) — 是否使用针对图像原生分辨率训练的检查点(checkpoint)。
这是用于存储 Aimv2Model 配置的配置类。它根据指定的参数实例化一个 Aimv2 模型,定义模型架构。使用默认值实例化配置将产生与 apple/aimv2-large-patch14-224-lit 类似的配置。
配置对象继承自 PreTrainedConfig,可用于控制模型输出。阅读 PreTrainedConfig 的文档以获取更多信息。
示例
>>> from transformers import SiglipVisionConfig, SiglipVisionModel
>>> # Initializing a Aimv2VisionConfig with apple/aimv2-large-patch14-224 style configuration
>>> configuration = Aimv2VisionConfig()
>>> # Initializing a Aimv2VisionModel (with random weights) from the apple/aimv2-large-patch14-224 style configuration
>>> model = Aimv2VisionModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configAimv2Model
class transformers.Aimv2Model
< 源码 >( config: Aimv2Config )
参数
- config (Aimv2Config) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。请查看 from_pretrained() 方法以加载模型权重。
裸的 Aimv2 模型,输出原始隐藏状态,顶部没有任何特定的头(head)。
该模型继承自 PreTrainedModel。请查看超类文档以了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。
此模型也是一个 PyTorch torch.nn.Module 子类。像普通的 PyTorch Module 一样使用它,并参考 PyTorch 文档了解一般用法和行为的所有相关信息。
forward
< 源码 >( input_ids: torch.LongTensor | None = None pixel_values: torch.FloatTensor | None = None attention_mask: torch.Tensor | None = None **kwargs: typing_extensions.Unpack[transformers.utils.generic.TransformersKwargs] ) → Aimv2Output 或 tuple(torch.FloatTensor)
参数
- input_ids (形状为
(batch_size, sequence_length)的torch.LongTensor, 可选) — 词汇表中输入序列标记的索引。默认情况下,填充(padding)将被忽略。索引可以使用 AutoTokenizer 获取。详情请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- 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, 可选) — 用于避免对填充标记索引执行注意力计算的掩码。掩码值选自[0, 1]:- 1 表示未遮蔽的标记,
- 0 表示被遮蔽的标记。
返回
Aimv2Output 或 tuple(torch.FloatTensor)
一个 Aimv2Output 或 torch.FloatTensor 的元组(如果传入 return_dict=False 或 config.return_dict=False),根据配置(None)和输入,包含各种元素。
Aimv2Model 的前向传播方法,覆盖了 __call__ 特殊方法。
虽然 forward pass 的实现需要在此函数中定义,但你应该在之后调用
Module实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。
- loss (
torch.FloatTensor,形状为(1,), 可选, 当return_loss为True时返回) — 图像-文本相似度的对比损失。 - logits_per_image (
torch.FloatTensorof shape(image_batch_size, text_batch_size)) —image_embeds和text_embeds之间的缩放点积分数。这代表了图像-文本相似度分数。 - logits_per_text (
torch.FloatTensorof shape(text_batch_size, image_batch_size)) —text_embeds和image_embeds之间的缩放点积分数。这代表了文本-图像相似度分数。 - text_embeds (形状为
(batch_size, output_dim)的torch.FloatTensor) — 通过将投影层应用于 Aimv2TextModel 的池化输出来获得的文本嵌入。 - image_embeds (形状为
(batch_size, output_dim)的torch.FloatTensor) — 通过将投影层应用于 Aimv2VisionModel 的池化输出来获得的图像嵌入。 - text_model_output (
~modeling_outputs.BaseModelOutputWithPooling, 默认为None) — Aimv2TextModel 的输出。 - vision_model_output (
~modeling_outputs.BaseModelOutputWithPooling, 默认为None) — Aimv2VisionModel 的输出。
示例
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO
>>> from transformers import AutoProcessor, Aimv2Model
>>> model = Aimv2Model.from_pretrained("apple/aimv2-large-patch14-224-lit")
>>> processor = AutoProcessor.from_pretrained("apple/aimv2-large-patch14-224-lit")
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read()))
>>> 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 probabilitiesget_text_features
< 源码 >( input_ids: Tensor attention_mask: torch.Tensor | None = None position_ids: torch.Tensor | None = None **kwargs: typing_extensions.Unpack[transformers.utils.generic.TransformersKwargs] ) → BaseModelOutputWithPooling 或 tuple(torch.FloatTensor)
参数
- input_ids (形状为
(batch_size, sequence_length)的torch.Tensor) — 词汇表中输入序列标记的索引。默认情况下,填充(padding)将被忽略。索引可以使用 AutoTokenizer 获取。详情请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
torch.Tensor,形状为(batch_size, sequence_length),可选) — 用于避免对填充标记索引执行注意力计算的掩码。掩码值在[0, 1]中选择:- 1 表示未被屏蔽的标记,
- 0 表示被屏蔽的标记。
- position_ids (
torch.Tensor,形状为(batch_size, sequence_length),可选) — 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.n_positions - 1]内选择。
返回
BaseModelOutputWithPooling or tuple(torch.FloatTensor)
一个 BaseModelOutputWithPooling 或一个 torch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含根据配置(Aimv2Config)和输入而定的各种元素。
last_hidden_state (
torch.FloatTensor, 形状为(batch_size, sequence_length, hidden_size)) — 模型最后一层输出的隐藏状态序列。pooler_output (
torch.FloatTensor,形状为(batch_size, hidden_size)) — 序列第一个 token(分类 token)在进一步通过用于辅助预训练任务的层后的最后一个隐藏状态。例如,对于 BERT 系列模型,这会返回经过线性层和 tanh 激活函数处理后的分类 token。线性层的权重是通过预训练期间的下一句预测(分类)目标来训练的。hidden_states (
tuple(torch.FloatTensor), optional, 当传递output_hidden_states=True或当config.output_hidden_states=True时返回) —torch.FloatTensor的元组(一个用于嵌入层的输出,如果模型有嵌入层;+一个用于每个层的输出),形状为(batch_size, sequence_length, hidden_size)。模型在每个层输出的隐藏状态以及可选的初始嵌入输出。
attentions (
tuple(torch.FloatTensor), optional, 当传递output_attentions=True或当config.output_attentions=True时返回) —torch.FloatTensor的元组(每个层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)。注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
示例
>>> import torch
>>> from transformers import AutoTokenizer, Aimv2Model
>>> model = Aimv2Model.from_pretrained("openai/aimv2-vit-base-patch32")
>>> tokenizer = AutoTokenizer.from_pretrained("openai/aimv2-vit-base-patch32")
>>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="pt")
>>> with torch.inference_mode():
... text_features = model.get_text_features(**inputs)get_image_features
< 源文件 >( pixel_values: FloatTensor interpolate_pos_encoding: bool = False **kwargs: typing_extensions.Unpack[transformers.utils.generic.TransformersKwargs] ) → BaseModelOutputWithPooling 或 tuple(torch.FloatTensor)
参数
- pixel_values (
torch.FloatTensor,形状为(batch_size, num_channels, image_size, image_size)) — 对应于输入图像的张量。像素值可以使用 CLIPImageProcessor 获取。有关详细信息,请参阅CLIPImageProcessor.__call__()(CLIPProcessor 使用 CLIPImageProcessor 处理图像)。 - interpolate_pos_encoding (
bool,可选,默认为False) — 是否插值预训练的位置编码。
返回
BaseModelOutputWithPooling or tuple(torch.FloatTensor)
一个 BaseModelOutputWithPooling 或一个 torch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含根据配置(Aimv2Config)和输入而定的各种元素。
last_hidden_state (
torch.FloatTensor, 形状为(batch_size, sequence_length, hidden_size)) — 模型最后一层输出的隐藏状态序列。pooler_output (
torch.FloatTensor,形状为(batch_size, hidden_size)) — 序列第一个 token(分类 token)在进一步通过用于辅助预训练任务的层后的最后一个隐藏状态。例如,对于 BERT 系列模型,这会返回经过线性层和 tanh 激活函数处理后的分类 token。线性层的权重是通过预训练期间的下一句预测(分类)目标来训练的。hidden_states (
tuple(torch.FloatTensor), optional, 当传递output_hidden_states=True或当config.output_hidden_states=True时返回) —torch.FloatTensor的元组(一个用于嵌入层的输出,如果模型有嵌入层;+一个用于每个层的输出),形状为(batch_size, sequence_length, hidden_size)。模型在每个层输出的隐藏状态以及可选的初始嵌入输出。
attentions (
tuple(torch.FloatTensor), optional, 当传递output_attentions=True或当config.output_attentions=True时返回) —torch.FloatTensor的元组(每个层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)。注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
示例
>>> import torch
>>> from transformers import AutoProcessor, Aimv2Model
>>> from transformers.image_utils import load_image
>>> model = Aimv2Model.from_pretrained("openai/aimv2-vit-base-patch32")
>>> processor = AutoProcessor.from_pretrained("openai/aimv2-vit-base-patch32")
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = load_image(url)
>>> inputs = processor(images=image, return_tensors="pt")
>>> with torch.inference_mode():
... image_features = model.get_image_features(**inputs)Aimv2VisionModel
class transformers.Aimv2VisionModel
< 源文件 >( config: Aimv2VisionConfig )
参数
- config (Aimv2VisionConfig) — 具有所有模型参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
来自 AIMv2 的视觉模型,顶部没有任何头部(head)或投影层。
该模型继承自 PreTrainedModel。请查看超类文档以了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。
此模型也是一个 PyTorch torch.nn.Module 子类。像普通的 PyTorch Module 一样使用它,并参考 PyTorch 文档了解一般用法和行为的所有相关信息。
forward
< 源文件 >( pixel_values **kwargs: typing_extensions.Unpack[transformers.utils.generic.TransformersKwargs] ) → BaseModelOutputWithPooling 或 tuple(torch.FloatTensor)
参数
- pixel_values (
形状为 (batch_size, num_channels, image_size, image_size)) — 对应于输入图像的张量。像素值可以使用 CLIPImageProcessor 获取。有关详细信息,请参阅CLIPImageProcessor.__call__()(CLIPProcessor 使用 CLIPImageProcessor 处理图像)。
返回
BaseModelOutputWithPooling or tuple(torch.FloatTensor)
一个 BaseModelOutputWithPooling 或一个 torch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含根据配置(Aimv2Config)和输入而定的各种元素。
Aimv2VisionModel 的前向传播方法,覆盖了 __call__ 特殊方法。
虽然 forward pass 的实现需要在此函数中定义,但你应该在之后调用
Module实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。
last_hidden_state (
torch.FloatTensor, 形状为(batch_size, sequence_length, hidden_size)) — 模型最后一层输出的隐藏状态序列。pooler_output (
torch.FloatTensor,形状为(batch_size, hidden_size)) — 序列第一个 token(分类 token)在进一步通过用于辅助预训练任务的层后的最后一个隐藏状态。例如,对于 BERT 系列模型,这会返回经过线性层和 tanh 激活函数处理后的分类 token。线性层的权重是通过预训练期间的下一句预测(分类)目标来训练的。hidden_states (
tuple(torch.FloatTensor), optional, 当传递output_hidden_states=True或当config.output_hidden_states=True时返回) —torch.FloatTensor的元组(一个用于嵌入层的输出,如果模型有嵌入层;+一个用于每个层的输出),形状为(batch_size, sequence_length, hidden_size)。模型在每个层输出的隐藏状态以及可选的初始嵌入输出。
attentions (
tuple(torch.FloatTensor), optional, 当传递output_attentions=True或当config.output_attentions=True时返回) —torch.FloatTensor的元组(每个层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)。注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
示例
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO
>>> from transformers import AutoProcessor, Siglip2VisionModel
>>> model = Aimv2VisionModel.from_pretrained("apple/aimv2-large-patch14-native")
>>> processor = AutoProcessor.from_pretrained("apple/aimv2-large-patch14-native")
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read()))
>>> inputs = processor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> pooled_output = outputs.pooler_output # pooled featuresAimv2TextModel
class transformers.Aimv2TextModel
< 源文件 >( config: Aimv2TextConfig )
参数
- config (Aimv2TextConfig) — 具有所有模型参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
来自 AIMv2 的文本模型,顶部没有任何头部(head)或投影层。
该模型继承自 PreTrainedModel。请查看超类文档以了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。
此模型也是一个 PyTorch torch.nn.Module 子类。像普通的 PyTorch Module 一样使用它,并参考 PyTorch 文档了解一般用法和行为的所有相关信息。
forward
< 源文件 >( input_ids attention_mask: torch.Tensor | None = None **kwargs: typing_extensions.Unpack[transformers.utils.generic.TransformersKwargs] ) → BaseModelOutputWithPooling 或 tuple(torch.FloatTensor)
参数
- input_ids (
形状为 (batch_size, sequence_length)) — 词汇表中输入序列标记的索引。填充将被默认忽略。索引可以使用 AutoTokenizer 获取。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.__call__()。
- attention_mask (
torch.Tensor,形状为(batch_size, sequence_length),可选) — 用于避免对填充标记索引执行注意力计算的掩码。掩码值在[0, 1]中选择:- 1 表示未被屏蔽的标记,
- 0 表示被屏蔽的标记。
返回
BaseModelOutputWithPooling or tuple(torch.FloatTensor)
一个 BaseModelOutputWithPooling 或一个 torch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含根据配置(Aimv2Config)和输入而定的各种元素。
Aimv2TextModel 的前向传播方法,覆盖了 __call__ 特殊方法。
虽然 forward pass 的实现需要在此函数中定义,但你应该在之后调用
Module实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。
last_hidden_state (
torch.FloatTensor, 形状为(batch_size, sequence_length, hidden_size)) — 模型最后一层输出的隐藏状态序列。pooler_output (
torch.FloatTensor,形状为(batch_size, hidden_size)) — 序列第一个 token(分类 token)在进一步通过用于辅助预训练任务的层后的最后一个隐藏状态。例如,对于 BERT 系列模型,这会返回经过线性层和 tanh 激活函数处理后的分类 token。线性层的权重是通过预训练期间的下一句预测(分类)目标来训练的。hidden_states (
tuple(torch.FloatTensor), optional, 当传递output_hidden_states=True或当config.output_hidden_states=True时返回) —torch.FloatTensor的元组(一个用于嵌入层的输出,如果模型有嵌入层;+一个用于每个层的输出),形状为(batch_size, sequence_length, hidden_size)。模型在每个层输出的隐藏状态以及可选的初始嵌入输出。
attentions (
tuple(torch.FloatTensor), optional, 当传递output_attentions=True或当config.output_attentions=True时返回) —torch.FloatTensor的元组(每个层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)。注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。