Transformers documentation

EmbeddingGemma2

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

该模型于 2026-10-06 贡献至 Hugging Face Transformers。

EmbeddingGemma2

概述

EmbeddingGemma 2 是 Google 基于 Gemma 4 架构构建的多模态嵌入模型。它将 文本、图像、音频和视频——无论是单独输入还是在同一输入中组合——编码到共享的 768 维稠密向量空间中,用于跨模态检索、语义相似度计算、聚类和分类。

主要功能:

  • 统一的多模态向量空间。视觉(Gemma4VisionModel)和音频(Gemma4AudioModel)塔将特征投影到双向文本编码器(EmbeddingGemma2TextModel)中,该编码器交替使用全注意力和滑动窗口注意力,并结合逐层嵌入(PLE)。任何单一模态(text、image、audio、video)或模态组合(image + text、text + audio、image + audio、多张图片、文本与媒体交错)都会映射到一个可比较的单一嵌入。
  • Matryoshka 表示学习(MRL)。 EmbeddingGemma2Model 通过线性头将 token 表示投影到 embedding_dim(768)。嵌入可以被截断为更短的前缀(512、256 或 128)并重新归一化,且质量损失极小。
  • 可配置的视觉与视频预算。 EmbeddingGemma2Processor 允许您调整每张图像或每帧的软令牌预算({70, 140, 280, 560, 1120} 中的 max_soft_tokens)以及视频采样率(默认值为 fps=1、max_frames=32、overflow_strategy="uniform"、add_timestamps=False)。
  • 选择性加载模态塔。在加载时,可以禁用未使用的视觉或音频塔(vision_config=None、audio_config=None),以降低纯文本或单模态部署的内存占用。

您可以在 EmbeddingGemma 集合中找到所有原始的 EmbeddingGemma 检查点。以下示例使用的是 google/embeddinggemma-2 标识符。

使用示例

句子或多模态嵌入通过两个步骤获得:首先对 last_hidden_state 中非填充 token 执行掩码感知的均值池化,然后在 float32 精度下进行 L2 归一化。Sentence Transformers(>=6.1.0)会自动执行预处理、提示词格式化、均值池化和归一化,是推荐的入口点。若使用 AutoModel,请调用 processor.apply_chat_template(纯文本则使用 AutoTokenizer),并直接对 last_hidden_state 进行池化。

文本检索(encode_query / encode_document)

Sentence Transformers
AutoModel
pip install -U sentence-transformers
from sentence_transformers import SentenceTransformer


model = SentenceTransformer("google/embeddinggemma-2")

queries = ["Which planet is known as the Red Planet?"]
documents = [
    "Venus is often called Earth's twin because of its similar size and proximity.",
    "Mars, known for its reddish appearance, is often referred to as the Red Planet.",
]

# encode_query and encode_document apply the "query" and "document" task prompts
query_embeddings = model.encode_query(queries)
document_embeddings = model.encode_document(documents)
print(query_embeddings.shape, document_embeddings.shape)
# (1, 768) (2, 768)

# (1, 2) matrix of cosine similarities
print(model.similarity(query_embeddings, document_embeddings))

任务提示

该模型支持在输入前添加可选的任务提示(并纳入平均池化计算),但提示并非必需,模型在没有提示的情况下也能正常工作。由于最佳配置取决于下游领域和模态组合,我们建议在您的具体任务上分别评估使用和不使用任务提示的效果。Sentence Transformers 在 config_sentence_transformers.json 中提供了以下目录,因此请传入 prompt_name(或使用 encode_query / encode_document,它们分别映射到 query 和 document);如果使用 AutoModel,请在 apply_chat_template 中将提示作为 system 消息传入(或将其前置到纯文本中)。

from sentence_transformers import SentenceTransformer


model = SentenceTransformer("google/embeddinggemma-2")

embeddings = model.encode("How to train a neural network", prompt_name="Classification")
prompt_nameprompt
query, Retrieval-query, Retrieval, Reranking, BitextMining, SearchQuerytask: search result \| query:
document, Document, Retrieval-documenttitle: none \| text:
Classification, MultilabelClassificationtask: classification \| query:
Clusteringtask: clustering \| query:
CodeRetrieval, InstructionRetrievaltask: code retrieval \| query:
FactCheckingtask: fact checking \| query:
QuestionAnsweringtask: question answering \| query:
STS, SentenceSimilarity, PairClassification, Summarizationtask: sentence similarity \| query:

Matryoshka 嵌入

嵌入头采用 Matryoshka Representation Learning 进行训练,因此可以将 768 维的嵌入截取为较短的前缀(512、256 或 128)并重新归一化。这能缩小索引规模并加快检索速度,同时基本保持排序质量。请将查询和文档截断为相同的维度,并在截取后始终进行归一化——在 Sentence Transformers 中,truncate_dim 截取的是已归一化的输出,因此前缀不再具有单位长度。

Sentence Transformers
AutoModel
import torch.nn.functional as F
from sentence_transformers import SentenceTransformer


# truncate_dim can also be set once at load time: SentenceTransformer(..., truncate_dim=256)
model = SentenceTransformer("google/embeddinggemma-2")

queries = ["Which planet is known as the Red Planet?"]
documents = [
    "Venus is often called Earth's twin because of its similar size and proximity.",
    "Mars, known for its reddish appearance, is often referred to as the Red Planet.",
]

query_embeddings = model.encode_query(queries, truncate_dim=256, convert_to_tensor=True)
document_embeddings = model.encode_document(documents, truncate_dim=256, convert_to_tensor=True)

query_embeddings = F.normalize(query_embeddings.float(), p=2, dim=-1)
document_embeddings = F.normalize(document_embeddings.float(), p=2, dim=-1)

# (1, 256) and (2, 256): a 3x smaller index than the full 768 dimensions
print(query_embeddings.shape, document_embeddings.shape)

# the Mars document still ranks first
print(model.similarity(query_embeddings, document_embeddings))

多模态嵌入

文本、图像、音频和视频被映射到同一个 768 维向量空间中,从而支持跨模态检索(例如使用文本查询搜索图像、音频或视频)以及组合多模态检索(将多种模态组合为单个查询或文档嵌入)。

在 Sentence Transformers 中,多模态输入以字典形式传入,键为 "text"、"image"、"audio" 和 "video"(每个值可以是单个项目,也可以是项目列表)。使用 AutoModel 时,将聊天风格的消息列表传入 processor.apply_chat_template(..., tokenize=True, return_dict=True, return_tensors="pt")。

1. 单模态与跨模态检索

每种模态(text、image、audio、video)都可以独立嵌入,并通过余弦相似度直接与其他任意模态进行比较:

