问题标签 [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 回答
2181 浏览

python - 使用 LIME 进行 BERT 变压器可视化会导致内存错误

情况:我目前正在对一个拥抱脸变压器机器学习模型的结果进行可视化,我一直在按照本教程使用LIME 包构建。

复杂性:在创建 LIME解释器对象之前,我的代码已设置并运行良好。在这一点上,我得到一个内存错误。

问题:我做错了什么?为什么我会遇到内存错误?

代码:这是我的代码(您应该可以将其复制粘贴到 google colab 并运行整个程序)

0 投票
0 回答
546 浏览

huggingface-transformers - 获取令牌在berts输出层中的位置

我们对每个令牌的 bert 向量感兴趣。对于 bert 向量,我们指的是 berts 输出层中特定标记的词向量。所以我们想找出哪个令牌产生哪个伯特向量。我们编写了一些代码,但我们不确定它是否正确或如何测试它。

所以在代码中我们用bert处理一个句子。我们构建一个位置 id 列表并将它们交给模型。之后我们使用相同的位置 ID 将标记映射到输出层。然后有一些代码产生计算输入句子中每个向量的字符偏移量。

这是如何使用 position_ids 生成的正确方法吗

0 投票
1 回答
1452 浏览

python - BertForSequenceClassification 是否在 CLS 向量上进行分类?

我将Huggingface Transformer包和 BERT 与 PyTorch 一起使用。我正在尝试进行 4 向情感分类,并正在使用BertForSequenceClassification来构建一个模型,该模型最终会导致 4 向 softmax。

我阅读 BERT 论文的理解是,输入CLS标记的最终密集向量用作整个文本字符串的表示:

每个序列的第一个标记始终是一个特殊的分类标记 ([CLS])。与该标记对应的最终隐藏状态用作分类任务的聚合序列表示。

那么,BertForSequenceClassification真的训练并使用这个向量来执行最终的分类吗?

我问的原因是因为当 I 时print(model),对我来说CLS向量正在被使用并不明显。

这是输出的底部:

我看到有一个池化层BertPooler通向Dropout一个Linear可能执行最终 4-way softmax 的通向 a。但是,BertPooler我不清楚使用的。它是仅对 的隐藏状态进行操作CLS,还是对所有输入标记的隐藏状态进行某种池化?

谢谢你的帮助。

0 投票
0 回答
550 浏览

python - TFBertForSequenceClassification Keras model.layers 信息详情为空?如何检查模型?

我在 MacOS 上tensorflow 2.1.0使用 . 我正在使用以下方法构建 Keras 模型:transformers 2.5.1python 3.7TFBertForSequenceClassification

我可以探索结构:

我们可以看到以下内容

正如我们从上面看到的,我们只看到了 3 个主要层,我们无法访问更多细节。

拟合模型后(不知道为什么,但如果我们不这样做,输入和输出变量将为空)我们可以访问:

这是一个好的开始,现在我想探索 keras 层:

但现在如果我尝试获取更多信息,它总是空的:

我尝试了其他一些方法,inbound_nodes但它总是空的!

有什么方法可以更详细地检查像 BERT 这样的复杂模型的层吗?我们得到空信息的原因是什么?

我也试过:

但我得到的不是很丰富:

在此处输入图像描述

同样使用 TensorBoard,它给了我一张图和许多不连贯的元素 在此处输入图像描述

是的,作为一种选择,我很好地直接查看代码:代码,但我认为可以通过编程方式检查这种复杂模型的结构。

0 投票
0 回答
1465 浏览

machine-learning - 具有不同 GPU 的变形金刚的多 GPU 训练

我想使用 Huggingface 的变形金刚微调 GPT-2 模型。最好是中型,但如果可能的话,大一点。目前,我有一个 RTX 2080 Ti 和 11GB 内存,我可以很好地训练这个小模型。

我的问题是:如果我将旧的 Tesla K80 (24GB) 添加到我的机器并分发培训,我会遇到任何问题吗?我找不到有关在训练期间使用不同容量 GPU 的信息以及我可能遇到的问题。

我的模型大小限制基本上是所有可用 GPU 内存的总和吗?(35GB?)

我对在 AWS 中执行此操作不感兴趣。

0 投票
1 回答
731 浏览

python - 参数“never_split”不适用于 bert 分词器

我使用了该never_split选项并尝试保留一些令牌。但是分词器仍然将它们分成单词。

我在这里想念什么吗?

0 投票
1 回答
272 浏览

python-3.x - 带有 wiki 文章的 GPT2 输入大小

我正在尝试在维基百科文本上使用一个小型预训练 GPT2 模型。我尝试使用尽可能多的文本作为 gpt2 模型的输入。该模型为我总结了文本。如何使用整个 wiki 文章进行输入。就像现在一样,我仅限于 768 个令牌之类的东西。典型的 wiki 文章比这更长。使用超过 768 个标记的文本段落有什么技巧吗?

0 投票
1 回答
4021 浏览

python - 我微调了一个预训练的 BERT 用于句子分类,但我无法让它预测新句子

下面是我微调的结果。

接下来我尝试使用该模型从 csv 文件中预测标签。我创建了一个标签列,将类型设置为 int64 并运行预测。

但是,虽然我能够打印出预测 [4.235, -4.805] 等以及 true_labels[NaN,NaN.....],但我无法实际获得预测标签{0 或 1}。我在这里错过了什么吗?

0 投票
2 回答
5819 浏览

nlp - 如何在没有 IOB 标签的情况下使用 Hugging Face 的转换器管道重建文本实体?

我一直在寻找将 Hugging Face 的管道用于 NER(命名实体识别)。但是,它返回的是 inside-outside-beginning (IOB) 格式的实体标签,但没有 IOB 标签。所以我无法将管道的输出映射回我的原始文本。此外,输出以 BERT 标记化格式进行屏蔽(默认模型是 BERT-large)。

例如:

输出是:

如您所见,纽约分为两个标签。

如何将 Hugging Face 的 NER 管道映射回我的原始文本?

变形金刚版本:2.7

0 投票
0 回答
239 浏览

python - 如何使用 huggingface 转换器的库执行文本分类推断

敬启者,

训练完binary classification modelvia后examples/run_glue.py,我有以下文件。

--do_eval我可以通过相同的脚本和arg评估这个模型;但是,我想使用这个模型来做,因为我inference没有evaluation我将要输入的看不见的数据的标签。使用主库完成此任务的最佳方法是什么?我目前使用fast-bert。但是,我正在将其转换为生产管道,因此不能再偏离主库。

提前致谢!

克里斯