Transformers 4.37 中文文档(八十三)(2)https://developer.aliyun.com/article/1563249
BridgeTowerVisionConfig
class transformers.BridgeTowerVisionConfig
( hidden_size = 768 num_hidden_layers = 12 num_channels = 3 patch_size = 16 image_size = 288 initializer_factor = 1 layer_norm_eps = 1e-05 stop_gradient = False share_layernorm = True remove_last_layer = False **kwargs )
参数
hidden_size
(int
,可选,默认为 768) — 编码器层和池化层的维度。num_hidden_layers
(int
,可选,默认为 12) — 视觉编码器模型中的隐藏层数量。patch_size
(int
,可选,默认为 16) — 每个补丁的大小(分辨率)。image_size
(int
,可选,默认为 288) — 每个图像的大小(分辨率)。initializer_factor
(float
,可选,默认为 1) — 用于初始化所有权重矩阵的因子(应保持为 1,用于内部初始化测试)。layer_norm_eps
(float
,可选,默认为 1e-05) — 层归一化层使用的 epsilon。stop_gradient
(bool
,可选,默认为False
) — 是否停止训练的梯度。share_layernorm
(bool
,可选,默认为True
) — 是否共享 LayerNorm 层。remove_last_layer
(bool
,可选,默认为False
) — 是否从视觉编码器中移除最后一层。
这是用于存储 BridgeTowerModel 的视觉配置的配置类。使用默认值实例化配置将产生与 bridgetower-base BridgeTower/bridgetower-base架构类似的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import BridgeTowerVisionConfig >>> # Initializing a BridgeTower BridgeTower/bridgetower-base style configuration for the vision model >>> configuration = BridgeTowerVisionConfig() >>> # Accessing the configuration >>> configuration
BridgeTowerImageProcessor
class transformers.BridgeTowerImageProcessor
( do_resize: bool = True size: Dict = 288 size_divisor: int = 32 resample: Resampling = <Resampling.BICUBIC: 3> do_rescale: bool = True rescale_factor: Union = 0.00392156862745098 do_normalize: bool = True image_mean: Union = None image_std: Union = None do_center_crop: bool = True do_pad: bool = True **kwargs )
参数
do_resize
(bool
,可选,默认为True
) — 是否将图像的(高度,宽度)尺寸调整为指定的size
。可以被preprocess
方法中的do_resize
参数覆盖。size
(Dict[str, int]
可选,默认为 288) — 将输入的较短边调整为size["shortest_edge"]
。较长边将受限于int((1333 / 800) * size["shortest_edge"])
,同时保持纵横比。仅在do_resize
设置为True
时有效。可以被preprocess
方法中的size
参数覆盖。size_divisor
(int
,可选,默认为 32) — 确保高度和宽度都可以被划分的大小。仅在do_resize
设置为True
时有效。可以被preprocess
方法中的size_divisor
参数覆盖。resample
(PILImageResampling
, 可选, 默认为Resampling.BICUBIC
) — 如果调整图像大小,则使用的重采样滤波器。仅在do_resize
设置为True
时有效。do_rescale
(bool
, 可选, 默认为True
) — 是否按照指定的比例rescale_factor
对图像进行重新缩放。可以被preprocess
方法中的do_rescale
参数覆盖。rescale_factor
(int
或float
, 可选, 默认为1/255
) — 如果重新缩放图像,则使用的缩放因子。仅在do_rescale
设置为True
时有效。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
) — 如果归一化图像,则使用的标准差。这是一个浮点数或与图像通道数相同长度的浮点数列表。可以被preprocess
方法中的image_std
参数覆盖。do_center_crop
(bool
, 可选, 默认为True
) — 是否对图像进行中心裁剪。可以被preprocess
方法中的do_center_crop
参数覆盖。do_pad
(bool
, 可选, 默认为True
) — 是否将图像填充到批次中图像的(max_height, max_width)
。可以被preprocess
方法中的do_pad
参数覆盖。
构建一个 BridgeTower 图像处理器。
preprocess
( images: Union do_resize: Optional = None size: Optional = None size_divisor: Optional = None resample: Resampling = None do_rescale: Optional = None rescale_factor: Optional = None do_normalize: Optional = None image_mean: Union = None image_std: Union = None do_pad: Optional = None do_center_crop: 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
, 可选, 默认为self.do_resize
) — 是否调整图像大小。size
(Dict[str, int]
, 可选, 默认为self.size
) — 控制resize
后图像的大小。图像的最短边被调整为size["shortest_edge"]
,同时保持纵横比。如果调整后图像的最长边 >int(size["shortest_edge"] * (1333 / 800))
,则再次调整图像大小,使最长边等于int(size["shortest_edge"] * (1333 / 800))
。size_divisor
(int
, 可选, 默认为self.size_divisor
) — 将图像调整为此值的倍数。resample
(PILImageResampling
, 可选, 默认为self.resample
) — 如果调整图像大小,则使用的重采样滤波器。仅在do_resize
设置为True
时有效。do_rescale
(bool
, 可选, 默认为self.do_rescale
) — 是否将图像值重新缩放到 [0 - 1] 之间。rescale_factor
(float
, 可选, 默认为self.rescale_factor
) — 如果do_rescale
设置为True
,则用于重新缩放图像的缩放因子。do_normalize
(bool
, 可选, 默认为self.do_normalize
) — 是否对图像进行归一化。image_mean
(float
或List[float]
, 可选, 默认为self.image_mean
) — 如果do_normalize
设置为True
,则用于归一化图像的图像均值。image_std
(float
或List[float]
,可选,默认为self.image_std
)— 如果do_normalize
设置为True
,用于归一化图像的图像标准差。do_pad
(bool
,可选,默认为self.do_pad
)— 是否将图像填充到批处理中的(max_height, max_width)。如果为True
,还会创建并返回像素掩码。do_center_crop
(bool
,可选,默认为self.do_center_crop
)— 是否对图像进行中心裁剪。如果输入尺寸小于任何边缘的crop_size
,则图像将填充为 0,然后进行中心裁剪。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
)— 输出图像的通道维度格式。可以是以下之一:
"channels_first"
或ChannelDimension.FIRST
:图像以(num_channels, height, width)格式。"channels_last"
或ChannelDimension.LAST
:图像以(height, width, num_channels)格式。- 未设置:使用输入图像的通道维度格式。
input_data_format
(ChannelDimension
或str
,可选)— 输入图像的通道维度格式。如果未设置,将从输入图像中推断通道维度格式。可以是以下之一:
"channels_first"
或ChannelDimension.FIRST
:图像以(num_channels, height, width)格式。"channels_last"
或ChannelDimension.LAST
:图像以(height, width, num_channels)格式。"none"
或ChannelDimension.NONE
:图像以(height, width)格式。
预处理一张图片或一批图片。
BridgeTowerProcessor
class transformers.BridgeTowerProcessor
( image_processor tokenizer )
参数
image_processor
(BridgeTowerImageProcessor
)— 一个 BridgeTowerImageProcessor 的实例。图像处理器是必需的输入。tokenizer
(RobertaTokenizerFast
)— 一个[‘RobertaTokenizerFast`]的实例。分词器是必需的输入。
构建一个 BridgeTower 处理器,将一个 Roberta 分词器和一个 BridgeTower 图像处理器包装成一个处理器。
BridgeTowerProcessor 提供了 BridgeTowerImageProcessor 和 RobertaTokenizerFast 的所有功能。查看call()和decode()
的文档字符串以获取更多信息。
__call__
( images text: Union = None add_special_tokens: bool = True padding: Union = False truncation: Union = None max_length: Optional = None stride: int = 0 pad_to_multiple_of: Optional = None return_token_type_ids: Optional = None return_attention_mask: Optional = None return_overflowing_tokens: bool = False return_special_tokens_mask: bool = False return_offsets_mapping: bool = False return_length: bool = False verbose: bool = True return_tensors: Union = None **kwargs )
此方法使用 BridgeTowerImageProcessor.call()方法准备模型的图像,并使用 RobertaTokenizerFast.call()准备模型的文本。
有关更多信息,请参考上述两种方法的文档字符串。
BridgeTowerModel
class transformers.BridgeTowerModel
( config )
参数
config
(BridgeTowerConfig) — 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained() 方法以加载模型权重。
裸的 BridgeTower 模型,输出 BridgeTowerModelOutput 对象,没有特定的头部在顶部。这个模型是 PyTorch torch.nn.Module
_ 的子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None pixel_values: Optional = None pixel_mask: Optional = None head_mask: Optional = None inputs_embeds: Optional = None image_embeds: Optional = None image_token_type_idx: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None labels: Optional = None ) → export const metadata = 'undefined';transformers.models.bridgetower.modeling_bridgetower.BridgeTowerModelOutput or tuple(torch.FloatTensor)
参数
input_ids
(torch.LongTensor
,形状为({0})
) — 词汇表中输入序列标记的索引。可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call
()。attention_mask
(torch.FloatTensor
,形状为({0})
,可选) — 避免在填充标记索引上执行注意力的掩码。掩码值在[0, 1]
中选择:
- 1 表示未被
掩码
的标记, - 0 表示被
掩码
的标记。什么是注意力掩码?
token_type_ids
(torch.LongTensor
,形状为({0})
,可选) — 段标记索引,用于指示输入的第一部分和第二部分。索引在[0, 1]
中选择:
- 0 对应于一个 句子 A 标记,
- 1 对应于一个 句子 B 标记。什么是标记类型 ID?
pixel_values
(torch.FloatTensor
,形状为(batch_size, num_channels, height, width)
) — 像素值。可以使用 BridgeTowerImageProcessor 获取像素值。有关详细信息,请参阅 BridgeTowerImageProcessor.call
()。pixel_mask
(torch.LongTensor
,形状为(batch_size, height, width)
,可选) — 避免在填充像素值上执行注意力的掩码。掩码值在[0, 1]
中选择:
- 1 表示真实的像素(即未被
掩码
), - 0 表示填充的像素(即被
掩码
)。什么是注意力掩码? <../glossary.html#attention-mask>
__
head_mask
(torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 用于使自注意力模块中选择的头部失效的掩码。掩码值在[0, 1]
中选择:
- 1 表示头部未被
掩码
, - 0 表示头部被
掩码
。
inputs_embeds
(torch.FloatTensor
,形状为({0}, hidden_size)
,可选) — 可选地,可以直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制如何将input_ids
索引转换为相关向量,而不是模型的内部嵌入查找矩阵。image_embeds
(torch.FloatTensor
,形状为(batch_size, num_patches, hidden_size)
,可选) — 可选地,可以直接传递嵌入表示,而不是传递pixel_values
。如果您想要更多控制如何将pixel_values
转换为补丁嵌入,这将非常有用。image_token_type_idx
(int
,可选) —
- 图像的标记类型 ID。
output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。return_dict
(bool
,可选) — 是否返回一个 ModelOutput 而不是一个普通元组。output_hidden_states
(bool
, optional) — 如果设置为True
,则返回隐藏状态作为一个列表,分别包含文本、图像和跨模态组件的隐藏状态。即(hidden_states_text, hidden_states_image, hidden_states_cross_modal)
,其中每个元素都是对应模态的隐藏状态列表。hidden_states_txt/img
是对应单模态隐藏状态的张量列表,hidden_states_cross_modal
是一个包含每个桥接层的cross_modal_text_hidden_states
和cross_modal_image_hidden_states
的元组列表。labels
(torch.LongTensor
,形状为(batch_size,)
,可选) — 目前不支持标签。
返回
transformers.models.bridgetower.modeling_bridgetower.BridgeTowerModelOutput
或tuple(torch.FloatTensor)
一个transformers.models.bridgetower.modeling_bridgetower.BridgeTowerModelOutput
或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
时)包含根据配置(BridgeTowerConfig)和输入的不同元素。
text_features
(torch.FloatTensor
,形状为(batch_size, text_sequence_length, hidden_size)
) — 模型最后一层文本输出的隐藏状态序列。image_features
(torch.FloatTensor
,形状为(batch_size, image_sequence_length, hidden_size)
) — 模型最后一层图像输出的隐藏状态序列。pooler_output
(torch.FloatTensor
,形状为(batch_size, hidden_size x 2)
) — 文本和图像序列的第一个标记(分类标记)的最后一层隐藏状态的连接,分别经过用于辅助预训练任务的层进一步处理。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 之后的注意力权重,用于计算自注意力头中的加权平均值。
BridgeTowerModel 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。
示例:
>>> from transformers import BridgeTowerProcessor, BridgeTowerModel >>> from PIL import Image >>> import requests >>> # prepare image and text >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg" >>> image = Image.open(requests.get(url, stream=True).raw) >>> text = "hello world" >>> processor = BridgeTowerProcessor.from_pretrained("BridgeTower/bridgetower-base") >>> model = BridgeTowerModel.from_pretrained("BridgeTower/bridgetower-base") >>> inputs = processor(image, text, return_tensors="pt") >>> outputs = model(**inputs) >>> outputs.keys() odict_keys(['text_features', 'image_features', 'pooler_output'])
BridgeTowerForContrastiveLearning
class transformers.BridgeTowerForContrastiveLearning
( config )
参数
config
(BridgeTowerConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
在顶部具有图像文本对比头部的 BridgeTower 模型,计算图像文本对比损失。
这个模型是 PyTorch 的torch.nn.Module
_ 子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None pixel_values: Optional = None pixel_mask: Optional = None head_mask: Optional = None inputs_embeds: Optional = None image_embeds: Optional = None output_attentions: Optional = None output_hidden_states: Optional = True return_dict: Optional = None return_loss: Optional = None ) → export const metadata = 'undefined';transformers.models.bridgetower.modeling_bridgetower.BridgeTowerContrastiveOutput or tuple(torch.FloatTensor)
参数
input_ids
(torch.LongTensor
,形状为({0})
) — 词汇表中输入序列标记的索引。可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()获取详细信息。什么是输入 ID?attention_mask
(torch.FloatTensor
,形状为({0})
,optional) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
之间:
- 1 表示
未被遮罩
的标记, - 0 表示
被遮罩
的标记。什么是注意力掩码?
token_type_ids
(torch.LongTensor
,形状为({0})
,optional) — 段标记索引,指示输入的第一部分和第二部分。索引选择在[0, 1]
之间:
- 0 对应于句子 A标记,
- 1 对应于句子 B标记。什么是标记类型 ID?
pixel_values
(torch.FloatTensor
,形状为(batch_size, num_channels, height, width)
) — 像素值。可以使用 BridgeTowerImageProcessor 获取像素值。查看 BridgeTowerImageProcessor.call
()获取详细信息。pixel_mask
(torch.LongTensor
,形状为(batch_size, height, width)
,optional) — 用于避免在填充像素值上执行注意力的掩码。掩码值选择在[0, 1]
之间:
- 1 表示真实像素(即
未被遮罩
), - 0 表示填充像素(即
被遮罩
)。什么是注意力掩码?<../glossary.html#attention-mask>
__
head_mask
(torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
,optional) — 用于使自注意力模块中选择的头部失效的掩码。掩码值选择在[0, 1]
之间:
- 1 表示头部
未被遮罩
, - 0 表示头部
被遮罩
。
inputs_embeds
(torch.FloatTensor
,形状为({0}, hidden_size)
,optional) — 可选地,可以直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制如何将input_ids
索引转换为与模型内部嵌入查找矩阵相关联的向量,则这很有用。image_embeds
(torch.FloatTensor
,形状为(batch_size, num_patches, hidden_size)
,optional) — 可选地,可以直接传递嵌入表示,而不是传递pixel_values
。如果您想要更多控制如何将pixel_values
转换为补丁嵌入,则这很有用。image_token_type_idx
(int
, optional) —
- 图像的标记类型 ID。
output_attentions
(bool
, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量中的attentions
。output_hidden_states
(bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states
。return_dict
(bool
, 可选) — 是否返回 ModelOutput 而不是普通元组。return_loss
(bool
, 可选) — 是否返回对比损失。
返回
transformers.models.bridgetower.modeling_bridgetower.BridgeTowerContrastiveOutput
或 tuple(torch.FloatTensor)
一个 transformers.models.bridgetower.modeling_bridgetower.BridgeTowerContrastiveOutput
或一个 torch.FloatTensor
元组(如果传递 return_dict=False
或 config.return_dict=False
或 config.return_dict=False
)包含根据配置(BridgeTowerConfig)和输入的各种元素。
loss
(torch.FloatTensor
,形状为(1,)
,可选,当return_loss
为True
时返回) — 图像-文本对比损失。logits
(torch.FloatTensor
,形状为(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测分数(SoftMax 前每个词汇标记的分数)。text_embeds
(torch.FloatTensor)
,可选,当使用with_projection=True
初始化模型时返回) — 通过将投影层应用于 pooler_output 获得的文本嵌入。image_embeds
(torch.FloatTensor)
,可选,当使用with_projection=True
初始化模型时返回) — 通过将投影层应用于 pooler_output 获得的图像嵌入。cross_embeds
(torch.FloatTensor)
,可选,当使用with_projection=True
初始化模型时返回) — 通过将投影层应用于 pooler_output 获得的文本-图像跨模态嵌入。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
元组。
BridgeTowerForContrastiveLearning 的前向方法,覆盖了 __call__
特殊方法。
虽然前向传递的方法需要在此函数内定义,但应该在之后调用 Module
实例而不是这个,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import BridgeTowerProcessor, BridgeTowerForContrastiveLearning >>> import requests >>> from PIL import Image >>> import torch >>> image_urls = [ ... "https://farm4.staticflickr.com/3395/3428278415_81c3e27f15_z.jpg", ... "http://images.cocodataset.org/val2017/000000039769.jpg", ... ] >>> texts = ["two dogs in a car", "two cats sleeping on a couch"] >>> images = [Image.open(requests.get(url, stream=True).raw) for url in image_urls] >>> processor = BridgeTowerProcessor.from_pretrained("BridgeTower/bridgetower-large-itm-mlm-itc") >>> model = BridgeTowerForContrastiveLearning.from_pretrained("BridgeTower/bridgetower-large-itm-mlm-itc") >>> inputs = processor(images, texts, padding=True, return_tensors="pt") >>> loss = model(**inputs, return_loss=True).loss >>> inputs = processor(images, texts[::-1], padding=True, return_tensors="pt") >>> loss_swapped = model(**inputs, return_loss=True).loss >>> print("Loss", round(loss.item(), 4)) Loss 0.0019 >>> print("Loss with swapped images", round(loss_swapped.item(), 4)) Loss with swapped images 2.126
Transformers 4.37 中文文档(八十三)(4)https://developer.aliyun.com/article/1563251