问题标签 [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.
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.
tensorflow - Tensorflow - HuggingFace - 无效参数:indices[0,624] = 624 不在 [0, 512)
我正在根据本教程在 HuggingFace 的转换器中使用 Tensorflow 的 BERT 运行代码:
在 Python 中使用 BERT Tokenizer 和 TF 2.0 进行文本分类
但是,我没有创建自己的神经网络,而是使用了转换器,并且:
我能够生成以下训练数据:
但据我所见,词汇文件肯定存在问题,即未定义。运行时我还收到以下警告:
model0
成功创建:
然后:
我收到以下错误:
我的数据由一列 2 个类组成,另一列是短语。
我能做些什么 ?
nlp - 将 BertTokenizer 与 HuggingFace GPT-2 一起使用
我有一个特定的生成问题,涉及从非常小的词汇表构建的数据集。理想情况下,如果我可以简单地在一组固定的标记中提供该词汇表,我的用例将更加直接。例如,我知道使用 BertTokenizer,我可以提供一个vocab.txt
文件并避免对这个基本词汇进行任何进一步的标记化,我想知道是否有办法让 GPT-2 做同样的事情?我现在唯一能想到的就是创建一个被黑的PretrainedTokenizer
子类,但也许有人有更好的主意?
任何想法表示赞赏。
BertTokenizer
更新:好的,事实证明我可以BertWordpieceTokenizer
在创建GPT2LMHeadModel
. (感谢 HuggingFace 提供精心设计的模块化代码库!)
nlp - 我们可以将 GPT-2 句子嵌入用于分类任务吗?
我正在尝试在句子分类任务中使用变换器嵌入,而不对其进行微调。我使用过 BERT 嵌入,这些实验给了我非常好的结果。现在我想使用 GPT-2 嵌入(无需微调)。所以我有两个问题,
- 我可以使用这样的 GPT-2 嵌入吗(因为我知道 Gpt-2 是从左到右训练的)
- 除了生成任务之外,在分类任务中是否有 GPT-2 的示例使用?
- 如果我可以使用 GPT-2embeddings,我应该怎么做?
python - 填充和注意掩码在 GPT 语言模型的批量输入中无法按预期工作
以下代码没有批处理:
这工作正常。现在,我将其扩展到批处理设置:
这\n
是第一个上下文you
的下一个标记,是批次的第二个上下文的下一个标记。但是第一个上下文的预期下一个标记是a
,因为所有设置都是相同的。此外,如果您将第二个上下文减少到 2 个令牌,您将获得a
此批处理设置。很明显,模型无法理解填充。此外,注意面具不起作用。因为,在填充序列的下一个标记之后this is
是 0(零)。并且根据注意[1,1,0]
掩码(这种注意力屏蔽不起作用的证据是:this
is
使用注意掩码 [1,1,1],这意味着即使在填充零上也参加,您会得到相同的输出,即
\n
.使用字符串
this is!
。这里!
有词汇矩阵中的零索引。你再次得到相同的输出,即\n
.
只有时间,才有可能在没有批处理设置和注意掩码的情况下获得理想的输出(现在看来,这并不重要,因为它无论如何都没有效果)
然后我发现了这个,它建议使用pad_token。所以我使用如下:
这The
是第一个上下文you
的下一个标记,是批次的第二个上下文的下一个标记。这也行不通。因为The
不是第一个上下文的预期。
如何在 gpt/gpt2 模型的批量设置中使用可变长度序列?
machine-learning - 加载均匀的预训练 BERT 层进行分类
我正在使用 HuggingFace 的变形金刚库。据我所知,更改配置文件中隐藏层的数量会导致加载预训练的 BERT 的前 x 层。我想加载预训练的 BERT 的偶数层(或最后 x 层),然后针对分类任务对其进行微调。
可以在此处找到分类任务的示例:run_glue.py
提前致谢
python - 用于句子多类分类的 BertForSequenceClassification 与 BertForMultipleChoice
我正在研究文本分类问题(例如情感分析),我需要将文本字符串分类为五个类别之一。
我刚开始使用Huggingface Transformer包和带有 PyTorch 的 BERT。我需要的是一个顶部有一个 softmax 层的分类器,这样我就可以进行 5 路分类。令人困惑的是,Transformer 包中似乎有两个相关选项:BertForSequenceClassification和BertForMultipleChoice。
我应该使用哪一个来完成我的 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 是输入张量的第二维的大小。
感谢您的任何帮助。
huggingface-transformers - GPT2Model 和带有 LM Head 的 GPT2Model 具有不同的注意力权重维度
供您参考,attention
是一个元组,attention[0]
用于它的第一层。
我可以映射除2
in torch.Size([2, 1, 12, 5, 64])
vs之外的所有内容torch.Size([1, 12, 5, 5])
。那是什么2
意思?
我从bertviz
github repo 得到这些定义:
bert-language-model - 为什么我应该调用 BERT 模块实例而不是 forward 方法?
我正在尝试使用变压器库中的 BERT 提取文本的矢量表示,并且偶然发现了“BERTModel”类文档的以下部分:
任何人都可以更详细地解释这一点吗?前向传递对我来说很直观(毕竟我试图获得最终的隐藏状态),我找不到任何关于“预处理和后处理”在这种情况下意味着什么的额外信息。
预先感谢!