Sentence Transformers
AutoModel
from sentence_transformers import SentenceTransformer


model = SentenceTransformer("google/embeddinggemma-2")
IMAGE = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"

# Embed each modality on its own into the shared (768,) space
candidates = model.encode(
    [
        {"text": "A photo of a cat"},
        {"image": IMAGE},
        {"audio": "path/to/audio.wav"},
        {"video": "path/to/video.mp4"},
    ]
)
print(candidates.shape)
# (4, 768)

# Cross-modal retrieval: rank text, image, audio, and video candidates against a text query
query = model.encode_query(["A fluffy cat outdoors"])
print(model.similarity(query, candidates))
# tensor([[...]]) of shape (1, 4)

2. 组合多模态嵌入(单个输入中包含多种模态)

可以将多种模态——或同一模态的多个项目——组合成一个单一的联合嵌入,包括纯非文本组合,例如image + audio:

Sentence Transformers
AutoModel
from sentence_transformers import SentenceTransformer


model = SentenceTransformer("google/embeddinggemma-2")
IMAGE_1 = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
IMAGE_2 = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/coco_sample.png"

composed_embeddings = model.encode(
    [
        # text + image
        {"text": "A photo of a cat", "image": IMAGE_1},
        # text + audio
        {"text": "A song", "audio": "path/to/audio.wav"},
        # image + audio (no text required)
        {"image": IMAGE_1, "audio": "path/to/audio.wav"},
        # multiple images + audio + text in one embedding
        {"image": [IMAGE_1, IMAGE_2], "audio": "path/to/audio.wav", "text": "Compare both cats"},
    ]
)
print(composed_embeddings.shape)
# (4, 768)

3. 自动排序与手动占位符

当文本中未出现占位符标记(<|image|>、<|video|>、<|audio|>)时,模态将按照其条目在字典或聊天消息 content 中出现的顺序依次输出(紧随任何 system 任务提示之后)。

要在句子中的特定位置交错插入文本和媒体,请在文本中直接写入 <|image|>、<|video|> 或 <|audio|>——此时该输入将禁用自动占位符插入,并且每个占位符会按顺序与提供的媒体项进行展开:

Sentence Transformers
AutoModel
from sentence_transformers import SentenceTransformer


model = SentenceTransformer("google/embeddinggemma-2")
IMAGE_1 = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
IMAGE_2 = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/coco_sample.png"

# 1. Automatic ordering: follows the dictionary's key order
#    -> <bos> [prompt] <image_tokens> <text_tokens> <eos>
image_first = model.encode({"image": IMAGE_1, "text": "A photo of a cat"}, prompt_name="document")

#    -> <bos> [prompt] <text_tokens> <image_tokens> <eos>
text_first = model.encode({"text": "A photo of a cat", "image": IMAGE_1}, prompt_name="document")

# 2. Manual placeholders: interleave media at exact positions in the text
#    No extra placeholders are inserted; counts must match the passed media inputs.
interleaved = model.encode(
    {
        "text": "A jacket similar to <|image|> or <|image|> featured in <|audio|>",
        "image": [IMAGE_1, IMAGE_2],
        "audio": "path/to/audio.wav",
    },
    prompt_name="query",
)

4. 异构(混合模态)批处理

单个批次可以在一次前向传播中混合纯文本、单模态媒体和多模态输入,为每一行生成与单独编码每个条目时相同的嵌入:

Sentence Transformers
AutoModel
from sentence_transformers import SentenceTransformer


model = SentenceTransformer("google/embeddinggemma-2")
IMAGE = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"

embeddings = model.encode(
    [
        "A photo of a cat",
        {"image": IMAGE},
        {"text": "A photo of a cat", "image": IMAGE},
        {"audio": "path/to/audio.wav"},
    ],
    prompt_name="document",
)
print(embeddings.shape)
# (4, 768)

5. 禁用未使用的模态塔(内存优化)

如果您的工作负载仅嵌入部分模态(例如,仅文本或文本 + 图像,不包含音频),您可以通过在配置中设置 vision_config=None 和/或 audio_config=None 来跳过实例化和加载未使用的视觉或音频塔。检查点中未使用的塔权重会被干净地忽略,不会发出警告。去掉音频塔后,模型参数量从 744M 降至 439M;如果两个塔都不使用,则降至 271M。

Sentence Transformers
AutoModel

请通过 config_kwargs(它会传递到 AutoConfig.from_pretrained)传入这些参数,而不是 model_kwargs:

from sentence_transformers import SentenceTransformer


# Text-only deployment (skips both vision and audio towers)
text_model = SentenceTransformer(
    "google/embeddinggemma-2",
    config_kwargs={"vision_config": None, "audio_config": None},
)

# Vision + text deployment (skips audio tower)
vision_text_model = SentenceTransformer(
    "google/embeddinggemma-2",
    config_kwargs={"audio_config": None},
)

处理器

EmbeddingGemma2Processor 集成了分词器、图像处理器、音频特征提取器和视频处理器。

对于批量多模态输入,我们建议通过 Sentence Transformers 传入每个样本的字典(model.encode([{"image": ..., "text": ...}, ...]))。若要最大程度地精确控制模态的顺序和交错方式,请在 text 中手动包含 <|image|>、<|video|> 和 <|audio|> 占位符。

控制视觉令牌预算(max_soft_tokens)

软令牌预算(max_soft_tokens,支持的取值为 {70, 140, 280, 560, 1120})控制每张图像或视频帧生成的视觉令牌的分辨率和数量(默认每张图像为 280,每帧视频为 140)。较低的取值会缩短序列长度并降低延迟:

Sentence Transformers
AutoProcessor
from sentence_transformers import SentenceTransformer


model = SentenceTransformer("google/embeddinggemma-2")
IMAGE = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"

image_embedding = model.encode(
    {"image": IMAGE},
    processing_kwargs={"image": {"max_soft_tokens": 70}},
)

视频帧采样控制

默认情况下,EmbeddingGemma2VideoProcessor 以 1 FPS(fps=1)采样帧,将每个片段限制为 32 帧(max_frames=32,overflow_strategy="uniform"),并且不在提示中包含帧时间戳(add_timestamps=False)。每次调用时都可以覆盖这些参数:

  • fps (int | float | None):目标采样率,单位为帧/秒。需要包含有效 fps 和 duration 的 VideoMetadata(从视频文件/URL 解码时会自动填充)。对于没有元数据的预解码帧数组,将跳过 FPS 采样并发出警告,直接应用 max_frames。
  • max_frames (int | None):每个视频保留的最大帧数。
  • overflow_strategy ("uniform" | "truncate" | None):当帧数超过 max_frames 时,如何减少多余的帧("uniform" 在整个片段中均匀重采样;"truncate" 保留前 max_frames 帧)。
  • add_timestamps (bool):是否在每个帧的 soft-token 块前添加其 mm:ss 时间戳。与 fps 不同,此参数没有回退机制:如果视频的元数据中没有 fps,设置 add_timestamps=True 会引发异常,因为猜测的帧率会将错误的 mm:ss 标签写入提示词。
