GPT-2添加PAD token

GPT-2和GPT-3模型(包括其他类似系列)通常没有内置的PAD token,因为它们主要用于生成任务,而这些任务通常不需要填充。然而,在一些特定任务(如批量处理或序列对齐)中,添加PAD token是必要的。你可以通过以下几种方式添加PAD token,并且每种方法有其特定的用途和影响:

1. 使用已有的特殊token作为PAD token

可以将现有的特殊token(如EOS token)设置为PAD token。这种方法简单直接,但需要确保该特殊token在模型的训练和推理中不会引发歧义。 

tokenizer.pad_token = tokenizer.eos_token

2. 添加一个新的PAD token

你可以显式地添加一个新的PAD token。这是最推荐的方法,因为它不会与其他特殊token混淆,并且你可以完全控制PAD token的行为。

 方法1:通过 add_special_tokens

tokenizer.add_special_tokens({'pad_token': '[PAD]'})

方法2:直接设置PAD token 

tokenizer.pad_token = '[PAD]'

3. 添加多个新的特殊token

如果需要同时添加多个特殊token(如PAD、CLS、SEP等),可以使用如下方法:

 

tokenizer.add_special_tokens({'pad_token': '[PAD]','cls_token': '[CLS]','sep_token': '[SEP]'
})

区别和影响

  1. 使用已有的特殊token作为PAD token

    • 优点:简单快捷。
    • 缺点:可能会在特定任务中引发歧义,因为相同的token可能在不同场景下有不同的意义。
  2. 添加新的PAD token

    • 优点:明确区分PAD token与其他特殊token,避免混淆。
    • 缺点:需要重新调整模型的词汇表和嵌入层。
  3. 添加多个新的特殊token

    • 优点:在需要多个特殊token的复杂任务中非常有用。
    • 缺点:需要更多的资源和时间来处理和管理这些token。

添加PAD token的注意事项

  • 重新训练嵌入层:在添加新的特殊token后,需要重新训练或调整模型的嵌入层,以包含新的token。
  • 调整词汇表大小:确保模型的词汇表大小与添加的特殊token一致。
  • 处理填充逻辑:在数据预处理和模型训练中,需要正确处理填充逻辑,以确保模型正确理解和忽略填充部分。

例子

以下是一个添加PAD token并调整模型词汇表的完整例子:

from transformers import GPT2Tokenizer, GPT2Model# 加载预训练的GPT-2模型和tokenizer
tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
model = GPT2Model.from_pretrained('gpt2')# 添加新的PAD token
tokenizer.add_special_tokens({'pad_token': '[PAD]'})# 调整模型词汇表大小以匹配新的tokenizer
model.resize_token_embeddings(len(tokenizer))# 打印以验证PAD token是否已成功添加
print(tokenizer.pad_token)        # [PAD]
print(tokenizer.pad_token_id)     # 新添加的PAD token的ID

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/15768.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

翻译《The Old New Thing》- What‘s the deal with the EM_SETHILITE message?

Whats the deal with the EM_SETHILITE message? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20071025-00/?p24693 Raymond Chen 2007年10月25日 简要 文章讨论了EM_SETHILITE和EM_GETHILITE消息在文档中显示为“未实现”的原因。这些…

前端 JS 经典:Web 性能指标

什么是性能指标:Web Performance Metrics 翻译成 Web 性能指标,一般和时间有关系,在短时间内做更多有意义的事情。 一个站点表现得好与不好,标准在于用户体验,而用户体验好不好,有一套 RAIL 模型来衡量。这…

大专学历java能找到工作吗

就低学历就业的情况,大专学历的职业上限基本上是中小公司的开发小组长,中专或同等学历的职业上限一般是软件小作坊的项目经理。当下大专学历能进大公司的可能性不能说没,但相比前几年,少了太多。有稳定业务渠道的软件公司&#xf…

Vue.js功能实现博客

Vue.js功能实现博客 一、前言 Vue.js 是一款构建用户界面的渐进式框架。今天我们将通过一个简单的示例来展示如何使用 Vue.js 创建一个简单的计数器功能,并在此过程中解释每个步骤。 二、环境准备 在开始之前,请确保你的开发环境中已经安装了 Node.j…

音视频学习规划

文章目录 概述闲聊点 小结 概述 最近在学习音视频,觉得还是要先写个提纲,给自己制定下学习路线及目标。先写下我的个人流程及思路。 ffmpeg的命令ffmpeg api播放器流媒体RTMP,HLS 闲聊点 先说下学习命令行吧,学习命令行是为了…

GitHub的原理及应用详解(六)

本系列文章简介: GitHub是一个基于Git版本控制系统的代码托管平台,为开发者提供了一个方便的协作和版本管理的工具。它广泛应用于软件开发项目中,包括但不限于代码托管、协作开发、版本控制、错误追踪、持续集成等方面。 GitHub的原理可以简单…

