Transformers 4.37 中文文档(四十三)(4)

简介: Transformers 4.37 中文文档(四十三)

Transformers 4.37 中文文档(四十三)(3)https://developer.aliyun.com/article/1565193


MBartForCausalLM

class transformers.MBartForCausalLM

<来源>

( config )
forward

<来源>

( input_ids: LongTensor = None attention_mask: Optional = None encoder_hidden_states: Optional = None encoder_attention_mask: Optional = None head_mask: Optional = None cross_attn_head_mask: Optional = None past_key_values: Optional = None inputs_embeds: Optional = None labels: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.CausalLMOutputWithCrossAttentions or tuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor,形状为(batch_size, sequence_length)) — 词汇表中输入序列标记的索引。默认情况下将忽略填充。
    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。
    什么是输入 ID?
  • attention_mask (torch.Tensor,形状为(batch_size, sequence_length)可选) — 用于避免对填充标记索引执行注意力的掩码。掩码值在[0, 1]中选择:
  • 1 表示未被掩盖的标记,
  • 0 表示被掩盖的标记。
  • 什么是注意力掩码?
  • encoder_hidden_states (torch.FloatTensor,形状为(batch_size, sequence_length, hidden_size)可选) — 编码器最后一层的隐藏状态序列。如果模型配置为解码器,则在交叉注意力中使用。
  • encoder_attention_mask (torch.FloatTensor,形状为(batch_size, sequence_length)可选) — 用于避免对编码器输入的填充标记索引执行注意力的掩码。如果模型配置为解码器,则在交叉注意力中使用。掩码值在[0, 1]中选择:
  • head_mask (torch.Tensor,形状为(decoder_layers, decoder_attention_heads)可选) — 用于使注意力模块中选择的头部失效的掩码。掩码值在[0, 1]中选择:
  • 1 表示头部未被掩盖,
  • 0 表示头部被掩盖。
  • cross_attn_head_mask (torch.Tensor,形状为(decoder_layers, decoder_attention_heads)可选) — 用于使交叉注意力模块中选择的头部失效的掩码。掩码值在[0, 1]中选择:
  • 1 表示头部未被掩盖,
  • 0 表示头部被掩盖。
  • past_key_values (tuple(tuple(torch.FloatTensor)), optional, returned when use_cache=True is passed or when config.use_cache=True) — 长度为 config.n_layerstuple(torch.FloatTensor) 元组,每个元组有 2 个形状为 (batch_size, num_heads, sequence_length, embed_size_per_head) 的张量和 2 个额外的形状为 (batch_size, num_heads, encoder_sequence_length, embed_size_per_head) 的张量。当模型用作序列到序列模型中的解码器时,只有在需要时才需要这两个额外的张量。
    包含预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码(参见 past_key_values 输入)。
    如果使用了 past_key_values,用户可以选择仅输入最后的 decoder_input_ids(那些没有将其过去的键值状态提供给此模型的)的形状为 (batch_size, 1),而不是形状为 (batch_size, sequence_length) 的所有 decoder_input_ids
  • labels (torch.LongTensor of shape (batch_size, sequence_length), optional) — 用于计算被“masked”的语言建模损失的标签。索引应该在 [0, ..., config.vocab_size] 或 -100(参见 input_ids 文档字符串)。索引设置为 -100 的标记将被忽略(被“masked”),损失仅计算具有标签在 [0, ..., config.vocab_size] 的标记。
  • use_cache (bool, optional) — 如果设置为 True,则返回 past_key_values 键值状态,可用于加速解码(参见 past_key_values)。
  • 对于未被“masked”的标记为 1,
  • 对于被masked的标记为 0。
  • output_attentions (bool, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的 attentions
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通元组。

返回

transformers.modeling_outputs.CausalLMOutputWithCrossAttentions 或 tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.CausalLMOutputWithCrossAttentions 或一个 torch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时)包含根据配置(MBartConfig)和输入的不同元素。

  • loss (torch.FloatTensor of shape (1,), optional, returned when labels is provided) — 语言建模损失(用于下一个标记的预测)。
  • logits (torch.FloatTensor of shape (batch_size, sequence_length, config.vocab_size)) — 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。
  • hidden_states (tuple(torch.FloatTensor), optional, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — torch.FloatTensor 元组(如果模型有嵌入层,则为嵌入输出的一个 + 每层输出的一个)的形状为 (batch_size, sequence_length, hidden_size)
    模型在每一层输出的隐藏状态加上可选的初始嵌入输出。
  • attentions (tuple(torch.FloatTensor), optional, returned when output_attentions=True is passed or when config.output_attentions=True) — torch.FloatTensor 元组(每层一个)的形状为 (batch_size, num_heads, sequence_length, sequence_length)
    在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
  • cross_attentions (tuple(torch.FloatTensor)可选,当传递 output_attentions=Trueconfig.output_attentions=True 时返回) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组(每层一个)。
    在注意力 softmax 之后的交叉注意力权重,用于计算交叉注意力头中的加权平均值。
  • past_key_values (tuple(tuple(torch.FloatTensor))可选,当传递 use_cache=Trueconfig.use_cache=True 时返回) — 长度为 config.n_layerstorch.FloatTensor 元组,每个元组包含自注意力和交叉注意力层的缓存键、值状态。仅在 config.is_decoder = True 时相关。
    包含预先计算的隐藏状态(注意力块中的键和值),可以用于加速顺序解码(查看 past_key_values 输入)。

示例:

>>> from transformers import AutoTokenizer, MBartForCausalLM
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/mbart-large-cc25")
>>> model = MBartForCausalLM.from_pretrained("facebook/mbart-large-cc25", add_cross_attention=False)
>>> assert model.config.is_decoder, f"{model.__class__} has to be configured as a decoder."
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> expected_shape = [1, inputs.input_ids.shape[-1], model.config.vocab_size]
>>> list(logits.shape) == expected_shape
True

TensorFlow 隐藏 TensorFlow 内容

TFMBartModel

class transformers.TFMBartModel

<来源>

( config: MBartConfig *inputs **kwargs )

参数

  • config (MBartConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained() 方法以加载模型权重。

裸的 MBART 模型,输出原始的隐藏状态,没有特定的头部。该模型继承自 TFPreTrainedModel。查看超类文档以获取库实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。

该模型也是一个 tf.keras.Model 的子类。将其用作常规的 TF 2.0 Keras 模型,并参考 TF 2.0 文档以获取有关一般用法和行为的所有相关信息。

transformers 中的 TensorFlow 模型和层接受两种格式的输入:

  • 将所有输入作为关键字参数(类似于 PyTorch 模型),或
  • 将所有输入作为列表、元组或字典放在第一个位置参数中。

支持第二种格式的原因是,Keras 方法在将输入传递给模型和层时更喜欢这种格式。由于这种支持,当使用 model.fit() 等方法时,应该可以正常工作 - 只需传递您的输入和标签以任何 model.fit() 支持的格式!但是,如果您想在 Keras 方法之外使用第二种格式,比如在使用 Keras Functional 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 attention_mask: tf.Tensor | None = None decoder_input_ids: tf.Tensor | None = None decoder_attention_mask: tf.Tensor | None = None decoder_position_ids: tf.Tensor | None = None head_mask: tf.Tensor | None = None decoder_head_mask: tf.Tensor | None = None cross_attn_head_mask: tf.Tensor | None = None encoder_outputs: Optional[Union[Tuple, TFBaseModelOutput]] = None past_key_values: Tuple[Tuple[tf.Tensor]] | None = None inputs_embeds: tf.Tensor | None = None decoder_inputs_embeds: tf.Tensor | None = None use_cache: Optional[bool] = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: Optional[bool] = False **kwargs ) → export const metadata = 'undefined';transformers.modeling_tf_outputs.TFSeq2SeqModelOutput or tuple(tf.Tensor)

参数

  • input_ids(形状为(batch_size, sequence_length)tf.Tensor)— 词汇表中输入序列标记的索引。
    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。
    什么是输入 ID?
  • attention_mask(形状为(batch_size, sequence_length)tf.Tensor可选)— 用于避免在填充标记索引上执行注意力的掩码。在[0, 1]中选择的掩码值:
  • 1 表示标记未被“掩盖”,
  • 0 表示标记被“掩盖”。
  • 什么是注意力掩码?
  • decoder_input_ids(形状为(batch_size, target_sequence_length)tf.Tensor可选)— 词汇表中解码器输入序列标记的索引。
    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。
    什么是解码器输入 ID?
    MBart 使用特定的语言 ID 标记作为decoder_input_ids生成的起始标记,根据源语言和目标语言而变化,例如对于en_XX为 25004,对于de_DE为 25003。如果使用past_key_values,则可以选择仅输入最后的decoder_input_ids(参见past_key_values)。
    对于翻译和摘要训练,应提供decoder_input_ids。如果未提供decoder_input_ids,模型将通过将input_ids向右移动来创建此张量,以用于去噪预训练,遵循论文。
  • decoder_attention_mask(形状为(batch_size, target_sequence_length)tf.Tensor可选)— 将默认生成并忽略填充标记。不建议为大多数用例设置此项。
  • decoder_position_ids(形状为(batch_size, sequence_length)tf.Tensor可选)— 每个解码器输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]中选择。
  • head_mask(形状为(encoder_layers, encoder_attention_heads)tf.Tensor可选)— 用于在编码器中使注意力模块的选定头部失效的掩码。在[0, 1]中选择的掩码值:
  • 1 表示头部未被“掩盖”,
  • 0 表示头部被“掩盖”。
  • decoder_head_mask(形状为(decoder_layers, decoder_attention_heads)tf.Tensor可选)— 用于在解码器中使注意力模块的选定头部失效的掩码。在[0, 1]中选择的掩码值:
  • 1 表示头部未被“掩盖”,
  • 0 表示头部被“掩盖”。
  • cross_attn_head_mask(形状为(decoder_layers, decoder_attention_heads)tf.Tensor可选)— 用于使交叉注意力模块的选定头部失效的掩码。在[0, 1]中选择的掩码值:
  • 1 表示头部未被“掩盖”,
  • 0 表示头部被“掩盖”。
  • encoder_outputstf.FloatTensor可选)— 编码器最后一层的隐藏状态的输出。在解码器的交叉注意力中使用。形状为(batch_size, sequence_length, hidden_size)是一个序列
  • past_key_values (Tuple[Tuple[tf.Tensor]],长度为 config.n_layers) — 包含注意力块的预计算键和值隐藏状态。可用于加速解码。如果使用 past_key_values,用户可以选择仅输入形状为 (batch_size, 1) 的最后一个 decoder_input_ids(那些没有将其过去键值状态提供给此模型的)而不是形状为 (batch_size, sequence_length) 的所有 decoder_input_ids
  • inputs_embeds (tf.Tensor,形状为 (batch_size, sequence_length, hidden_size)可选) — 可选地,您可以直接传递嵌入表示,而不是传递 input_ids。如果您想要更多控制如何将 input_ids 索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。
  • use_cache (bool可选,默认为 True) — 如果设置为 True,将返回 past_key_values 键值状态,可用于加速解码(参见 past_key_values)。在训练期间设置为 False,在生成期间设置为 True
  • output_attentions (bool可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量中的 attentions。此参数仅在急切模式下使用,在图模式下将使用配置中的值。
  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的 hidden_states。此参数仅在急切模式下使用,在图模式下将使用配置中的值。
  • return_dict (bool可选) — 是否返回一个 ModelOutput 而不是一个普通元组。此参数可以在急切模式下使用,在图模式下该值将始终设置为 True。
  • training (bool可选,默认为 False) — 是否在训练模式下使用模型(一些模块,如丢弃模块,在训练和评估之间具有不同的行为)。

返回

transformers.modeling_tf_outputs.TFSeq2SeqModelOutput 或 tuple(tf.Tensor)

一个 transformers.modeling_tf_outputs.TFSeq2SeqModelOutput 或一个 tf.Tensor 元组(如果传递 return_dict=Falseconfig.return_dict=False)包含各种元素,具体取决于配置(MBartConfig)和输入。

  • last_hidden_state (tf.Tensor,形状为 (batch_size, sequence_length, hidden_size)) — 模型解码器最后一层的隐藏状态序列输出。
    如果使用 past_key_values,则仅输出形状为 (batch_size, 1, hidden_size) 的序列的最后一个隐藏状态。
  • past_key_values (List[tf.Tensor], 可选, 当传递 use_cache=Trueconfig.use_cache=True 时返回) — 长度为 config.n_layerstf.Tensor 列表,每个张量的形状为 (2, batch_size, num_heads, sequence_length, embed_size_per_head)
    包含解码器的预计算隐藏状态(注意力块中的键和值)可以用于加速顺序解码。
  • decoder_hidden_states (tuple(tf.Tensor)可选,当传递 output_hidden_states=Trueconfig.output_hidden_states=True 时返回) — 形状为 (batch_size, sequence_length, hidden_size)tf.Tensor 元组(一个用于嵌入的输出 + 一个用于每层的输出)。
    解码器在每一层的隐藏状态以及初始嵌入输出。
  • decoder_attentionstuple(tf.Tensor)可选,当传递output_attentions=True或当config.output_attentions=True时返回)— 形状为(batch_size, num_heads, sequence_length, sequence_length)tf.Tensor元组。
    解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
  • cross_attentionstuple(tf.Tensor)可选,当传递output_attentions=True或当config.output_attentions=True时返回)— 形状为(batch_size, num_heads, sequence_length, sequence_length)tf.Tensor元组。
    解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。
  • encoder_last_hidden_state(形状为(batch_size, sequence_length, hidden_size)tf.Tensor可选)— 模型编码器最后一层的隐藏状态序列。
  • encoder_hidden_statestuple(tf.Tensor)可选,当传递output_hidden_states=True或当config.output_hidden_states=True时返回)— 形状为(batch_size, sequence_length, hidden_size)tf.Tensor元组(用于嵌入输出和每一层的输出)。
    编码器在每一层的隐藏状态加上初始嵌入输出。
  • encoder_attentionstuple(tf.Tensor)可选,当传递output_attentions=True或当config.output_attentions=True时返回)— 形状为(batch_size, num_heads, sequence_length, sequence_length)tf.Tensor元组。
    编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

