比较来自世界各地的卖家的域名和 IT 服务价格

Berta的投资来自变压器的建议

我正在努力接收模型中隐藏状态的提供的向量 BERT. 看着说明 huggingface BertModel
https://huggingface.co/bert-ba ... 20etc
, 谁说:


from transformers import BertTokenizer, BertModel
tokenizer = BertTokenizer.from_pretrained/'bert-base-multilingual-cased'/
model = BertModel.from_pretrained/"bert-base-multilingual-cased"/
text = "Replace me by any text you'd like."
encoded_input = tokenizer/text, return_tensors='pt'/
output = model/**encoded_input/


所以,首先,注意它在网站上的方式,它不起作用 /not/. 你得到:


>>> Traceback /most recent call last/:
File "<stdin>", line 1, in <module>
TypeError: 'BertTokenizer' object is not callable


但似乎它似乎修复了一个略微的变化,因为你没有直接调用令牌化器,但要求它编码输入数据:


encoded_input = tokenizer.encode/text, return_tensors="pt"/
output = model/encoded_input/


OK, 此外,我得到的张量子比我预期的另一种形式:


&gt;&gt;&gt; output[0].shape
torch.Size/[1,11,768]/


这是很多层数。 用于投资提案的合适层是什么?
[0]

?
[-1]

? 平均几个? 我有一个与他们制作余弦相似之处的目标,所以我需要正确的矢量 1xN, 不是张力 NxK.

我看到了一个流行的
https://github.com/hanxiao/ber ... nutes
bert-as-a-service, 看起来像用
[0]


这是正确的吗? 每个层是什么都有文件吗?
</module></stdin>
已邀请:

龙天

赞同来自:

我不认为有一个单一的声誉文档,可以说什么和何时使用。 您需要尝试和衡量最适合您的任务。 最近的观察结果O. BERT 很好地汇总了本文:
https://arxiv.org/pdf/2002.12327.pdf
.

我认为经验规则是:

如果要为特定任务准确配置模型,请使用最后一层。 和 finetune 无论何时可以,只有几百甚至几十个培训例子。

使用一些中间层 /7-th 或者 8-th/, 如果您无法准确配置模型。 这背后的直觉是图层首先开发了越来越多的输入数据的摘要和一般表示。 在某些时候,演示文稿开始在培训前的任务上更具导向。

Bert-as-services 使用最后一层默认值 /但他被配置了/. 这将是
[:, -1]

. 但是,它始终返回所有输入令牌的向量列表。 对应于第一个特殊的矢量 /所谓的
[CLS]

/ 托克娜被认为是投资。 所以来自哪里
[0]

在捕捉中,您引用的。

要回复问题请先登录注册