Transformers 4.37 中文文档(八十六)(3)https://developer.aliyun.com/article/1563238
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
GIT
原始文本:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/git
概述
GIT 模型是由 Jianfeng Wang、Zhengyuan Yang、Xiaowei Hu、Linjie Li、Kevin Lin、Zhe Gan、Zicheng Liu、Ce Liu、Lijuan Wang 在《GIT: A Generative Image-to-text Transformer for Vision and Language》中提出的。GIT 是一种仅解码的 Transformer,利用 CLIP 的视觉编码器来除了文本外还对模型进行视觉输入的条件。该模型在图像字幕和视觉问答基准上取得了最先进的结果。
论文摘要如下:
在本文中,我们设计并训练了一个生成式图像文本 Transformer,GIT,以统一图像/视频字幕和问题回答等视觉-语言任务。虽然生成模型在预训练和微调之间提供了一致的网络架构,但现有工作通常包含复杂的结构(单/多模态编码器/解码器)并依赖于外部模块,如目标检测器/标记器和光学字符识别(OCR)。在 GIT 中,我们简化了架构,将其作为一个图像编码器和一个文本解码器在单一语言建模任务下。我们还扩大了预训练数据和模型规模以提高模型性能。没有花哨的东西,我们的 GIT 在 12 个具有挑战性的基准上建立了新的最先进技术,差距很大。例如,我们的模型首次在 TextCaps 上超越了人类表现(CIDEr 中的 138.2 vs. 125.5)。此外,我们提出了一种新的基于生成的图像分类和场景文本识别方案,在标准基准上取得了不错的表现。
GIT 架构。摘自原始论文。
使用提示
- GIT 的实现方式与 GPT-2 非常相似,唯一的区别在于模型还受到
pixel_values
的影响。
资源
官方 Hugging Face 和社区(由🌎表示)资源列表,可帮助您开始使用 GIT。
- 关于在自定义数据上进行推理+微调 GIT 的演示笔记本可以在此处找到。
- 另请参阅:因果语言建模任务指南
如果您有兴趣提交资源以包含在此处,请随时提交拉取请求,我们将进行审查。资源应该理想地展示一些新内容,而不是重复现有资源。
GitVisionConfig
class transformers.GitVisionConfig
( hidden_size = 768 intermediate_size = 3072 num_hidden_layers = 12 num_attention_heads = 12 num_channels = 3 image_size = 224 patch_size = 16 hidden_act = 'quick_gelu' layer_norm_eps = 1e-05 attention_dropout = 0.0 initializer_range = 0.02 **kwargs )
参数
hidden_size
(int
,可选,默认为 768)— 编码器层和池化器层的维度。intermediate_size
(int
,可选,默认为 3072)— Transformer 编码器中“中间”(即前馈)层的维度。num_hidden_layers
(int
,可选,默认为 12)— Transformer 编码器中的隐藏层数。num_attention_heads
(int
,可选,默认为 12)— Transformer 编码器中每个注意力层的注意力头数。image_size
(int
,可选,默认为 224)— 每个图像的大小(分辨率)。patch_size
(int
,可选,默认为 16)— 每个补丁的大小(分辨率)。hidden_act
(str
或function
,可选,默认为"quick_gelu"
)— 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
、"relu"
、"selu"
和"gelu_new"
以及"quick_gelu"
。layer_norm_eps
(float
,可选,默认为 1e-5) — 层归一化层使用的 epsilon。attention_dropout
(float
,可选,默认为 0.0) — 注意力概率的丢弃比率。initializer_range
(float
,可选,默认为 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。
这是用于存储 GitVisionModel 配置的配置类。根据指定的参数实例化 GIT 视觉编码器,定义模型架构。使用默认值实例化配置将产生类似于 GIT microsoft/git-base架构的视觉编码器的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import GitVisionConfig, GitVisionModel >>> # Initializing a GitVisionConfig with microsoft/git-base style configuration >>> configuration = GitVisionConfig() >>> # Initializing a GitVisionModel (with random weights) from the microsoft/git-base style configuration >>> model = GitVisionModel(configuration) >>> # Accessing the model configuration >>> configuration = model.config
GitVisionModel
class transformers.GitVisionModel
( config: GitVisionConfig )
参数
config
(GitConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
CLIP 中使用的视觉模型,在 GIT 中没有顶部的头部或投影。
此模型继承自 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.BaseModelOutput 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.BaseModelOutput 或tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.BaseModelOutput 或一个 torch.FloatTensor
元组(如果传递了 return_dict=False
或当 config.return_dict=False
时)包含根据配置()和输入的不同元素。
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 后的注意力权重,用于计算自注意力头中的加权平均值。
GitVisionModel 的前向方法,覆盖了 __call__
特殊方法。
虽然前向传递的方法需要在此函数内定义,但应该在此之后调用 Module
实例,而不是在此处调用,因为前者会负责运行前处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from PIL import Image >>> import requests >>> from transformers import AutoProcessor, GitVisionModel >>> processor = AutoProcessor.from_pretrained("microsoft/git-base") >>> model = GitVisionModel.from_pretrained("microsoft/git-base") >>> 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
GitConfig
class transformers.GitConfig
( vision_config = None vocab_size = 30522 hidden_size = 768 num_hidden_layers = 6 num_attention_heads = 12 intermediate_size = 3072 hidden_act = 'gelu' hidden_dropout_prob = 0.1 attention_probs_dropout_prob = 0.1 max_position_embeddings = 1024 initializer_range = 0.02 layer_norm_eps = 1e-12 pad_token_id = 0 position_embedding_type = 'absolute' use_cache = True tie_word_embeddings = False bos_token_id = 101 eos_token_id = 102 num_image_with_embedding = None **kwargs )
参数
vision_config
(dict
,可选) — 用于初始化 GitVisionConfig 的配置选项字典。vocab_size
(int
,可选,默认为 30522) — GIT 模型的词汇量大小。定义了在调用 GitModel 时可以由inputs_ids
表示的不同标记数量。hidden_size
(int
,可选,默认为 768) — 编码器层和池化器层的维度。num_hidden_layers
(int
,可选,默认为 6) — 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
,可选,默认为 1024) — 此模型可能会使用的最大序列长度。通常将其设置为一个较大的值以防万一(例如,512 或 1024 或 2048)。initializer_range
(float
,可选,默认为 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。layer_norm_eps
(float
,可选,默认为 1e-12) — 层归一化层使用的 epsilon。position_embedding_type
(str
, optional, defaults to"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 (https://arxiv.org/abs/2009.13658)。use_cache
(bool
, optional, defaults toTrue
) — 模型是否应返回最后的键/值注意力(并非所有模型都使用)。num_image_with_embedding
(int
, optional) — 要添加的时间嵌入数量,如果模型用于视频字幕/VQA。
这是用于存储 GitModel 配置的配置类。它用于根据指定的参数实例化 GIT 模型,定义模型架构。使用默认值实例化配置将产生类似于 GIT microsoft/git-base 架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import GitConfig, GitModel >>> # Initializing a GIT microsoft/git-base style configuration >>> configuration = GitConfig() >>> # Initializing a model (with random weights) from the microsoft/git-base style configuration >>> model = GitModel(configuration) >>> # Accessing the model configuration >>> configuration = model.config
Transformers 4.37 中文文档(八十六)(5)https://developer.aliyun.com/article/1563240