Spring Cloud 项目在网关聚合 Swagger 文档

文章目录 Spring Cloud 项目在网关聚合 Swagger 文档各个微服务的改动改动一:新增依赖改动二:新增配置类关键项说明 Gateway 的改动改动一:新增依赖改动二:新增配置类和处理类改动三:改动配置文件 Spring Cloud 项目在…

一千题,No.0026(Ternary String)

描述 You are given a string s such that each its character is either 1, 2, or 3. You have to choose the shortest contiguous substring of s such that it contains each of these three characters at least once. A contiguous substring of string s is a string …

Python3 笔记:IDLE的几个基本设置

1、设置字体: Options > Configure IDLE > Fonts 2、设置文字颜色(设置高亮): Options > Configure IDLE > Highlights 3、设置背景颜色: Options > Configure IDLE > Highlights 4、设置窗口&a…

各位数字和-第13届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第72讲。 各位数字和&#…

MongoDB(介绍,安装,操作,Springboot整合MonggoDB)

目录 MongoDB 1 MongoDB介绍 MongoDB简介 MongoDB的特点 MongoDB使用场景 小结 2 MongoDB安装 安装MongoDB 连接MongoDB MongoDB逻辑结构 MongoDB数据类型 小结 3 MongoDB操作 操作库和集合 操作文档-增删改 操作文档-查询 MongoDB索引 小结 4 SpringBoot整合…

c# sqlite使用

安装包 使用 const string strconn "Data Sourcedata.db"; using (SQLiteConnection conn new SQLiteConnection(strconn)) {conn.Open();var cmd conn.CreateCommand();cmd.CommandText "select 1";var obj cmd.ExecuteScalar();MessageBox.Show(ob…

ES 查询踩坑-全字段匹配

需求:name字段需要全匹配查询 name的映射 普通的must查询 GET power_engin/_search {"from": 0,"size": 10,"query": {"bool": {"must": [{"term": {"name": {"value": "尼…

刷题之路径总和Ⅲ(leetcode)

路径总和Ⅲ 这题和和《为K的数组》思路一致&#xff0c;也是用前缀表。 代码调试过&#xff0c;所以还加一部分用前序遍历数组和中序遍历数组构造二叉树的代码。 #include<vector> #include<unordered_map> #include<iostream> using namespace std; //Def…

python从入门到精通01

一、程序员计算器 number int(input("请输入一个数字&#xff1a;")) print("二进制",bin(number)) print("八进制",oct(number)) print("十六进制",hex(number))二、给电影打分 score int(input("请给电影《肖申克的救赎》打…

计算机毕业设计Hadoop+Hive地震预测系统 地震数据分析可视化 地震爬虫 大数据毕业设计 Spark 机器学习 深度学习 Flink 大数据

2024 届本科毕业论文&#xff08;设计&#xff09; 基于Hadoop的地震预测的 分析与可视化研究 姓 名&#xff1a;____田伟情_________ 系 别&#xff1a;____信息技术学院___ 专 业&#xff1a;数据科学与大数据技术 学 号&#xff1a;__2011103094________ 指导…

【大数据面试题】33 Flink SQL做过哪些优化?

一步一个脚印&#xff0c;一天一道面试题 简单写几个 Flink SQL 的优化 1.优化状态管理 Flink 的状态管理对整个程序的性能有较大影响。所以优化效果比较好。 设置空闲状态自动清理&#xff08;TTL Time-to-Live&#xff09;数据量大时选择 RocksDBStateBackend // 设置状…

《图解支付系统设计与实现》电子书_V20240525

相较于上次公开发布的V20240503版本&#xff0c;变更内容如下&#xff1a; 根据掘金网友zz67373&#xff08;李浩铭&#xff09;的勘误建议&#xff0c;优化了部分描述。增加&#xff1a;金额处理规范&#xff0c;低代码报文网关实现完整代码&#xff0c;分布式流控等内容。扩…

Java虚拟机原理(下)-Dalvik vs ART-探秘Android虚拟机内在机制

Android系统作为移动端主流平台&#xff0c;其高效的虚拟机无疑是其核心竞争力之一。今天&#xff0c;就让我们一起剥开Dalvik和ART虚拟机的外衣&#xff0c;深入解析它们的工作原理和优缺点&#xff0c;帮助你全面把握Android系统的运行机制。 正文导览 Dalvik和ART虚拟机的发…

Openstack all-in-one_ironic 部署测试

1. 基础环境 apt update apt install git python3-dev libffi-dev gcc libssl-dev apt install python3-venv 2. 设置虚拟环境变量 root@controller01:~# python3 -m venv /deploy/venv root@controller01:~# source /deploy/venv/bin/activate (venv) root@controller01:~#…