Sentence Transformers
AutoProcessor
from sentence_transformers import SentenceTransformer


model = SentenceTransformer("google/embeddinggemma-2")

video_embedding = model.encode(
    {"video": "path/to/video.mp4"},
    processing_kwargs={"video": {"add_timestamps": True, "fps": 2, "max_frames": 16, "overflow_strategy": "truncate"}},
)

直接调用 processor(...) 而不使用聊天模板

虽然 processor.apply_chat_template 是多模态对话的主要入口,但也可以直接调用 processor(...)。当省略 text(即 text=None)时,会为批次中的每个样本自动合成 <|image|>、<|video|> 和 <|audio|> 占位符:

from transformers import AutoProcessor


processor = AutoProcessor.from_pretrained("google/embeddinggemma-2")

IMAGE = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
AUDIO = "path/to/audio.wav"  # a path, a URL, or a 1-D float array sampled at 16 kHz

# Text only
inputs = processor(text=["task: search result | query: Which planet is the Red Planet?"], return_tensors="pt")

# Media only (text=None): placeholders are synthesized per sample
inputs = processor(images=[IMAGE], return_tensors="pt")
inputs = processor(videos=["path/to/video.mp4"], return_tensors="pt")
inputs = processor(audio=[AUDIO], return_tensors="pt")

# Nested per-sample lists or combined modalities with text=None
inputs = processor(
    images=[[IMAGE, IMAGE], [IMAGE]],
    audio=[[AUDIO], [AUDIO, AUDIO]],
    return_tensors="pt",
)

# Manual placeholders in text for direct processor calls
inputs = processor(text=["<|image|> a photo of a cat"], images=[[IMAGE]], return_tensors="pt")
print(list(inputs.keys()))
# ['input_ids', 'attention_mask', 'pixel_values', 'image_position_ids']

EmbeddingGemma2TextConfig

class transformers.EmbeddingGemma2TextConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 262144hidden_size: int = 512intermediate_size: int = 2048num_hidden_layers: int = 24num_attention_heads: int = 4num_key_value_heads: int = 2head_dim: int = 256hidden_activation: str = 'gelu_pytorch_tanh'max_position_embeddings: int = 262144initializer_range: float = 0.02rms_norm_eps: float = 1e-06pad_token_id: int | None = 0eos_token_id: int | list[int] | None = 1bos_token_id: int | None = 2rope_parameters: dict | None = Noneattention_bias: bool = Falseattention_dropout: int | float | None = 0.0sliding_window: int = 512layer_types: list[str] | None = Nonehidden_size_per_layer_input: int = 512embedding_dim: int = 768 )

参数

  • vocab_size (int,可选,默认为 262144) — 模型的词表大小。定义了 input_ids 可以表示的不同 token 数量。
  • hidden_size (int,可选,默认为 512) — 隐藏表示的维度。
  • intermediate_size (int,可选,默认为 2048) — MLP 表示的维度。
  • num_hidden_layers (int,可选,默认为 24) — Transformer 解码器中的隐藏层数量。
  • num_attention_heads (int,可选,默认为 4) — Transformer 解码器中每个注意力层的注意力头数量。
  • num_key_value_heads (int, 可选,默认为 2) — 这是用于实现 Grouped Query Attention 的 key_value 头数。如果 num_key_value_heads=num_attention_heads,模型将使用 Multi Head Attention (MHA);如果 num_key_value_heads=1,模型将使用 Multi Query Attention (MQA);否则将使用 GQA。在将多头检查点转换为 GQA 检查点时,每个组的 key 和 value 头应通过对该组内所有原始头进行平均池化来构建。更多详情请参阅 这篇论文。如果未指定,则默认为 num_attention_heads。
  • head_dim (int,可选,默认为 256) — 注意力头维度。如果为 None,则默认为 hidden_size // num_attention_heads
  • hidden_activation (str, 可选, 默认为 gelu_pytorch_tanh) — 解码器中的非线性激活函数(函数或字符串)。例如,"gelu"、 "relu"、"silu" 等。
  • max_position_embeddings (int,可选,默认为 262144) — 该模型可能使用的最大序列长度。
  • initializer_range (float,可选,默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • rms_norm_eps (float,可选,默认为 1e-06) — RMS 归一化层使用的 epsilon 值。
  • pad_token_id (int, 可选,默认为 0) — 词表中用于填充的 token id。
  • eos_token_id (Union[int, list[int]],可选,默认为 1) — 词汇表中用于表示流结束(end-of-stream)的 token id。
  • bos_token_id (int,可选,默认为 2) — 词汇表中用于表示流起始的 Token id。
  • rope_parameters (dict, 可选) — 包含 RoPE 嵌入配置参数的字典。该字典应包含 rope_theta 的值,并且如果希望使用 RoPE 处理更长的 max_position_embeddings,则可选地包含用于缩放的参数。
  • attention_bias (bool,可选,默认为 False) — 在自注意力机制中,是否在 query、key、value 和 output 投影层中使用偏置。
  • attention_dropout (Union[int, float],可选,默认为 0.0) — 注意力概率的 dropout 比率。
  • sliding_window (int, 可选,默认值为 512) — 双向滑动窗口的包含半径:sliding_attention 层会关注所有满足 abs(q_idx - kv_idx) <= sliding_window 的位置。它是一个半径,而非因果 Gemma 模型所配置的单侧宽度,因为此处的掩码是对称的,所以默认值是参考实现中 1024 宽度窗口的一半。
  • layer_types (list[str], 可选) — 一个列表,用于显式地将每个层索引映射到其层类型。如果未提供,将根据 config 值自动生成。
  • hidden_size_per_layer_input (int,可选,默认值为 512) — 逐层(PLE)残差信号的维度。EmbeddingGemma 2 采用仅投影的 PLE:该信号仅由 inputs_embeds 推导得出,不使用辅助 token 查找表。
  • embedding_dim (int,可选,默认为 768) — embedding_projection 生成的句子嵌入的维度。

这是用于存储 EmbeddingGemma2Model 配置的类。它根据指定的参数实例化 Embedding Gemma2 模型,并定义模型架构。使用默认值实例化配置,将得到与 google/embeddinggemma-2 类似的配置。

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

EmbeddingGemma2Config

class transformers.EmbeddingGemma2Config

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonetext_config: transformers.models.embedding_gemma2.configuration_embedding_gemma2.EmbeddingGemma2TextConfig | dict[str, typing.Any] | None = Nonevision_config: transformers.configuration_utils.PreTrainedConfig | dict[str, typing.Any] | None = Noneaudio_config: transformers.configuration_utils.PreTrainedConfig | dict[str, typing.Any] | None = Noneboi_token_id: int | None = 255999eoi_token_id: int | None = 258882image_token_id: int | None = 258880video_token_id: int | None = 258884boa_token_id: int | None = 256000eoa_token_index: int | None = 258883audio_token_id: int | None = 258881initializer_range: float | None = 0.02 )