TFMBartModel 的前向方法,覆盖了__call__特殊方法。

虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module实例,而不是在此处调用,因为前者会负责运行前后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, TFMBartModel
>>> import tensorflow as tf
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/mbart-large-cc25")
>>> model = TFMBartModel.from_pretrained("facebook/mbart-large-cc25")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")
>>> outputs = model(inputs)
>>> last_hidden_states = outputs.last_hidden_state


Transformers 4.37 中文文档(四十三)(5)https://developer.aliyun.com/article/1565195

相关文章
|
运维 Devops 测试技术
云效产品使用报错问题之云效度量的缺陷累积流图,缺陷的“已完成”这条线未更新,如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
SQL 关系型数据库 MySQL
MySQL 高级(进阶) SQL 语句
MySQL 提供了丰富的高级 SQL 语句功能,能够处理复杂的数据查询和管理需求。通过掌握窗口函数、子查询、联合查询、复杂连接操作和事务处理等高级技术,能够大幅提升数据库操作的效率和灵活性。在实际应用中,合理使用这些高级功能,可以更高效地管理和查询数据,满足多样化的业务需求。
1661 3
LiteFlow学习三之业务编排处理之外
LiteFlow学习三之业务编排处理之外
651 0
|
JavaScript Java 程序员
Java 8新特性解析:Lambda表达式与函数式编程
【2月更文挑战第12天】 本文深入探讨Java 8引入的两大革命性特性:Lambda表达式和函数式编程接口,旨在为Java开发者提供一个清晰的指南,帮助他们理解和应用这些新特性以提升代码的简洁性和效率。通过对Lambda表达式的基本概念、语法及其与函数式接口的结合使用进行详细分析,本文展示了如何利用这些新特性来编写更加简洁、易读且易于维护的代码。同时,文章还将通过实例探讨Lambda表达式在实际开发中的应用,包括在集合处理、事件监听和并发编程等方面的具体使用场景,以期让读者能够充分理解并有效利用Java 8的这些新工具,从而在日常开发工作中提高效率。
|
存储 安全
FreeRTOS入门教程(队列的概念及相关函数介绍)
FreeRTOS入门教程(队列的概念及相关函数介绍)
398 0
|
关系型数据库 PHP 数据库
|
机器学习/深度学习 Java Spring
|
3天前
|
存储 JavaScript 前端开发
JavaScript基础
本节讲解JavaScript基础核心知识:涵盖值类型与引用类型区别、typeof检测类型及局限性、===与==差异及应用场景、内置函数与对象、原型链五规则、属性查找机制、instanceof原理,以及this指向和箭头函数中this的绑定时机。重点突出类型判断、原型继承与this机制,助力深入理解JS面向对象机制。(238字)
|
2天前
|
云安全 人工智能 安全
阿里云2026云上安全健康体检正式开启
新年启程,来为云上环境做一次“深度体检”
1477 6