首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HuggingFace T5转换器模型-如何准备自定义数据集进行微调?

HuggingFace T5转换器模型-如何准备自定义数据集进行微调?
EN

Stack Overflow用户
提问于 2021-08-02 17:02:42
回答 1查看 804关注 0票数 0

我试图使用HuggingFace库来使用自定义数据集对T5转换器模型进行微调。HF提供了一个使用自定义数据进行微调的例子,但是这是针对蒸馏器模型的,而不是我想要使用的T5模型。从他们的示例中可以看出,我需要在dataset子类中实现lengetitem方法,但是在使用t5而不是蒸馏器时,似乎没有太多的文档说明要更改什么。下面是令牌程序代码,然后是我试图更改getitem的尝试

方法码

以及trainer.train()产生的错误,即“KeyError:‘标签’”

trainer.train()错误消息

我已经看到了下面的讨论,它似乎与这个问题有关,但是提供的答案仍然会在trainer.train()中产生一个错误,如果有用的话,我也可以发布这个错误。

使用“使用自定义数据进行微调”的原始示例代码,dataset类是:

hf蒸馏器的原始代码在T5中的应用

但是,培训师的错误改变了:

高频蒸馏训练器误差在T5中的应用

这就是最初让我四处寻找解决方案的原因。因此,使用“使用自定义数据进行微调”似乎并不像更改模型和标记器(以及您正在培训的输入/输出数据)一样简单,因为当从蒸馏器切换到文本模型(如T5 )时。蒸馏器没有任何输出文本可以训练,所以我会想(但我知道什么呢?)这与T5不同,但我无法找到关于如何使用的文档。在这个问题的底部似乎指向了要遵循的方向,但是我再次不知道(很多!)

我想我可能已经解决了这个问题(至少教练跑并完成了)。蒸馏器模型没有输出文本,它具有作为整数列表提供给dataset类的标志。T5模型有输出文本,因此您可以分配输出编码,并依赖DataCollatorForSeq2Seq()来准备T5模型所期望的数据/特性。请参阅更改(对于T5),并注释掉HF代码(对于蒸馏器)如下:

更改T5 -注释掉的馏出代码

向HuggingFace提出了一个问题,他们建议,他们网站上使用自定义数据集示例进行的微调已经过时,我需要解决他们维护的示例

EN

回答 1

Stack Overflow用户

发布于 2022-01-30 05:39:43

根据您的截图,我将如何实现lengetitem

代码语言:javascript
复制
class ToxicDataset(torch.utils.data.Dataset):
    def __init__(self, encodings, labels):
        self.encodings = encodings
        self.labels = labels
    def __getitem__(self, idx):
        item = {key: torch.tensor(val[idx]) for key, val in self.encodings.items()}
        item['labels'] = torch.tensor(self.labels['input_ids'][idx])
        return item
    def __len__(self):
        return len(self.labels['input_ids']) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68625465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档