首页 PaddleNLP 帖子详情
MapDatasets map方法中对应的batched=True怎么理解呢 已解决
收藏
快速回复
PaddleNLP 问答NLP 1858 4
MapDatasets map方法中对应的batched=True怎么理解呢 已解决
收藏
快速回复
PaddleNLP 问答NLP 1858 4

 

 

看paddlenlp文档,感觉也没有说清楚,就说了一条数据会产生多个feature,在机器阅读理解的时候会用到,想知道具体是什么意思呢,一条数据产生多个feature不是在调用tokenizer的时候加上stride参数即可吗

AIStudio9998716
已解决
4# 回复于2021-07
因为在阅读理解一个example可能变成多个feature 所以需要batched=True,一条一条是不行的
0
收藏
回复
全部评论(4)
时间顺序
小五井
#2 回复于2021-07

这个dev_trans_func转换函数的输入是多条数据,batched=True就是对整个batch的数据进行map,而不是一条一条的

 

0
回复
默默丶
#3 回复于2021-07
这个dev_trans_func转换函数的输入是多条数据,batched=True就是对整个batch的数据进行map,而不是一条一条的  

那按照道理来说,一条一条map和一个batch的数据map应该没啥差异吧,除了效率,那为啥为啥说机器阅读理解的数据处理必须要带上这个参数呀

0
回复
AIStudio9998716
#4 回复于2021-07

因为在阅读理解一个example可能变成多个feature 所以需要batched=True,一条一条是不行的

0
回复
m
mofis001
#5 回复于2022-08

用UIE中的代码为例,当map中batched=True时(不执行print那行),会报错"TypeError: list indices must be integers or slices, not str"

当batched=Fase时,执行print(train_ds[0])正常,执行print(train_ds[0: 5]) 则也会报错"TypeError: list indices must be integers or slices, not str"

原因是`utils.py`中的convert_example()只接收单条数据的dict,无法接受多条数据dict形成的list,[dict1, dict2, ...],请查证

 

train_ds = load_dataset(
        reader,
        data_path=args.train_path,
        max_seq_len=args.max_seq_len,
        lazy=False)

train_ds = train_ds.map(
        partial(
            convert_example, tokenizer=tokenizer, max_seq_len=args.max_seq_len), batched=True)

# print(train_ds[0])

 

 

 

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户