Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用数据集、标记器和torch数据集和数据采集器进行动态令牌化

使用数据集、标记器和torch数据集和数据采集器进行动态令牌化
EN

Stack Overflow用户
提问于 2020-12-05 09:15:55
回答 1查看 1.7K关注 0票数 4

我有一个关于“飞行中”标记的问题。这个问题是通过阅读“如何从零开始使用变形金刚和托卡器来训练一个新的语言模型”这里提出的。最后有一句话:“如果您的数据集非常大,可以选择动态加载和标记示例,而不是作为预处理步骤”。我尝试了一种将datasetstokenizers结合起来的解决方案,但是没有找到一个好的模式。

我想这个解决方案需要将一个数据集包装到Pytorch数据集中。

作为文档的一个具体例子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import torch

class SquadDataset(torch.utils.data.Dataset):
    def __init__(self, encodings):
        # instead of doing this beforehand, I'd like to do tokenization on the fly
        self.encodings = encodings 

    def __getitem__(self, idx):
        return {key: torch.tensor(val[idx]) for key, val in self.encodings.items()}

    def __len__(self):
        return len(self.encodings.input_ids)

train_dataset = SquadDataset(train_encodings)

如何利用令牌程序的矢量化功能来实现“动态”令牌化?

EN

回答 1

Stack Overflow用户

发布于 2020-12-08 13:55:52

更新2021年2月

从v1.3.0开始,数据集支持通过set_transform方法对函数进行延迟评估。因此,您可以像显示的这里那样直接应用动态标记化。

旧答案

最后,我接受了这个解决方案。我不喜欢batch_size现在被控制在dataset级别。然而,它做好了自己的工作。

通过这种方式,我们利用了两种美好的东西:

  • 快速索引HuggingFace数据集
  • HuggingFace令牌程序的矢量化能力
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class CustomPytorchDataset(Dataset):
    """
    This class wraps the HuggingFace dataset and allows for 
    batch indexing into the dataset. This allows exploiting
    the capabilities of the tokenizer to work on batches.

    NOTE: now we control batch_size at the Dataset level, not
    in the DataLoader therefore the DataLoader should always be
    used with `batch_size=1`.
    """

    def __init__(self, batch_size: int):
        self.batch_size = batch_size
        self.dataset = train_ds          # HuggingFace dataset
        self.tokenizer = bert_tokenizer  # HuggingFace tokenizer

    def __getitem__(self, batch_idx: List[int]):
        instance = self.dataset[batch_idx]

        # tokenize on-the-fly
        tokenized_instance = self.tokenizer(
            instance[text_col], 
            truncation=True, 
            padding=True
        )
        
        return tokenized_instance

    def __len__(self):
        return len(self.dataset)

    def sampler(self):
        # shuffling can be controlled by the sampler, 
        # without touching the dataset
        return BatchSampler(
            SequentialSampler(self), 
            batch_size=self.batch_size, 
            drop_last=True
        )

    @staticmethod
    def collate_fn(batches: List[Dict[str, int]]):
        return {
            k: torch.tensor(v, dtype=torch.int64) 
            for k, v in batches[0].items()
        }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65159768

