问题标签 [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.

0 投票
1 回答
326 浏览

tensorflow - KeyError:使用 Huggingface Transformers 使用 BioASQ 数据集时出现“答案”错误

我正在使用 Huggingface Transformers 的 run_squad.py https://github.com/huggingface/transformers/blob/master/examples/run_squad.py对 BioASQ 问答数据集进行微调。

我已将 BioBERT https://github.com/dmis-lab/bioasq-biobert的作者提供的张量流权重转换为 Pytorch ,如此处讨论的https://github.com/huggingface/transformers/issues/312

此外,我正在使用 BioASQ https://github.com/dmis-lab/bioasq-biobert的预处理数据,该数据已转换为 SQuAD 形式。但是,当我使用以下参数运行 run_squad.py 脚本时

非常感谢您的帮助。

非常感谢您的指导。

评估数据集如下所示:

0 投票
0 回答
716 浏览

nlp - 从头开始训练拥抱脸的 GPT2:如何实现因果掩码?

我正在尝试从头开始训练 Huggingface 对 GPT2 模型的实现(这意味着我正在使用他们的架构,但没有使用预训练的权重),但我通过查看此处的代码注意到https://github.com/huggingface/transformers/blob /master/src/transformers/modeling_gpt2.py似乎没有因果掩码的实现。

我可以写一个丑陋for loop的东西并将我的训练序列一次输入一个令牌给网络,这不会是低效的。我还可以逐个标记地切碎我的每个示例,填充它们并像批处理一样喂它,这可能更快,但感觉不太令人满意。

有没有人曾经与拥抱脸的变形金刚合作过?你知道是否有我错过的 casal 掩码的实现,或者我所描述的另一种方法?

PS:是的,我已经阅读了拥抱脸关于从头开始训练的博文,但它大多不完整,并且与训练相关的部分被遗漏了。

0 投票
0 回答
448 浏览

tensorflow - 如何向 Huggingface 预训练的 ALBERT 模型添加更多层?

我正在尝试在预训练的 ALBERT 模型之后添加一层。我想使用 ALBERT 预训练模型来生成令牌。

哪个输出:

模型应该是什么样的?我无法将 ALBERT 模型添加为 TensorFlow 中模型的第一层。

0 投票
1 回答
1082 浏览

python - 一次使用拥抱脸的面具填充超过 1 个面具令牌的最佳方式

我可以使用拥抱脸的蒙版填充管道来预测句子中的 1 个蒙面标记,使用以下代码:

但是,如果我想预测 2 个蒙面标记,是否有人对执行此操作的最佳方法有意见?例如,如果句子是相反的"I am going to <mask> <mask> in this sentence"

如果我尝试将这个确切的句子放入 nlp_fill 我会收到错误"ValueError: only one element tensors can be converted to Python scalars",因此它不会自动工作。

任何帮助将非常感激!

0 投票
0 回答
162 浏览

python - Transformers 和 BERT:编码时处理所有格和撇号

让我们考虑两个句子:

现在让我们标记和解码:

我们得到:

我的问题是如何处理smiths'house等所有格中缺少的空间?

对我来说,Transformers 中的标记化过程似乎做得不对。让我们考虑输出

我们得到:

所以在这一步中,我们已经丢失了关于最后一个撇号的重要信息。如果以另一种方式进行标记化会更好:

通过这种方式,标记化保留了有关撇号的所有信息,并且我们不会遇到所有格的问题。

0 投票
1 回答
335 浏览

python - 如何恢复 BERT/XLNet 嵌入?

我最近一直在尝试堆叠语言模型,并注意到一些有趣的事情:BERT 和 XLNet 的输出嵌入与输入嵌入不同。例如,这个代码片段:

为我输出:

我本来希望返回(格式化的)输入序列,因为我的印象是输入和输出令牌嵌入是绑定的。

有趣的是,大多数其他模型都没有表现出这种行为。例如,如果您在 GPT2、Albert 或 Roberta 上运行相同的代码片段,它会输出输入序列。

这是一个错误吗?或者是 BERT/XLNet 的预期?

0 投票
2 回答
2819 浏览

python - Tensorflow/Keras/BERT 多类文本分类准确度

我正在尝试微调 HuggingFace TFBertModel 以便能够将某些文本分类为单个标签。我已经启动并运行了模型,但是从一开始精度就极低。我的期望是准确度会很高,因为它使用 BERT 预训练的权重作为起点。我希望得到一些关于我哪里出错的建议。

我正在使用这里的 bbc-text 数据集:

加载数据

价值计数

预处理

拆分数据

编码标签

定义BERT输入函数

将数据转换为 Bert 输入

train_inputs, y_train然后我val_inputs, y_val应用以下函数来重塑并转换为 numpy 数组。然后将此函数返回的列表作为参数传递给 keras fit 方法。我意识到转换为 tf.tensors 然后转换为 numpy 有点矫枉过正,但我​​认为这不会产生影响。我最初试图使用 tf.datasets 但切换到 numpy。

凯拉斯模型

编译和拟合

因为我使用的是 BERT,所以只需要几个 epoch,所以我期望在 32 个 epoch 之后会有比 23% 高得多的东西。

0 投票
1 回答
1698 浏览

pytorch - 使用 BERT 进行文本分类——如何处理拼写错误的单词

我不确定这是否是提交此类问题的最佳地点,也许 CrossValdation 会更好。

我正在研究一个文本多类分类问题。我基于在 PyTorch(huggingface 转换器库)中实现的 BERT 概念构建了一个模型。该模型表现得非常好,除非输入句子有 OCR 错误或拼写错误。

例如,如果输入是“NALIBU DRINK”,Bert 分词器会生成 ['na', '##lib', '##u', 'drink'] 并且模型的预测是完全错误的。另一方面,如果我纠正了第一个字符,所以我的输入是“MALIBU DRINK”,Bert 分词器会生成两个令牌 ['malibu', 'drink'],并且模型会以非常高的置信度做出正确的预测。

有什么方法可以增强 Bert tokenizer 以使其能够处理拼写错误的单词?

0 投票
1 回答
1119 浏览

python - Pytorch 交叉熵输入维度

我正在尝试使用 Huggingface 的 BertModel 和 Pytorch 开发一个二元分类器。分类器模块是这样的:

我训练模型的方式如下:

我这样做.view()是因为 Huggingface 的源代码在BertForSequenceClassification 这里使用完全相同的方式来计算损失。但我得到这个错误:

我的标签有问题吗?还是我模型的输出?我真的被困在这里了。Pytorch 的 BCELoss 的文档说:

输入:(N,∗) 其中 ∗ 表示任意数量的附加维度
目标:(N,∗),与输入的形状相同

我应该如何使我的标签与模型输出的形状相同?我觉得我错过了一些巨大的东西,但我找不到它。

0 投票
1 回答
1089 浏览

python-3.x - 如何从 tf.py_function 返回张量字典?

通常,转换器标记器将输入编码为字典。

为了使用大型数据集归档更好的性能处理,实现管道是一个很好的实践,其中包括使用Dataset.map将标记器函数应用于输入数据集的每个元素。与 Tensorflow 教程中所做的完全相同:加载文本

但是,tf.py_function(用于包装 map python 函数)不支持返回张量字典,如上所示。

例如,如果加载文本中的分词器(编码器)返回以下字典:

有人如何设置Tout参数tf.py_function以获得所需的张量字典:

?