Transformers 4.37 中文文档(八十四)(3)https://developer.aliyun.com/article/1563256
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)包含各种元素,取决于配置()和输入。
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时)包含根据配置()和输入的各种元素。
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时)包含根据配置()和输入的不同元素。
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.Tensorof 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.Tensorof shape(batch_size, sequence_length), 可选) — 用于避免在填充令牌索引上执行注意力的掩码。掩码值选择在[0, 1]之间:
- 对于
未被掩码的令牌为 1, - 对于
被掩码的令牌为 0。
- 什么是注意力掩码?
position_ids(np.ndarray或tf.Tensorof 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)包含各种元素,取决于配置()和输入。
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
Transformers 4.37 中文文档(八十四)(5)https://developer.aliyun.com/article/1563258