在 Pytorch 的数据处理中使用 tokenizer 的最佳函数/阶段是什么?

问题描述 投票:0回答:2

我正在子类化

torch.utils.data.Dataset
并编写一个整理函数以分别传递给 Dataloader 的
dataset
collate_fn
参数。

在数据集的

__getitem__
collate_fn
之间,我想知道使用 tokenizer(huggingface 的 FastTokenizer)的最佳函数是什么(或者这两个中是否有另一个我不知道的更好的选择?)

在我看来,

collate_fn
是最好的选择,因为我可以使用分词器来分词并为整个批次添加填充,这也有助于提高分词速度。但我不确定它是否会在未来(如果不是现在)引起任何问题,因为我的一些队友开始使用/自定义我的代码。

pytorch nlp
2个回答
3
投票

都不是。您希望在训练之前批量标记整个数据集。训练期间的标记化会减慢速度,并且如果您要进行多个时期,则很浪费(您将多次标记相同的项目)。

您应该首先对整个数据集进行标记。然后在你的整理函数中进行批处理和填充。

听起来您正在使用 Huggingface 分词器 - 您还应该使用 Huggingface 数据集及其提供的整理函数。


0
投票

将其应用在

collate_fn
上会更有效,因为分词器接受文本列表(批次),特别是如果序列需要以固定长度填充,则您将按批次进行处理

© www.soinside.com 2019 - 2024. All rights reserved.