BartForConditionalGeneration的使用细节

本文深入解析了BartForConditionalGeneration模型的输入参数,如decoder_input_ids的生成方式,强调了decoder_start_token_id在不同情况下的差异,以及其如何影响loss计算。同时,讨论了generate函数中的max_length参数如何影响生成结果的长度。对于理解和使用Bart模型进行文本生成任务,这些细节至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. BartForConditionalGeneration 类的各个参数

先聊聊输入到 BartForConditionalGeneration 类的各个参数是什么意思?这个部分是比较重要的。

decoder_input_ids

是必须要以 <s> 开头的。这个参数可以自己生成然后传入到模型中,也可以交由代码自己生成(一般会根据label右移一位再补0)

  • case 1: 直接传入
    在这里插入图片描述
    此时的 decoder_input_ids 如下:
    在这里插入图片描述
  • case 2: 由labels 右移一位生成
    在这里插入图片描述
    在这里插入图片描述
    decoder_start_token_id 的值为2(一般需要指定),对应的token是</s>。最后返回 shifted_input_ids 作为 decoder_input_ids
    在这里插入图片描述
  • 需要注意 labels 的起始是没有 <s> token的。

细心的读者会发现这两种方法得到的 decoder_input_ids 是不同的(就是因为这个 decoder_start_token_id 值的不同)。

2.为啥下面两种方法计算的loss值不相同?

就是因为上述说的 这个 decoder_input_ids 值的原因,以及add_special_tokens参数的原因。
在这里插入图片描述
在这里插入图片描述

generate函数中的 max_length 有什么作用?

max_length : The maximum length of the sequence to be generated. 【将会被生成的句子的最大长度。】

有如下两段代码,很好奇,为啥 max_length 会对模型生成结果产生影响?理应来说不是只会限制生成长度,怎么在值不同的时候变了内容呢?
在这里插入图片描述
在这里插入图片描述

出现这个问题的原因是:max_length 参数是有默认值的,而且默认值较小,所以就会导致生成的结果很短。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

说文科技

看书人不妨赏个酒钱?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值