参数

  • text_config (EmbeddingGemma2TextConfig,可选) — 文本主干的配置。
  • vision_config (PreTrainedConfig 或 dict,可选) — 视觉塔的配置文件。直接沿用自 Gemma 4;该塔本身在运行时通过 AutoModel 解析。
  • audio_config (PreTrainedConfig 或 dict,可选) — 音频塔的配置文件。直接沿用自 Gemma 4;塔本身在运行时通过 AutoModel 解析。
  • boi_token_id (int,可选,默认为 255999) — 用于包裹图像提示的图像起始(begin-of-image)标记索引。
  • eoi_token_id (int, 可选,默认为 258882) — 用于包裹图像提示的图像结束标记索引。
  • image_token_id (int,可选,默认为 258880) — 用作输入图像占位符的图像 token 索引。
  • video_token_id (int,可选,默认为 258884) — 用作输入视频占位符的视频 token 索引。
  • boa_token_id (int,可选,默认为 256000) — 用于包裹音频提示的音频起始(begin-of-audio)标记索引。
  • eoa_token_index (int,可选,默认值为 258883) — 用于包裹音频提示的音频结束标记索引。
  • audio_token_id (int,可选,默认为 258881) — 用作输入音频占位符的音频 token 索引。
  • initializer_range (float,可选,默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。

这是用于存储 EmbeddingGemma2Model 配置的类。它根据指定的参数实例化 Embedding Gemma2 模型,并定义模型架构。使用默认值实例化配置,将得到与 google/embeddinggemma-2 类似的配置。

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

EmbeddingGemma2VideoProcessor

class transformers.EmbeddingGemma2VideoProcessor

< >

( **kwargs: *<class 'transformers.models.embedding_gemma2.video_processing_embedding_gemma2.EmbeddingGemma2VideoProcessorKwargs'> )

参数

  • do_convert_rgb (bool,kwargs,可选,默认为 True) — 是否将图像转换为 RGB。
  • do_resize (bool,kwargs,可选,默认为 True) — 是否调整图像大小。
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs,默认为 None) — 描述输入到模型的最大维度。
  • default_to_square (bool,kwargs,可选,默认为 True) — 当 size 为 int 时,是否在调整大小时默认使用正方形图像。
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs,默认为 3) — 如果调整图像大小,则使用的重采样滤波器。它可以是枚举 PILImageResampling 中的一个值。仅当 do_resize 设置为 True 时才会生效。
  • do_rescale (bool,kwargs,可选,默认为 True) — 是否对图像进行重新缩放。
  • rescale_factor (float,kwargs,可选,默认为 0.00392156862745098) — 当 do_rescale 设置为 True 时,用于对图像进行缩放的缩放因子。
  • do_normalize (bool,kwargs,可选,默认为 True) — 是否对图像进行归一化。
  • image_mean (Union[float, list[float], tuple[float, ...]],kwargs,可选,默认为 [0.0, 0.0, 0.0]) — 用于归一化的图像均值。仅当 do_normalize 设置为 True 时生效。
  • image_std (Union[float, list[float], tuple[float, ...]],kwargs,可选,默认为 [1.0, 1.0, 1.0]) — 用于归一化的图像标准差。仅当 do_normalize 设置为 True 时生效。
  • do_center_crop (bool,kwargs,可选) — 是否对图像进行中心裁剪。
  • do_pad (bool, kwargs, 可选) — 是否对图像进行填充。填充操作会将图像填充至批次中的最大尺寸,或填充至每张图像的固定正方形尺寸。具体的填充策略取决于模型。
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 应用 center_crop 后输出图像的尺寸。
  • data_format (Union[str, ~image_utils.ChannelDimension], kwargs, 可选) — 仅支持 ChannelDimension.FIRST。为兼容旧版处理器而添加。
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, 可选) — 输入图像的通道维度格式。如果未设置,则从输入图像中推断通道维度格式。可以是以下之一:
    • "channels_first" 或 ChannelDimension.FIRST:图像采用 (num_channels, height, width) 格式。
    • "channels_last" 或 ChannelDimension.LAST:图像采用 (height, width, num_channels) 格式。
    • "none" 或 ChannelDimension.NONE:图像为 (height, width) 格式。
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — 用于处理视频的设备。如果未设置,则从输入视频中推断设备。
  • do_sample_frames (bool,kwargs,可选,默认为 True) — 是否在处理前从视频中采样帧,还是处理整个视频。
  • video_metadata (Annotated[~video_utils.VideoMetadata | dict | list[dict | ~video_utils.VideoMetadata] | list[list[dict | ~video_utils.VideoMetadata]] | None, None], kwargs) — 视频的元数据,包含总时长、帧率(fps)和总帧数等信息。该元数据将用于从视频中采样帧或计算时间戳。除非您打算在预处理之前手动解码视频,否则请勿传入任何元数据。
  • fps (Annotated[int | float | None, None], kwargs,默认为 1) — 当 do_sample_frames=True 时,每秒要采样的目标帧数。
  • num_frames (Annotated[int | None, None], kwargs) — 当 do_sample_frames=True 时,要采样的最大帧数。
  • return_metadata (bool,kwargs,可选,默认为 False) — 是否返回视频元数据。视频元数据是一个包含视频时长、帧率、解码后端等信息的对象。
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — 如果设置,将返回特定框架的张量。可接受的值为:
    • 'pt':返回 PyTorch torch.Tensor 对象。
    • 'np':返回 NumPy np.ndarray 对象。
  • patch_size (int, kwargs, 可选) — 每个图像补丁的像素尺寸。
  • max_soft_tokens (int,kwargs,可选) — 每个视频帧中软(视觉)令牌的最大数量。 必须是 {70, 140, 280, 560, 1120} 之一。
  • pooling_kernel_size (int, kwargs, 可选) — 在分块(patchification)之后应用的空间池化核大小。
  • add_timestamps (bool,kwargs,可选) — 是否在每个视频占位符展开的帧前添加其 mm:ss 时间戳。 需要带有有效 fps 的 VideoMetadata,因为无法从已解码的帧中推断时间戳。
  • max_frames (int, kwargs, 可选) — 要采样的最大帧数。如果设置,采样的索引将均匀重新采样以符合该预算。
  • overflow_strategy (str, kwargs, optional) — 用于将采样帧的总数削减至预算范围内的策略。 只能设置为 “uniform” 或 “truncate”。在基于 FPS 的采样之后应用;当基于 FPS 的采样关闭或不适用时,则单独应用。
  • load_audio_from_video (bool,kwargs,可选) — 是否加载输入视频的音轨。
  • **kwargs (ProcessingKwargs,可选) — 每种模态(文本、图像、视频、音频)的额外处理选项。模型特定参数已在上方列出;有关支持参数的完整列表,请参阅 TypedDict 类。

