当前位置: 首页 > news >正文

NLP 中的pad/padding操作代码分析

今天分析一下NLP中的pad操作代码:

该方法的作用是将输入的序列列表seqs进行填充操作,使其具有相同的长度,以便进行批处理。填充使用指定的pad_token进行,并生成一个对应的mask标志列表,用于标记哪些部分是填充内容(值为1)和哪些部分是原始内容(值为0)。填充后的序列列表和掩盖标志列表将作为方法的返回值,供进一步使用或处理。

    @staticmethoddef _pad_seqs(seqs, pad_token):# 定义变量pad_length,通过遍历seqs token列表获取其中最长token的长度,从而将token列表的所有seq长度都填充到pad_lengthpad_length = max([len(seq) for seq in seqs])# 对seqs中的每个token列表进行填充,填充内容为pad_token,填充至长度为pad_lengthpadded = [seq + ([pad_token] * (pad_length - len(seq))) for seq in seqs]# 创建一个mask标志列表,长度为seq的长度,并将前部填充部分置为0(未经过pad),后部未填充部分置为1(经过了pad操作),添加到masks列表中。masks = [([0] * len(seq)) + ([1] * (pad_length - len(seq))) for seq in seqs]return padded, masks

输入:

  • seqs是token的list
  • pad_token是词表中预先定义的特殊字符 '<PAD>'
tokens, orig_pad_masks = self._pad_seqs(tokens, self.pad_token)

输出:

  • 填充后的token,padded[0]:['^', 'C', 'C', 'n', '1', 'c', 'c', '(', '/', 'C', '=', 'C', '2', '/', 'C', '(', '=', 'O', ')', 'N', '(', 'c', '3', 'c', 'c', 'c', '(', 'C', ')', 'c', '(', 'Cl', ')', 'c', '3', ')', 'C', '(', '=', 'O', ')', 'N', '=', 'C', '2', '[O-]', ')', 'c', '2', 'c', 'c', 'c', 'c', 'c', '2', '1', '&', '<PAD>', '<PAD>', '<PAD>', '<PAD>', '<PAD>', '<PAD>', '<PAD>']
  • mask标志列表,mask[0]:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1]

http://www.lryc.cn/news/96306.html

相关文章:

  • JavaWeb 速通HTTP
  • Vue 本地应用 图片切换 v-show v-bind实践
  • AI生成-- autocomplete 模糊搜索
  • 怎么用手机做文字二维码?文本内容在线生成二维码技巧
  • 【Ap模块EM】08-怎么让Execution Management成为第一个执行的进程?
  • 使用vscode+platformio搭建arduino开发环境
  • java后端接口实现302跳转
  • 分布式理论:CAP理论 BASE理论
  • Tensorflow学习
  • 5-Ngnix配置基于用户访问控制和IP的虚拟主机
  • springboot jar分离部署
  • Opencv 细节补充
  • 内存泄漏专题(7)hook之宏定义
  • Python 基础(十八):异常处理
  • iTOP-RK3568开发板Docker 安装 Ubuntu 18.04
  • FFmpeg AVFilter的原理(三)- filter是如何被驱动的
  • ARM day8 key1/2/3led
  • windows 系统安装sonarqube
  • Unity噪声图生成(编辑器扩展)
  • http-为什么文件上传要转成Base64
  • htmlCSS-----定位
  • 腾讯云大数据型CVM服务器实例D3和D2处理器CPU型号说明
  • 计算机科学cs/电子信息ei面试准备——数学基础/线性代数复习
  • 极速查找(2)-算法分析
  • flask路由添加参数
  • 网络安全系统教程+学习路线(自学笔记)
  • 23. 合并 K 个升序链表
  • Nexus3部署、配置+SpringBoot项目Demo
  • linux下用docker安装mysql
  • Vue - 可视化用户角色、菜单权限、按钮权限配置(动态获取菜单路由)