问题标签 [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.
huggingface-transformers - 获取令牌在berts输出层中的位置
我们对每个令牌的 bert 向量感兴趣。对于 bert 向量,我们指的是 berts 输出层中特定标记的词向量。所以我们想找出哪个令牌产生哪个伯特向量。我们编写了一些代码,但我们不确定它是否正确或如何测试它。
所以在代码中我们用bert处理一个句子。我们构建一个位置 id 列表并将它们交给模型。之后我们使用相同的位置 ID 将标记映射到输出层。然后有一些代码产生计算输入句子中每个向量的字符偏移量。
这是如何使用 position_ids 生成的正确方法吗
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
,还是对所有输入标记的隐藏状态进行某种池化?
谢谢你的帮助。
python - TFBertForSequenceClassification Keras model.layers 信息详情为空?如何检查模型?
我在 MacOS 上tensorflow 2.1.0
使用 . 我正在使用以下方法构建 Keras 模型:transformers 2.5.1
python 3.7
TFBertForSequenceClassification
我可以探索结构:
我们可以看到以下内容
正如我们从上面看到的,我们只看到了 3 个主要层,我们无法访问更多细节。
拟合模型后(不知道为什么,但如果我们不这样做,输入和输出变量将为空)我们可以访问:
这是一个好的开始,现在我想探索 keras 层:
但现在如果我尝试获取更多信息,它总是空的:
我尝试了其他一些方法,inbound_nodes
但它总是空的!
有什么方法可以更详细地检查像 BERT 这样的复杂模型的层吗?我们得到空信息的原因是什么?
我也试过:
但我得到的不是很丰富:
同样使用 TensorBoard,它给了我一张图和许多不连贯的元素
是的,作为一种选择,我很好地直接查看代码:代码,但我认为可以通过编程方式检查这种复杂模型的结构。
machine-learning - 具有不同 GPU 的变形金刚的多 GPU 训练
我想使用 Huggingface 的变形金刚微调 GPT-2 模型。最好是中型,但如果可能的话,大一点。目前,我有一个 RTX 2080 Ti 和 11GB 内存,我可以很好地训练这个小模型。
我的问题是:如果我将旧的 Tesla K80 (24GB) 添加到我的机器并分发培训,我会遇到任何问题吗?我找不到有关在训练期间使用不同容量 GPU 的信息以及我可能遇到的问题。
我的模型大小限制基本上是所有可用 GPU 内存的总和吗?(35GB?)
我对在 AWS 中执行此操作不感兴趣。
python - 参数“never_split”不适用于 bert 分词器
我使用了该never_split
选项并尝试保留一些令牌。但是分词器仍然将它们分成单词。
我在这里想念什么吗?
python-3.x - 带有 wiki 文章的 GPT2 输入大小
我正在尝试在维基百科文本上使用一个小型预训练 GPT2 模型。我尝试使用尽可能多的文本作为 gpt2 模型的输入。该模型为我总结了文本。如何使用整个 wiki 文章进行输入。就像现在一样,我仅限于 768 个令牌之类的东西。典型的 wiki 文章比这更长。使用超过 768 个标记的文本段落有什么技巧吗?
python - 我微调了一个预训练的 BERT 用于句子分类,但我无法让它预测新句子
下面是我微调的结果。
接下来我尝试使用该模型从 csv 文件中预测标签。我创建了一个标签列,将类型设置为 int64 并运行预测。
但是,虽然我能够打印出预测 [4.235, -4.805] 等以及 true_labels[NaN,NaN.....],但我无法实际获得预测标签{0 或 1}。我在这里错过了什么吗?
nlp - 如何在没有 IOB 标签的情况下使用 Hugging Face 的转换器管道重建文本实体?
我一直在寻找将 Hugging Face 的管道用于 NER(命名实体识别)。但是,它返回的是 inside-outside-beginning (IOB) 格式的实体标签,但没有 IOB 标签。所以我无法将管道的输出映射回我的原始文本。此外,输出以 BERT 标记化格式进行屏蔽(默认模型是 BERT-large)。
例如:
输出是:
如您所见,纽约分为两个标签。
如何将 Hugging Face 的 NER 管道映射回我的原始文本?
变形金刚版本:2.7
python - 如何使用 huggingface 转换器的库执行文本分类推断
敬启者,
训练完binary classification model
via后examples/run_glue.py
,我有以下文件。
--do_eval
我可以通过相同的脚本和arg评估这个模型;但是,我想使用这个模型来做,因为我inference
没有evaluation
我将要输入的看不见的数据的标签。使用主库完成此任务的最佳方法是什么?我目前使用fast-bert。但是,我正在将其转换为生产管道,因此不能再偏离主库。
提前致谢!
克里斯