构造一个 EmbeddingGemma2VideoProcessor 视频处理器。

预处理

< >

( videos: typing.Union[list['PIL.Image.Image'], numpy.ndarray, ForwardRef('torch.Tensor'), list[numpy.ndarray], list['torch.Tensor'], list[list['PIL.Image.Image']], list[list[numpy.ndarray]], list[list['torch.Tensor']], transformers.video_utils.URL, list[transformers.video_utils.URL], list[list[transformers.video_utils.URL]], transformers.video_utils.Path, list[transformers.video_utils.Path], list[list[transformers.video_utils.Path]]]**kwargs: *<class 'transformers.models.embedding_gemma2.video_processing_embedding_gemma2.EmbeddingGemma2VideoProcessorKwargs'> ) → ~image_processing_base.BatchFeature

参数

  • videos (Union[list[PIL.Image.Image], numpy.ndarray, torch.Tensor, list[numpy.ndarray], list[torch.Tensor], list[list[PIL.Image.Image]], list[list[numpy.ndarray]], list[list[torch.Tensor]], ~video_utils.URL, list[~video_utils.URL], list[list[~video_utils.URL]], ~video_utils.Path, list[~video_utils.Path], list[list[~video_utils.Path]]]) — 要预处理的视频。期望输入单个视频或一批视频,其像素值范围为 0 到 255。如果传入的像素值在 0 到 1 之间,请设置 do_rescale=False。
  • do_convert_rgb (bool,kwargs,可选) — 是否将图像转换为 RGB。
  • do_resize (bool,kwargs,可选) — 是否调整图像大小。
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 描述模型的最大输入维度。
  • default_to_square (bool, kwargs, 可选) — 当 size 为整数时,是否在调整大小时默认使用正方形图像。
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — 如果调整图像大小,则使用的重采样滤波器。可以是枚举 PILImageResampling 中的一个值。仅当 do_resize 设置为 True 时生效。
  • do_rescale (bool,kwargs,可选) — 是否对图像进行重新缩放。
  • rescale_factor (float, kwargs, 可选) — 如果 do_rescale 设置为 True,则用于对图像进行缩放的缩放因子。
  • do_normalize (bool,kwargs,可选) — 是否对图像进行归一化。
  • image_mean (Union[float, list[float], tuple[float, ...]], kwargs, 可选) — 用于归一化的图像均值。仅当 do_normalize 设置为 True 时生效。
  • image_std (Union[float, list[float], tuple[float, ...]], kwargs, 可选) — 用于归一化的图像标准差。仅当 do_normalize 设置为 True 时生效。
  • do_center_crop (bool,kwargs,可选) — 是否对图像进行中心裁剪。
  • do_pad (bool, kwargs, 可选) — 是否对图像进行填充。填充操作会将图像填充至批次中的最大尺寸,或填充至每张图像的固定正方形尺寸。具体的填充策略取决于模型。
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 应用 center_crop 后输出图像的尺寸。
  • data_format (Union[str, ~image_utils.ChannelDimension], kwargs, 可选) — 仅支持 ChannelDimension.FIRST。为兼容旧版处理器而添加。
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, 可选) — 输入图像的通道维度格式。如果未设置,则从输入图像中推断通道维度格式。可以是以下之一:
    • "channels_first" 或 ChannelDimension.FIRST:图像采用 (num_channels, height, width) 格式。
    • "channels_last" 或 ChannelDimension.LAST:图像采用 (height, width, num_channels) 格式。
    • "none" 或 ChannelDimension.NONE:图像为 (height, width) 格式。
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — 用于处理视频的设备。如果未设置,则从输入视频中推断设备。
  • do_sample_frames (bool, kwargs, 可选) — 是否在处理前对视频进行帧采样,还是处理整个视频。
  • video_metadata (Annotated[~video_utils.VideoMetadata | dict | list[dict | ~video_utils.VideoMetadata] | list[list[dict | ~video_utils.VideoMetadata]] | None, None], kwargs) — 视频的元数据,包含总时长、帧率(fps)和总帧数等信息。该元数据将用于从视频中采样帧或计算时间戳。除非您打算在预处理之前手动解码视频,否则请勿传入任何元数据。
  • fps (Annotated[int | float | None, None], kwargs) — 当 do_sample_frames=True 时,每秒要采样的目标帧数。
  • num_frames (Annotated[int | None, None], kwargs) — 当 do_sample_frames=True 时,要采样的最大帧数。
  • return_metadata (bool, kwargs, 可选) — 是否返回视频元数据。视频元数据是一个包含视频时长、帧率、解码后端等信息的对象。
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — 如果设置为 'pt',则返回堆叠的张量,否则返回张量列表。
  • patch_size (int, kwargs, 可选) — 每个图像补丁的像素尺寸。
  • max_soft_tokens (int,kwargs,可选) — 每个视频帧中软(视觉)令牌的最大数量。 必须是 {70, 140, 280, 560, 1120} 之一。
  • pooling_kernel_size (int, kwargs, 可选) — 在分块(patchification)之后应用的空间池化核大小。
  • add_timestamps (bool,kwargs,可选) — 是否在每个视频占位符展开的帧前添加其 mm:ss 时间戳。 需要带有有效 fps 的 VideoMetadata,因为无法从已解码的帧中推断时间戳。
  • max_frames (int, kwargs, 可选) — 要采样的最大帧数。如果设置,采样的索引将均匀重新采样以符合该预算。
  • overflow_strategy (str, kwargs, optional) — 用于将采样帧的总数削减至预算范围内的策略。 只能设置为 “uniform” 或 “truncate”。在基于 FPS 的采样之后应用;当基于 FPS 的采样关闭或不适用时,则单独应用。
  • load_audio_from_video (bool,kwargs,可选) — 是否加载输入视频的音轨。

返回值

~image_processing_base.BatchFeature

  • data (dict) — 由 call 方法返回的列表/数组/张量字典(如 ‘pixel_values’ 等)。
  • tensor_type (Union[None, str, TensorType], 可选) — 您可以在此处指定 tensor_type,以便在初始化时将 PyTorch/Numpy 张量中的整数列表进行转换。

