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

keras - biobert for keras version of huggingface transformers

(also posted in https://github.com/dmis-lab/biobert/issues/98)

Hi, does anyone know how to load biobert as a keras layer using the huggingface transformers (version 2.4.1)? I tried several possibilities but none of these worked. All that I found out is how to use the pytorch version but I am interested in the keras layer version. Below are two of my attempts (I saved the biobert files into folder "biobert_v1.1_pubmed").

Attempt 1:

Error message:

Attempt 2:

Error message:

Any help appreciated! My experience with huggingface's transformers library is almost zero. I also tried to load the following two models but it seems they only support the pytorch version.

0 投票
1 回答
1042 浏览

tensorflow - Tensorflow - HuggingFace - 无效参数:indices[0,624] = 624 不在 [0, 512)

我正在根据本教程在 HuggingFace 的转换器中使用 Tensorflow 的 BERT 运行代码:

在 Python 中使用 BERT Tokenizer 和 TF 2.0 进行文本分类

但是,我没有创建自己的神经网络,而是使用了转换器,并且:

我能够生成以下训练数据:

但据我所见,词汇文件肯定存在问题,即未定义。运行时我还收到以下警告:

model0成功创建:

然后:

我收到以下错误:

我的数据由一列 2 个类组成,另一列是短语。

我能做些什么 ?

0 投票
0 回答
59 浏览

nlp - 将 BertTokenizer 与 HuggingFace GPT-2 一起使用

我有一个特定的生成问题,涉及从非常小的词汇表构建的数据集。理想情况下,如果我可以简单地在一组固定的标记中提供该词汇表,我的用例将更加直接。例如,我知道使用 BertTokenizer,我可以提供一个vocab.txt文件并避免对这个基本词汇进行任何进一步的标记化,我想知道是否有办法让 GPT-2 做同样的事情?我现在唯一能想到的就是创建一个被黑的PretrainedTokenizer子类,但也许有人有更好的主意?

任何想法表示赞赏。

BertTokenizer更新:好的,事实证明我可以BertWordpieceTokenizer在创建GPT2LMHeadModel. (感谢 HuggingFace 提供精心设计的模块化代码库!)

0 投票
0 回答
409 浏览

python - 在 Tensorflow 2.1 上的 BERT 转换器上调用“fit”时出现 ValueError

考虑取自此处的以下代码:

当我运行它时,它会给出以下错误:

我不明白,因为它应该工作。有什么建议么?

0 投票
1 回答
1807 浏览

nlp - 我们可以将 GPT-2 句子嵌入用于分类任务吗?

我正在尝试在句子分类任务中使用变换器嵌入,而不对其进行微调。我使用过 BERT 嵌入,这些实验给了我非常好的结果。现在我想使用 GPT-2 嵌入(无需微调)。所以我有两个问题,

  1. 我可以使用这样的 GPT-2 嵌入吗(因为我知道 Gpt-2 是从左到右训练的)
  2. 除了生成任务之外,在分类任务中是否有 GPT-2 的示例使用?
  3. 如果我可以使用 GPT-2embeddings,我应该怎么做?
0 投票
1 回答
3340 浏览

python - 填充和注意掩码在 GPT 语言模型的批量输入中无法按预期工作

以下代码没有批处理:

这工作正常。现在,我将其扩展到批处理设置:

\n是第一个上下文you的下一个标记,是批次的第二个上下文的下一个标记。但是第一个上下文的预期下一个标记是a,因为所有设置都是相同的。此外,如果您将第二个上下文减少到 2 个令牌,您将获得a此批处理设置。很明显,模型无法理解填充。此外,注意面具不起作用。因为,在填充序列的下一个标记之后this is是 0(零)。并且根据注意[1,1,0]掩码(这种注意力屏​​蔽不起作用的证据是:thisis

  • 使用注意掩码 [1,1,1],这意味着即使在填充零上也参加,您会得到相同的输出,即\n.

  • 使用字符串this is!。这里!有词汇矩阵中的零索引。你再次得到相同的输出,即\n.

只有时间,才有可能在没有批处理设置和注意掩码的情况下获得理想的输出(现在看来,这并不重要,因为它无论如何都没有效果)

然后我发现了这个,它建议使用pad_token。所以我使用如下:

The是第一个上下文you的下一个标记,是批次的第二个上下文的下一个标记。这也行不通。因为The不是第一个上下文的预期。

如何在 gpt/gpt2 模型的批量设置中使用可变长度序列?

0 投票
0 回答
50 浏览

machine-learning - 加载均匀的预训练 BERT 层进行分类

我正在使用 HuggingFace 的变形金刚库。据我所知,更改配置文件中隐藏层的数量会导致加载预训练的 BERT 的前 x 层。我想加载预训练的 BERT 的偶数层(或最后 x 层),然后针对分类任务对其进行微调。

可以在此处找到分类任务的示例:run_glue.py

提前致谢

0 投票
1 回答
8544 浏览

python - 用于句子多类分类的 BertForSequenceClassification 与 BertForMultipleChoice

我正在研究文本分类问题(例如情感分析),我需要将文本字符串分类为五个类别之一。

我刚开始使用Huggingface Transformer包和带有 PyTorch 的 BERT。我需要的是一个顶部有一个 softmax 层的分类器,这样我就可以进行 5 路分类。令人困惑的是,Transformer 包中似乎有两个相关选项:BertForSequenceClassificationBertForMultipleChoice

我应该使用哪一个来完成我的 5 路分类任务?它们有哪些合适的用例?

BertForSequenceClassification的文档根本没有提到 softmax,尽管它确实提到了交叉熵。我不确定这个类是否仅用于 2 类分类(即逻辑回归)。

顶部带有序列分类/回归头的 Bert 模型转换器(池化输出顶部的线性层),例如用于 GLUE 任务。

  • 标签(torch.LongTensor of shape (batch_size,), optional, 默认为 None) -- 用于计算序列分类/回归损失的标签。索引应该在 [0, ..., config.num_labels - 1] 中。如果 config.num_labels == 1 计算回归损失(均方损失),如果 config.num_labels > 1 计算分类损失(交叉熵)。

BertForMultipleChoice的文档中提到了 softmax,但是标签的描述方式,听起来这个类是用于多标签分类(即多标签的二元分类)。

顶部具有多项选择分类头的 Bert 模型(池输出顶部的线性层和 softmax),例如用于 RocStories/SWAG 任务。

  • 标签(torch.LongTensor of shape (batch_size,), optional, 默认为 None) -- 用于计算多项选择分类损失的标签。索引应该在 [0, ..., num_choices] 中,其中 num_choices 是输入张量的第二维的大小。

感谢您的任何帮助。

0 投票
1 回答
255 浏览

huggingface-transformers - GPT2Model 和带有 LM Head 的 GPT2Model 具有不同的注意力权重维度

供您参考,attention是一个元组,attention[0]用于它的第一层。

我可以映射除2in torch.Size([2, 1, 12, 5, 64])vs之外的所有内容torch.Size([1, 12, 5, 5])。那是什么2意思?

我从bertvizgithub repo 得到这些定义:

0 投票
1 回答
76 浏览

bert-language-model - 为什么我应该调用 BERT 模块实例而不是 forward 方法?

我正在尝试使用变压器库中的 BERT 提取文本的矢量表示,并且偶然发现了“BERTModel”类文档的以下部分:

在此处输入图像描述

任何人都可以更详细地解释这一点吗?前向传递对我来说很直观(毕竟我试图获得最终的隐藏状态),我找不到任何关于“预处理和后处理”在这种情况下意味着什么的额外信息。

预先感谢!