复制
相关文章
博客换回默认主题
看到过不少很炫酷的个人网站 自己也写了几个 typecho 主题 越来越觉得搞那些花里胡哨的卵用没得 还是要生产内容才是王道
eallion
2022/12/20
2780
把 Incoming Links 换回 technorati
在早前测试 WordPress 2.3 Beta 版本的时候!就对把 Incoming Links 换成 Google Blog Search 感觉不爽,感觉目前 Google Blog Search 除了显示自己的链接之外,别的就没有搜索过了,都不知道干吗去了!还是 technorati 好。
Denis
2023/04/13
2450
前端如何优雅切图
前端切图历史悠久,或许那时候不叫前端,叫页面重构师。之所以页面重构师要自己动手切图,是因为面对多种多样的页面效果,UI设计师不知道每一张图的需求,常常会引发流血冲突,带来不可挽回的生命危险。 切图能体现页面重构师的经验和能力,如果你拿到手的是psd文件,那么你可以看看“存储为 Web 和设备所用格式”的切法。
疯狂的技术宅
2019/03/28
9520
前端如何优雅切图
如何评估活动效果?
答:推广渠道的曝光量增加了30%、落地页面点击率70%、活动期间有6万用户参与……(此处省略各种指标)。
猴子数据分析
2021/01/09
1.4K0
如何评估活动效果?
答:推广渠道的曝光量增加了30%、落地页面点击率70%、活动期间有6万用户参与……(此处省略各种指标)。
猴子数据分析
2020/10/21
8070
如何提升TPM活动的成功概率?
TPM的实践需要全员参与,因此在开始TPM活动之前,需要建立共识并向全员解释TPM的目的和优点。这有助于员工理解TPM的价值,增强他们对TPM的支持度,并使TPM的实践更加顺利。
用户9972271
2023/04/25
3140
如何使用Aced分析活动目录的DACL
Aced是一款针对活动目录的安全检测与分析工具,该工具可以帮助广大研究人员解析单个目标活动目录的DACL。Aced可以针对目标帐户识别可疑的入站访问权限,解析入站权限的SID,并将该数据呈现给研究人员。除此之外,Aced还整合了pyldapsearch工具的日志记录功能,可以在本地记录目标主体的LDAP属性,而pyldapsearch的配套工具BOFHound可以对这些属性进行解析,随后我们可以将收集到的数据导入到BloodHound中进行后续操作。
FB客服
2022/11/14
6240
如何使用Aced分析活动目录的DACL
WordPress 不想用 CDN 了,如何替换回服务器本地图片?
我们继续来解答 WPJAM Basic 插件「CDN 加速」功能的常见问题,今天是一个反向操作的问题,不想用 CDN 之后如何替换回服务器本地图片?
Denis
2023/04/13
8250
WordPress 不想用 CDN 了,如何替换回服务器本地图片?
如何衡量品牌活动的有效性?
译者:李晓艳 本文长度为1313字,预估阅读时间3分钟。 摘要:本文作者介绍了从线上品牌调查、查看“浏览率”两种途径衡量品牌活动的有效性。 在之前的文章(https://www.dialogtech.com/blog/blog/a-quick-guide-to-measuring-online-lead-gen-success)中我谈到营销人员如何决定运行哪类活动(线索主导或品牌),并专门研究了线索主导活动成功与否的衡量方法。 现在深入研究品牌活动,并且介绍一下如何评估品牌活动的成功。 什么是品牌活动? 表
iCDO互联网数据官
2018/03/05
1.9K0
[Go] 利用类型断言把interface{}的转换回原类型
当传参数的时候 ,为了方便 ,参数的类型定义成了interface{} , 如果要给这个原类型的属性赋值 , 就需要强转回去
唯一Chat
2020/05/26
6520
如何实现黑幕?即鼠标触及之地,原来黑色显示原来文字
最近在写文章时,有些比较敏感的句段想实现默认情况下黑色(遮住文字),而鼠标靠近之后显示出来这些敏感句段的功能。
可定
2020/05/07
2.8K0
如何实现黑幕?即鼠标触及之地,原来黑色显示原来文字
如何利用Photoshop进行快速切图
在UI设计中我们常常使用Ai来进行矢量图的绘制,然后导入Ps中进行设计、排版和导出。 
奔跑的小鹿
2019/01/24
9910
如何利用Photoshop进行快速切图
Mastercam如何设定车床切槽刀?
当设定好图形及刀具型式,再来就可以设定参数的部分,可依参数去设定。 1、设定刀具: 请依架刀位置、刀座、主轴及选转方向设定,完成后打勾。 刀补类型 刀具间隙: 设定前角间隙宽度及侧角间隙高度。 设定宽度,让系统知道您刀片的宽度。 可点两弧来选择,选择黄色亮显的圆弧。 在宽度下方会显示设定刀片的宽度。 显示刀具:设定好后可以点选显示刀具来确认,如下图。 可看到刀片R角,有完整的圆,这样代表设定正确。打勾这样刀具就建立好了。
lrglu
2022/03/30
1.5K0
Mastercam如何设定车床切槽刀?
中文被 json_encode 编码成 unicode 之后如何转换回中文
使用 php 自带的 json_encode 函数对数据进行编码时,中文都会变成 unicode,前面我介绍了如何使得中文不被 json_encode 不编码成 unicode。
Denis
2023/04/14
1.1K0
ERP系统如何提升模切企业的管理效率
区别于其他行业,模切制造业的模切料分切后规格繁多,呆滞料无法及时处理等问题,传统ERP系统根本无法满足模切企业的实际业务需求,如何选择到适合模切企业的ERP系统就显得尤为关键。
用户7772535
2022/04/24
4420
如何把新版Chrome的界面切回经典样式
// 我们知道,Edge 的唯一作用是下载 Chrome,这行注释了,你们是程序员应该看不到的
Edi Wang
2019/07/10
2.1K0
如何把新版Chrome的界面切回经典样式
掌握如何使用Rose绘制活动图的方法[通俗易懂]
1.案例:借鉴我校图书管理系统,根据图书信息入库、借阅、归还、检索等活动流程,分析相关活动需求和活动到活动变化,使用rational rose绘制图书管理系统中某个活动流程的一个完整过程的活动图。
全栈程序员站长
2022/08/24
4.1K0
掌握如何使用Rose绘制活动图的方法[通俗易懂]
js全局替换回车换行符
但是保存的时候不能把回车换行符保存进数据库呀,所以在保存之前要再次把回车换行符替换没了,发现用js替换\r\n无效,思考了一下,可能是html显示是自动过滤了\r,而以\n来显示吧。于是把替换代码改成:
全栈程序员站长
2022/08/31
12.3K0
js全局替换回车换行符
pycharm如何打开原来的项目_terminal怎么打开
Pycharm的下方工具栏中有两个窗口:Python Console和Terminal(如下图)
全栈程序员站长
2022/09/27
3K0
pycharm如何打开原来的项目_terminal怎么打开
点击加载更多

相似问题

用于动态数据的mat表分页器和排序问题

220

Mat分页器更改工具提示位置

30

当mat表位于NgIf内部时,mat分页器中断

60

mat分页器不显示页面信息。

310

mat-分页器宽度与mat-table不对齐

110
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文