EmbeddingGemma2Processor

class transformers.EmbeddingGemma2Processor

< >

( feature_extractorimage_processortokenizervideo_processorchat_template = Noneimage_seq_length: int = 280audio_seq_length: int = 750audio_ms_per_token: int = 40**kwargs )

参数

  • feature_extractor (Gemma4AudioFeatureExtractor) — 特征提取器是必需的输入。
  • image_processor (Gemma4ImageProcessor) — 图像处理器是必需的输入。
  • tokenizer (tokenizer_class) — 分词器是必需的输入。
  • video_processor (EmbeddingGemma2VideoProcessor) — 视频处理器是必需的输入。
  • chat_template (str) — 一个 Jinja 模板,用于将聊天中的消息列表转换为可分词的字符串。
  • image_seq_length (int,可选,默认为 280) — 用于占位符扩展的每张图像的软标记数量。
  • audio_seq_length (int,可选,默认为 750) — 每个音频片段中音频软令牌的最大数量。在计算动态音频令牌数量时,作为上限约束。
  • audio_ms_per_token (int,可选,默认为 40) — 每个输出软 token 对应的音频毫秒数。用于动态计算音频占位 token 的数量,公式为 ceil(duration_ms / audio_ms_per_token)。 默认值 40 源自 SSCP 卷积在 10ms 帧上实现的 4 倍时间缩减。

构造一个 EmbeddingGemma2Processor,它将特征提取器、图像处理器、分词器和视频处理器封装为单一处理器。

[EmbeddingGemma2Processor] 提供了 [Gemma4AudioFeatureExtractor]、[Gemma4ImageProcessor]、[tokenizer_class] 和 [EmbeddingGemma2VideoProcessor] 的所有功能。有关更多信息,请参阅 [~Gemma4AudioFeatureExtractor]、[~Gemma4ImageProcessor]、[~tokenizer_class] 和 [~EmbeddingGemma2VideoProcessor]。

__call__

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Nonetext: str | list[str] | list[list[str]] | None = Nonevideos: typing.Union[list['PIL.Image.Image'], numpy.ndarray, ForwardRef('torch.Tensor'), list[numpy.ndarray], list['torch.Tensor'], list[list['PIL.Image.Image']], list[list[numpy.ndarray]], list[list['torch.Tensor']], transformers.video_utils.URL, list[transformers.video_utils.URL], list[list[transformers.video_utils.URL]], transformers.video_utils.Path, list[transformers.video_utils.Path], list[list[transformers.video_utils.Path]], NoneType] = Noneaudio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor'], NoneType] = Noneaudio_from_video_indices: list[int] | None = None**kwargs: *<class 'transformers.processing_utils.ProcessingKwargs'> )

参数

  • images (Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], 可选) — 要预处理的图像。期望输入单张图像或一批图像,其像素值范围为 0 到 255。如果传入的图像像素值在 0 到 1 之间,请设置 do_rescale=False。
  • text (Union[str, list[str], list[list[str]]],可选) — 要编码的序列或序列批次。每个序列可以是字符串或字符串列表(预分词字符串)。如果传入预分词输入,请设置 is_split_into_words=True,以避免与批量输入产生歧义。
  • videos (Union[list[PIL.Image.Image], numpy.ndarray, torch.Tensor, list[numpy.ndarray], list[torch.Tensor], list[list[PIL.Image.Image]], list[list[numpy.ndarray]], list[list[torch.Tensor]], ~video_utils.URL, list[~video_utils.URL], list[list[~video_utils.URL]], ~video_utils.Path, list[~video_utils.Path], list[list[~video_utils.Path]]], 可选) — 要预处理的视频。期望输入单个视频或一批视频,其像素值范围为 0 到 255。如果传入的像素值在 0 到 1 之间,请设置 do_rescale=False。
  • audio (Union[numpy.ndarray, torch.Tensor, collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence[torch.Tensor]], 可选) — 要准备处理的音频或音频批次。每个音频可以是 NumPy 数组或 PyTorch 张量。 如果为 NumPy 数组/PyTorch 张量,每个音频的形状应为 (C, T),其中 C 为通道数,T 为音频的采样长度。
  • audio_from_video_indices (list[int], 可选) — 一个列表,用于描述每个音频槽的来源,其中
    • None -> 与任何视频轨道均无关联的独立音频
    • i -> 从 videos[i] 中提取的音频 如果 audio 每个槽位都有一个条目,则 videos[i] 的音频将直接取自该条目,而不会进行解码。
  • return_tensors (str 或 TensorType, 可选) — 如果设置,将返回特定框架的张量。可接受的值为:
    • 'pt':返回 PyTorch torch.Tensor 对象。
    • 'np':返回 NumPy np.ndarray 对象。
  • **kwargs (ProcessingKwargs,可选) — 每种模态(文本、图像、视频、音频)的额外处理选项。模型特定参数已在上方列出;有关支持参数的完整列表,请参阅 TypedDict 类。

EmbeddingGemma2PreTrainedModel

类 transformers.EmbeddingGemma2PreTrainedModel

< >

( config: PreTrainedConfig*inputs**kwargs )

参数

  • config (PreTrainedConfig) — 模型配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。

该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。

forward

( *args**kwargs )

点分路径(例如 torch.float32)的模拟值:属性访问链和调用行为如同透传装饰器,repr 返回点分路径,将其用作基类时会替换为普通的 type 基类(PEP 560 __mro_entries__),因此真实的子类保留正常的元类,且 inspect.signature 读取的是它们真实的 __init__,而非模拟对象的。

EmbeddingGemma2TextModel

class transformers.EmbeddingGemma2TextModel

< >

( config: EmbeddingGemma2TextConfig )

参数

  • config (EmbeddingGemma2TextConfig) — 模型配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。

EmbeddingGemma 2 文本骨干网络。它拥有 embedding_projection,用于将最终隐藏状态映射到 config.embedding_dim,因此组合模型无需重写 forward。

该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutput or tuple(torch.Tensor)

参数

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

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

    什么是输入 ID?

  • attention_mask (torch.Tensor 形状为 (batch_size, sequence_length), ,可选) — 用于避免对填充 token 索引执行注意力机制的掩码。掩码值取自 [0, 1]:
    • 1 表示未被屏蔽的 token,
    • 对于被掩码的 token,值为 0。

    什么是注意力掩码?

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

    什么是位置 ID?

  • inputs_embeds(形状为 (batch_size, sequence_length, hidden_size) 的 torch.Tensor,可选) — 可选地,您可以选择直接传入嵌入表示,而不是传入 input_ids。如果您希望对 input_ids 索引如何转换为相应向量拥有比模型内部嵌入查找矩阵更多的控制权,这将非常有用。

