MapDatasets map方法中对应的batched=True怎么理解呢
收藏
看paddlenlp文档,感觉也没有说清楚,就说了一条数据会产生多个feature,在机器阅读理解的时候会用到,想知道具体是什么意思呢,一条数据产生多个feature不是在调用tokenizer的时候加上stride参数即可吗
0
收藏
请登录后评论
这个dev_trans_func转换函数的输入是多条数据,batched=True就是对整个batch的数据进行map,而不是一条一条的
那按照道理来说,一条一条map和一个batch的数据map应该没啥差异吧,除了效率,那为啥为啥说机器阅读理解的数据处理必须要带上这个参数呀
因为在阅读理解一个example可能变成多个feature 所以需要batched=True,一条一条是不行的
用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, ...],请查证