【问题标题】:T5 model custom vocabularyT5模型自定义词汇
【发布时间】:2020-10-12 14:36:54
【问题描述】:

有没有办法在 T5 模型中选择我的自定义词汇表,同时针对文本摘要任务进行微调?

我尝试使用句子模型来创建我的自定义标记器,但该模型预测了一些标记器中不存在的标记,因此标记器将其视为未知标记。

【问题讨论】:

标签: python pytorch huggingface-transformers


【解决方案1】:

添加少量标记是可以的,但您不能同时使用完全不同的词汇和微调!预训练的权重是用预训练的词汇进行训练的:)如果你改变词汇,训练的权重变得毫无意义和无效!如果你想使用另一个词汇,你必须从头开始训练!要将标记添加到词汇表中,您可以执行以下操作:

tokenizer = BertTokenizer.from_pretrained(model_name)
tokenizer.add_tokens(['new', 'codekali', 'blabla'])
model = Bert.from_pretrained(model_name, return_dict=False)
     
model.resize_token_embeddings(len(tokenizer))

最后一行很重要,因为您需要告诉模型令牌的数量发生了变化。

【讨论】:

  • 谢谢@Berkay。这很晚但很有用
【解决方案2】:

您可以使用Tokenizer.add_tokens() 添加新令牌。更多细节可以在拥抱脸here找到。

【讨论】:

  • 如果可以,添加少量令牌。但我只需要使用我的词汇。我不想使用构建 t5 模型的词汇表......但是这样做会生成 unk 令牌,因为它映射到令牌(如果训练它的词汇表)
  • 您必须特别提及您的自定义词汇,以便它不使用默认词汇。
  • 该选项在哪里可以指定我的自定义词汇?
  • 我不确定,但一种解决方法是将您的自定义词汇文件重命名为原始词汇文件。
猜你喜欢
  • 2019-05-14
  • 1970-01-01
  • 2022-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-29
  • 1970-01-01
  • 2023-01-05
相关资源
最近更新 更多