返回值

BaseModelOutput 或 tuple(torch.Tensor)

一个 BaseModelOutput 或 torch.Tensor 元组(如果传入了 return_dict=False 或 config.return_dict=False),其包含的元素取决于配置(EmbeddingGemma2Config)和输入。

EmbeddingGemma2TextModel 的 forward 方法重写了 __call__ 特殊方法。

尽管前向传播的实现需要在此函数中定义,但之后应调用 Module 实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。

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

  • hidden_states (tuple(torch.Tensor),可选,当传入 output_hidden_states=True 或 config.output_hidden_states=True 时返回) — 一个 torch.Tensor 元组(如果模型具有嵌入层,则包含嵌入层的输出,以及每一层的输出),形状为 (batch_size, sequence_length, hidden_size)。

    模型在每一层输出处的隐藏状态,以及可选的初始嵌入输出。

  • attentions (tuple(torch.Tensor),可选,当传入 output_attentions=True 或 config.output_attentions=True 时返回) — 一个 torch.Tensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)。

    注意力权重,即经过注意力 softmax 之后的权重,用于在自注意力头中计算加权平均值。

EmbeddingGemma2Model

class transformers.EmbeddingGemma2Model

< >

( config: EmbeddingGemma2Config )

参数

  • config (EmbeddingGemma2Config) — 模型的配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。

EmbeddingGemma 2 模型:包含一个视觉骨干网络、一个音频骨干网络和一个文本骨干网络,其最终隐藏状态会被投影到 config.text_config.embedding_dim。该模型旨在被 SentenceTransformers 的均值池化和归一化操作所封装。

该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Nonepixel_values: typing.Optional[torch.Tensor] = Nonepixel_values_videos: typing.Optional[torch.Tensor] = Noneinput_features: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneinput_features_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneimage_position_ids: typing.Optional[torch.LongTensor] = Nonevideo_position_ids: typing.Optional[torch.LongTensor] = Nonenum_frames_per_video: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → EmbeddingGemma2ModelOutput or tuple(torch.Tensor)

参数

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

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

    什么是输入 ID?

  • pixel_values (torch.Tensor,形状为 (batch_size, num_channels, image_size, image_size),可选) — 对应输入图像的张量。可以使用 Gemma4ImageProcessor 获取像素值。有关详细信息,请参阅 Gemma4ImageProcessor.call()(EmbeddingGemma2Processor 使用 Gemma4ImageProcessor 处理图像)。
  • pixel_values_videos (torch.Tensor,形状为 (batch_size, num_frames, num_channels, frame_size, frame_size),可选) — 对应输入视频的张量。可以使用 EmbeddingGemma2VideoProcessor 获取视频的像素值。有关详细信息,请参阅 EmbeddingGemma2VideoProcessor.call()(EmbeddingGemma2Processor 使用 EmbeddingGemma2VideoProcessor 来处理视频)。
  • input_features (torch.Tensor,形状为 (batch_size, sequence_length, feature_dim),可选) — 与输入音频特征对应的张量。可以使用 Gemma4AudioFeatureExtractor 获取音频特征。有关详细信息,请参阅 Gemma4AudioFeatureExtractor.call()(EmbeddingGemma2Processor 使用 Gemma4AudioFeatureExtractor 处理音频)。
  • attention_mask (torch.Tensor 形状为 (batch_size, sequence_length), ,可选) — 用于避免对填充 token 索引执行注意力机制的掩码。掩码值取自 [0, 1]:
    • 1 表示未被屏蔽的 token,
    • 对于被掩码的 token,值为 0。

    什么是注意力掩码?

  • input_features_mask (torch.Tensor,形状为 (num_images, seq_length)) — 输入音频的注意力掩码。
  • position_ids (torch.LongTensor 形状为 (batch_size, sequence_length), 可选) — 输入序列中每个 token 在位置嵌入中的位置索引。取值范围为 [0, config.n_positions - 1].

    什么是位置 ID?

  • inputs_embeds(形状为 (batch_size, sequence_length, hidden_size) 的 torch.Tensor,可选) — 可选地,您可以选择直接传入嵌入表示,而不是传入 input_ids。如果您希望对 input_ids 索引如何转换为相应向量拥有比模型内部嵌入查找矩阵更多的控制权,这将非常有用。
  • image_position_ids(形状为 (batch_size, max_patches, 2) 的 torch.LongTensor,可选)— 来自图像处理器(image processor)的 2D patch 位置坐标,其中 (-1, -1) 表示填充(padding)。 该参数会传递给视觉编码器,用于计算位置嵌入(positional embedding)。
  • video_position_ids(形状为 (total_num_frames, max_patches, 2) 的 torch.LongTensor,可选) — 来自视频处理器的 2D patch 位置坐标,其中 (-1, -1) 表示填充。 该参数会传递给视觉编码器,用于计算位置嵌入。
  • num_frames_per_video(形状为 (num_videos,) 的 torch.LongTensor,可选) — 每个视频包含的帧数。只要传入了 pixel_values_videos,就必须提供此参数,因为所有视频的帧都沿单一轴拼接在一起。

返回值

EmbeddingGemma2ModelOutput 或 tuple(torch.Tensor)

EmbeddingGemma2ModelOutput 或 torch.Tensor 元组(如果传入 return_dict=False 或 config.return_dict=False),其包含的元素取决于配置(EmbeddingGemma2Config)和输入。

EmbeddingGemma2Model 的 forward 方法重写了 __call__ 特殊方法。

尽管前向传播的实现需要在此函数中定义,但之后应调用 Module 实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。

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

  • hidden_states (tuple(torch.Tensor),可选,当传入 output_hidden_states=True 或 config.output_hidden_states=True 时返回) — 一个 torch.Tensor 元组(如果模型具有嵌入层,则包含嵌入层的输出,以及每一层的输出),形状为 (batch_size, sequence_length, hidden_size)。

    模型在每一层输出处的隐藏状态,以及可选的初始嵌入输出。

  • attentions (tuple(torch.Tensor),可选,当传入 output_attentions=True 或 config.output_attentions=True 时返回) — 一个 torch.Tensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)。

    注意力权重,即经过注意力 softmax 之后的权重,用于在自注意力头中计算加权平均值。

  • image_hidden_states (torch.Tensor,可选) — 一个尺寸为 (batch_size, num_images, sequence_length, hidden_size) 的 torch.Tensor。 由视觉编码器生成的模型 image_hidden_states,并在投影最后一个隐藏状态之后得到。

  • audio_hidden_states (torch.Tensor, 可选) — 大小为 (batch_size, num_images, sequence_length, hidden_size) 的 torch.Tensor。 由音频编码器生成并在投影最后一个隐藏状态后得到的模型的 audio_hidden_states。

