问题标签 [bert-language-model]
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.
nlp - 单向变压器 VS 双向 BERT
我刚读完Transformer论文和BERT论文。但无法弄清楚为什么 Transformer 是单向的,而 BERT 是双向的,正如 BERT 论文中提到的那样。由于他们不使用循环网络,因此解释方向并不是那么简单。任何人都可以提供一些线索吗?谢谢。
python - 如何在 TF Hub Module 中访问 BERT 中间层输出?
有人知道从 BERT 在 Tensorflow Hub 上托管的模型访问中间层输出的方法吗?
该模型托管在这里。我探索了元图,发现唯一可用的签名是“tokens”、“tokenization_info”和“mlm”。前两个在 github 上的示例中进行了说明,而掩码语言模型签名没有多大帮助。一些模型像 inception 一样,允许您访问所有中间层,但不能访问这一层。
现在,我能想到的只有:
- 运行
[i.values() for i in tf.get_default_graph().get_operations()]
以获取张量的名称,然后找到我想要的(从数千个中) tf.get_default_graph().get_tensor_by_name(name_of_the_tensor)
访问这些值并将它们拼接在一起并将它们连接到我的下游层。
有人知道使用 Tensorflow 的更清洁的解决方案吗?
python - 如何使用 BERT 对相似的句子进行聚类
对于 ElMo、FastText 和 Word2Vec,我对句子中的词嵌入进行平均,并使用 HDBSCAN/KMeans 聚类对相似的句子进行分组。
在这篇短文中可以看到一个很好的实现示例:http: //ai.intelligentonlinetools.com/ml/text-clustering-word-embedding-machine-learning/
我想使用 BERT 做同样的事情(使用来自拥抱脸的 BERT python 包),但是我不太熟悉如何提取原始单词/句子向量以便将它们输入到聚类算法中。我知道 BERT 可以输出句子表示 - 那么我将如何从句子中实际提取原始向量呢?
任何信息都有帮助。
keras - 如何将 Bert 嵌入提供给 LSTM
我正在研究用于文本分类问题的 Bert + MLP 模型。本质上,我试图用基本的 LSTM 模型替换 MLP 模型。
是否可以创建带有嵌入的 LSTM?或者,最好创建一个带有嵌入层的 LSTM?
更具体地说,我很难尝试创建嵌入式矩阵,因此我可以使用 Bert 嵌入创建嵌入层。
python - 如何使用 Bert 生成嵌入
我开始使用以下 Kaggle 内核:
之后,我使用了以下即将接近的代码:
执行此操作后,我的features
变量得到以下输出:
我的困惑是如何将其转换为可用于其他任务的嵌入数组。我可能会错过伯特的工作方式。
machine-learning - BERT 的表现比 word2vec 差
我正在尝试将 BERT 用于文档排名问题。我的任务很简单。我必须对输入文档进行相似度排名。这里唯一的问题是我没有标签 - 所以它更多的是定性分析。
我正在尝试一系列文档表示技术——主要是 word2vec、para2vec 和 BERT。
对于 BERT,我遇到了Hugging face - Pytorch库。我微调了 bert-base-uncased 模型,大约有 150,000 个文档。我运行了 5 个 epoch,批量大小为 16,最大 seq 长度为 128。但是,如果我比较 Bert 表示与 word2vec 表示的性能,出于某种原因,word2vec 现在对我来说表现更好。对于 BERT,我使用最后四层来获取表示。
我不太清楚为什么微调模型不起作用。我阅读了这篇论文,这个其他链接也表明 BERT 在针对分类任务进行微调时表现良好。然而,由于我没有标签,我对它进行了微调,就像它在论文中所做的那样——以一种无人监督的方式。
此外,我的文件的长度差异很大。所以我现在要明智地向他们发送句子。最后,无论如何我都必须对单词嵌入进行平均才能获得句子嵌入。关于更好方法的任何想法?我也在这里读到——有不同的方法可以汇集词嵌入以获得固定的嵌入。想知道是否可以比较哪种池化技术效果更好?
任何有关更好地训练 BERT 或更好的池化方法的帮助将不胜感激!
tensorflow - 如何在bert中设置特定的gpu?
ResourceExhaustedError(参见上面的回溯):
分配形状 [768] 的张量和类型 float [[node bert/encoder/layer_0/attention/output/LayerNorm/beta/adam_m/Initializer/zeros(定义在 /home/zyl/souhu/bert/optimization.py: 122) = Const_class=["loc:@bert/encoder/layer_0/attention/output/LayerNorm/beta/adam_m/Assign"], dtype=DT_FLOAT, value=Tensor, _device="/job:localhost/replica:0/任务:0/设备:GPU:0“]]
如何设置gpu 1 或另一个来运行bert?
machine-learning - 为什么 Bert 格式需要一次性列?
我最近遇到了 Bert(变形金刚的双向编码器表示)。我看到 Bert 要求训练数据有严格的格式。所需的第三列描述如下:
第 3列:所有相同字母的列——这是一个需要包含的一次性列,因为 BERT 模型需要它。
什么是一次性列,为什么在数据集中需要此列,因为它声明它包含相同的字母?
谢谢你。
nlp - 为什么损失继续减少而性能保持不变?
我正在使用 bert-lstm-crf 模型,来自https://github.com/huggingface/pytorch-pretrained-BERT/的 bert 模型和 lstm crf 模型是我自己编写的。
在训练 bert-lstm-crf 模型 25 个 epoch 后,训练集、开发集和测试集的性能保持不变,但损失继续下降。我应该在哪里进行更改?
这是性能:
第 25 个时代:
第26期:
第 27 期:
更多时期:相同性能的更低损失:
这真是一个奇怪的问题,我不知道如何处理。任何建议都会有很大帮助。
以下是相关代码:
性能应该随着损失而改变,但现在没有
python - TPU 不支持占位符 X 类型的操作。如果在图中使用此操作,执行将失败
我正在 TPU 上使用 BERT 运行文本分类任务。我使用了不同的教程来运行我的实验1、2、3和4。我与第二个示例的唯一区别是我的数据集不是 Bert 处理器中预定义的数据集之一,因此我必须自己加载和预处理它。另外,我想在其中进行一些更改,create_model
因此我不得不将其写下来如下:
当我运行代码时,create_model
我看到很多错误,而训练没有问题并且一切顺利,但我不确定是否:1.由于以下错误,模型是否使用 TPU,2.该模型正在使用 Bert 并对其进行微调,因为所有create_model
函数都存在以下错误。任何想法?这是错误(所有功能数百万次):
Operation of type Placeholder X is not supported on the TPU. Execution will fail if this op is used in the graph.