问题标签 [huggingface-transformers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 用于命名实体识别的 PyTorch Huggingface BERT-NLP
很长一段时间以来,我一直在使用 HuggingFace 的 Google BERT的PyTorch实现来处理 MADE 1.0 数据集。直到上次(2 月 11 日),我一直在使用该库并通过微调模型为我的命名实体识别任务获得0.81的F 分数。但是这周当我运行之前编译和运行的完全相同的代码时,它在执行这个语句时抛出了一个错误:
ValueError:令牌索引序列长度大于此 BERT 模型的指定最大序列长度 (632 > 512)。通过 BERT 运行此序列将导致索引错误
此colab 笔记本中提供了完整代码。
为了解决这个错误,我通过获取任何序列的前 512 个标记将上述语句修改为下面的语句,并根据 BERT 的要求进行了必要的更改,以将 [SEP] 的索引添加到截断/填充序列的末尾。
结果不应该改变,因为我只考虑序列中的前 512 个标记,然后将其截断为 75(MAX_LEN=75),但我的F-Score已降至0.40,精度降至0.27,而Recall仍然是相同(0.85)。我无法共享数据集,因为我已经签署了保密条款,但我可以确保 BERT 要求的所有预处理都已完成,并且所有扩展标记(如 (Johanson --> Johan ##son))都已标记为 X 并替换后来在BERT 论文中所说的预测之后。
有没有其他人遇到过类似的问题,或者可以详细说明可能是什么问题,或者 PyTorch (Huggingface) 人们最近做了什么改变?
python - 在 huggingface 的 pytorch-transformers 库中微调 GPT-2
我正在寻找微调拥抱脸的 GPT-2 PyTorch 模型。
https://github.com/huggingface/pytorch-transformers/tree/master
我阅读了他们文档中的“示例”部分,其中展示了在 RocStories 数据集上训练旧 GPT 模型的示例。
https://huggingface.co/pytorch-transformers/examples.html#fine-tuning
我想知道如何为 GPT-2 进行这种培训。另外,我的数据集没有'Evaluation Set'。我只是想在我的数据集上微调 GPT-2,然后用它来生成与微调过的数据集“相似”的新文本。
我很确定我在文档中的某个地方遗漏了一些东西。如果有人能指出我正确的方向,我会很高兴。
python - 使用 huggingface 的 pytorch-transformers GPT-2 进行分类任务
我想使用 GPT-2 来制作文本分类器模型。通过 GPT-2 提取特征后,我不确定应该添加什么头。例如,我有一个序列。
GPT2 的输出对我来说是 nxmx 768,其中 n 是批量大小,m 是序列中的标记数(例如,我可以填充/截断为 128。),所以我不能像论文所说的那样做一个分类任务只是在尾部添加一个全连接层。我在谷歌上搜索,很少提到 GPT-2 分类任务。我不确定什么是正确的。我应该在全连接层或其他东西之前做扁平化/最大池化/平均池化吗?
nlp - huggingface pytorch-transformers:如何用某些值初始化嵌入?
我正在从huggingface微调 bert 模型。有没有办法手动设置某个词片的初始嵌入?例如,单词“dog”的初始嵌入等于torch.ones(768)
。谢谢!
machine-learning - 如何从预训练模型加载保存的分词器
我使用拥抱面转换器在 Pytorch 中微调了预训练的 BERT 模型。所有的训练/验证都是在云端的 GPU 上完成的。
在训练结束时,我保存模型和标记器,如下所示:
这将在目录中创建以下文件saved_model
:
现在,我将saved_model
目录下载到我的计算机中,并希望加载模型和标记器。我可以像下面这样加载模型
model = torch.load('./saved_model/pytorch_model.bin',map_location=torch.device('cpu'))
但是如何加载标记器?我是 pytorch 的新手,不确定因为有多个文件。可能我没有以正确的方式保存模型?
pytorch - 为什么 Pytorch Transformer 模块中 MultiheadAttention 的输入大小是 1536?
使用torch.nn.modules.transformer.Transformer
模块/对象时,第一层是encoder.layers.0.self_attn
层即MultiheadAttention
层,即
[出去]:
如果我们打印出层的大小,我们会看到:
[出去]:
看起来 1536 是 512 * 3 并且不知何故,该layers.0.self_attn.in_proj_weight
参数可能将变压器架构中的所有三个 QKV 张量存储在一个矩阵中。
来自https://github.com/pytorch/pytorch/blob/master/torch/nn/modules/activation.py#L649
并且文档字符串中的注释MultiheadAttention
说:
注意:如果 kdim 和 vdim 为 None,它们将被设置为 embed_dim 以便查询、键和值具有相同数量的特征。
那是对的吗?
tensorflow - 通过 Huggingface 转换器更新 BERT 模型
我正在尝试使用内部语料库更新预训练的 BERT 模型。我查看了 Huggingface 转换器文档,如下所示,我有点卡住了。我的目标是使用余弦距离计算句子之间的简单相似性,但我需要针对我的特定用例更新预训练模型。
如果您查看下面的代码,它恰好来自 Huggingface 文档。我正在尝试“重新训练”或更新模型,我假设 special_token_1 和 special_token_2 代表我的“内部”数据或语料库中的“新句子”。这个对吗?总之,我喜欢已经预训练的 BERT 模型,但我想更新它或使用另一个内部数据集重新训练它。任何线索将不胜感激。
nlp - HuggingFace GPT2DoubleHeadsModel 可以用于非多选下一个令牌预测吗?
根据 HuggingFace Transformer 的网站(https://huggingface.co/transformers/model_doc/gpt2.html#gpt2doubleheadsmodel),GPT2DoubleHeadsModel(不是GPT2LMHeadModel而是GPT2DoubleHeadsModel)是具有语言建模和多项选择分类的 GPT-2 转换器模型领先于例如 RocStories/SWAG 任务。
这是否意味着我们可以使用GPT2DoubleHeadsModel来处理非基于多项选择的语言建模任务(即下一个单词预测)以及多项选择问题,而无需对其头部进行任何调整?或者如果我想做非基于多项选择的下一个单词预测,我是否需要调整 GPT2DoubleHeadsModel 的头部,因为GPT2DoubleHeadsModel仅用于回答多项选择类型的问题?
我对此有点困惑,因为我从阅读您的 GPT-2 论文中得到的印象是 GPT-2 使用语言建模过程来处理每种类型的语言任务(因此 GPT-2 将只有常规语言建模负责人顶部),但名称“ GPT2DoubleHeadsModel ”似乎表明我需要针对不同类型的语言任务调整此 GPT-2 的头部。
谢谢,