问题标签 [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.
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 脚本时
非常感谢您的帮助。
非常感谢您的指导。
评估数据集如下所示:
nlp - 从头开始训练拥抱脸的 GPT2:如何实现因果掩码?
我正在尝试从头开始训练 Huggingface 对 GPT2 模型的实现(这意味着我正在使用他们的架构,但没有使用预训练的权重),但我通过查看此处的代码注意到https://github.com/huggingface/transformers/blob /master/src/transformers/modeling_gpt2.py似乎没有因果掩码的实现。
我可以写一个丑陋for loop
的东西并将我的训练序列一次输入一个令牌给网络,这不会是低效的。我还可以逐个标记地切碎我的每个示例,填充它们并像批处理一样喂它,这可能更快,但感觉不太令人满意。
有没有人曾经与拥抱脸的变形金刚合作过?你知道是否有我错过的 casal 掩码的实现,或者我所描述的另一种方法?
PS:是的,我已经阅读了拥抱脸关于从头开始训练的博文,但它大多不完整,并且与训练相关的部分被遗漏了。
tensorflow - 如何向 Huggingface 预训练的 ALBERT 模型添加更多层?
我正在尝试在预训练的 ALBERT 模型之后添加一层。我想使用 ALBERT 预训练模型来生成令牌。
哪个输出:
模型应该是什么样的?我无法将 ALBERT 模型添加为 TensorFlow 中模型的第一层。
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"
,因此它不会自动工作。
任何帮助将非常感激!
python - Transformers 和 BERT:编码时处理所有格和撇号
让我们考虑两个句子:
现在让我们标记和解码:
我们得到:
我的问题是如何处理smiths'house等所有格中缺少的空间?
对我来说,Transformers 中的标记化过程似乎做得不对。让我们考虑输出
我们得到:
所以在这一步中,我们已经丢失了关于最后一个撇号的重要信息。如果以另一种方式进行标记化会更好:
通过这种方式,标记化保留了有关撇号的所有信息,并且我们不会遇到所有格的问题。
python - 如何恢复 BERT/XLNet 嵌入?
我最近一直在尝试堆叠语言模型,并注意到一些有趣的事情:BERT 和 XLNet 的输出嵌入与输入嵌入不同。例如,这个代码片段:
为我输出:
我本来希望返回(格式化的)输入序列,因为我的印象是输入和输出令牌嵌入是绑定的。
有趣的是,大多数其他模型都没有表现出这种行为。例如,如果您在 GPT2、Albert 或 Roberta 上运行相同的代码片段,它会输出输入序列。
这是一个错误吗?或者是 BERT/XLNet 的预期?
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% 高得多的东西。
pytorch - 使用 BERT 进行文本分类——如何处理拼写错误的单词
我不确定这是否是提交此类问题的最佳地点,也许 CrossValdation 会更好。
我正在研究一个文本多类分类问题。我基于在 PyTorch(huggingface 转换器库)中实现的 BERT 概念构建了一个模型。该模型表现得非常好,除非输入句子有 OCR 错误或拼写错误。
例如,如果输入是“NALIBU DRINK”,Bert 分词器会生成 ['na', '##lib', '##u', 'drink'] 并且模型的预测是完全错误的。另一方面,如果我纠正了第一个字符,所以我的输入是“MALIBU DRINK”,Bert 分词器会生成两个令牌 ['malibu', 'drink'],并且模型会以非常高的置信度做出正确的预测。
有什么方法可以增强 Bert tokenizer 以使其能够处理拼写错误的单词?
python - Pytorch 交叉熵输入维度
我正在尝试使用 Huggingface 的 BertModel 和 Pytorch 开发一个二元分类器。分类器模块是这样的:
我训练模型的方式如下:
我这样做.view()
是因为 Huggingface 的源代码在BertForSequenceClassification
这里使用完全相同的方式来计算损失。但我得到这个错误:
我的标签有问题吗?还是我模型的输出?我真的被困在这里了。Pytorch 的 BCELoss 的文档说:
输入:(N,∗) 其中 ∗ 表示任意数量的附加维度
目标:(N,∗),与输入的形状相同
我应该如何使我的标签与模型输出的形状相同?我觉得我错过了一些巨大的东西,但我找不到它。
python-3.x - 如何从 tf.py_function 返回张量字典?
通常,转换器标记器将输入编码为字典。
为了使用大型数据集归档更好的性能处理,实现管道是一个很好的实践,其中包括使用Dataset.map
将标记器函数应用于输入数据集的每个元素。与 Tensorflow 教程中所做的完全相同:加载文本。
但是,tf.py_function
(用于包装 map python 函数)不支持返回张量字典,如上所示。
例如,如果加载文本中的分词器(编码器)返回以下字典:
有人如何设置Tout
参数tf.py_function
以获得所需的张量字典:
?