get_image_features

< >

( pixel_values: Tensorimage_position_ids: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)

参数

  • pixel_values (torch.Tensor,形状为 (batch_size, num_channels, image_size, image_size)) — 对应输入图像的张量。可以使用 Gemma4ImageProcessor 获取像素值。有关详细信息,请参阅 Gemma4ImageProcessor.call()(EmbeddingGemma2Processor 使用 Gemma4ImageProcessor 处理图像)。
  • image_position_ids(形状为 (batch_size, max_patches, 2) 的 torch.LongTensor,可选) — 图像中每个 patch 的位置,以 (x, y) 坐标表示。填充 patch 用 (-1, -1) 表示。

返回值

BaseModelOutputWithPooling 或 tuple(torch.Tensor)

一个 BaseModelOutputWithPooling 或 torch.Tensor 元组(如果传入了 return_dict=False 或 config.return_dict=False),其包含的元素取决于配置(EmbeddingGemma2Config)和输入。

将视觉模型的最后一个隐藏状态投影到语言模型空间。

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

  • pooler_output (torch.Tensor,形状为 (batch_size, hidden_size)) — 序列中第一个 token(分类 token)的最后一层隐藏状态,经过用于辅助预训练任务的层进一步处理后得到。例如,对于 BERT 系列模型,这返回的是分类 token 经过线性层和 tanh 激活函数处理后的结果。线性层的权重在预训练期间通过下一句预测(分类)目标进行训练。

  • hidden_states (tuple(torch.Tensor),可选,当传入 output_hidden_states=True 或 config.output_hidden_states=True 时返回) — 一个 torch.Tensor 元组(如果模型具有嵌入层,则包含嵌入层的输出,以及每一层的输出),形状为 (batch_size, sequence_length, hidden_size)。

    模型在每一层输出处的隐藏状态,以及可选的初始嵌入输出。

  • attentions (tuple(torch.Tensor),可选,当传入 output_attentions=True 或 config.output_attentions=True 时返回) — 一个 torch.Tensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)。

    注意力权重,即经过注意力 softmax 之后的权重,用于在自注意力头中计算加权平均值。

get_video_features

< >

( pixel_values_videos: Tensorvideo_position_ids: typing.Optional[torch.LongTensor] = Nonenum_frames_per_video: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)

参数

  • pixel_values_videos (torch.Tensor,形状为 (total_num_frames, max_patches, patch_pixels)) — 批次中所有视频的帧,沿帧轴拼接而非堆叠在单独的视频轴上,以便将不同长度的视频一起进行批处理。
  • video_position_ids(形状为 (total_num_frames, max_patches, 2) 的 torch.LongTensor,可选) — 来自视频处理器的 2D patch 位置坐标,其中 (-1, -1) 表示填充。 该参数会传递给视觉编码器,用于计算位置嵌入。
  • num_frames_per_video(形状为 (num_videos,) 的 torch.LongTensor)— 每个视频所属的帧数,用于将扁平的帧序列按视频拆分。

返回值

BaseModelOutputWithPooling 或 tuple(torch.Tensor)

一个 BaseModelOutputWithPooling 或 torch.Tensor 元组(如果传入了 return_dict=False 或 config.return_dict=False),其包含的元素取决于配置(EmbeddingGemma2Config)和输入。

将视觉编码器的最后一个隐藏状态投影到语言模型空间。

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

  • pooler_output (torch.Tensor,形状为 (batch_size, hidden_size)) — 序列中第一个 token(分类 token)的最后一层隐藏状态,经过用于辅助预训练任务的层进一步处理后得到。例如,对于 BERT 系列模型,这返回的是分类 token 经过线性层和 tanh 激活函数处理后的结果。线性层的权重在预训练期间通过下一句预测(分类)目标进行训练。

  • hidden_states (tuple(torch.Tensor),可选,当传入 output_hidden_states=True 或 config.output_hidden_states=True 时返回) — 一个 torch.Tensor 元组(如果模型具有嵌入层,则包含嵌入层的输出,以及每一层的输出),形状为 (batch_size, sequence_length, hidden_size)。

    模型在每一层输出处的隐藏状态,以及可选的初始嵌入输出。

  • attentions (tuple(torch.Tensor),可选,当传入 output_attentions=True 或 config.output_attentions=True 时返回) — 一个 torch.Tensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)。

    注意力权重,即经过注意力 softmax 之后的权重,用于在自注意力头中计算加权平均值。

get_audio_features

< >

( input_features: Tensorinput_features_mask: Tensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → EmbeddingGemma2AudioModelOutput or tuple(torch.Tensor)

参数

  • input_features (torch.Tensor,形状为 (num_images, seq_length, num_features)) — 与输入音频对应的张量。
  • input_features_mask (torch.Tensor,形状为 (num_images, seq_length)) — 输入音频的注意力掩码。

返回值

EmbeddingGemma2AudioModelOutput 或 tuple(torch.Tensor)

EmbeddingGemma2AudioModelOutput 或 torch.Tensor 元组(当传入 return_dict=False 或 config.return_dict=False 时),其包含的元素取决于配置(EmbeddingGemma2Config)和输入。

将音频编码器的最后一个隐藏状态投影到语言模型空间。

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

  • pooler_output (torch.Tensor,形状为 (batch_size, hidden_size)) — 序列中第一个 token(分类 token)的最后一层隐藏状态,经过用于辅助预训练任务的层进一步处理后得到。例如,对于 BERT 系列模型,这返回的是分类 token 经过线性层和 tanh 激活函数处理后的结果。线性层的权重在预训练期间通过下一句预测(分类)目标进行训练。

  • hidden_states (tuple(torch.Tensor),可选,当传入 output_hidden_states=True 或 config.output_hidden_states=True 时返回) — 一个 torch.Tensor 元组(如果模型具有嵌入层,则包含嵌入层的输出,以及每一层的输出),形状为 (batch_size, sequence_length, hidden_size)。

    模型在每一层输出处的隐藏状态,以及可选的初始嵌入输出。

  • attentions (tuple(torch.Tensor),可选,当传入 output_attentions=True 或 config.output_attentions=True 时返回) — 一个 torch.Tensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)。

    注意力权重,即经过注意力 softmax 之后的权重,用于在自注意力头中计算加权平均值。

  • attention_mask (torch.BoolTensor, 可选) — 形状为 (batch_size, num_frames) 的 torch.BoolTensor。有效位置为 True,填充位置为 False。

Update on GitHub