gpt4 book ai didi

tensorflow - BERT - 池化输出与序列输出的第一个向量不同

转载 作者:行者123 更新时间:2023-12-03 15:03:04 32 4
gpt4 key购买 nike

我在 Tensorflow 中使用 BERT,有一个细节我不太明白。根据文档( https://tfhub.dev/google/bert_uncased_L-12_H-768_A-12/1 ),合并输出是整个序列的输出。根据原始论文,这似乎是在 setence 开头的标记“CLS”的输出。

pooled_output[0]

但是,当我查看与句子中第一个标记对应的输出时
setence_output[0,0,:]

我认为它对应于标记“CLS”(句子中的第一个标记),这两个结果是不同的。

最佳答案

意向pooled_outputsequence_output是不同的。由于 BERT 模型在输出层的嵌入已知是上下文嵌入,因此第一个标记的输出,即 [CLS] token 将捕获足够的上下文。因此,BERT 论文的作者发现仅将第一个标记的输出用于分类等少数任务就足够了。他们将此来自单个 token (即第一个 token )的输出称为 pooled_output .
由于 TF Hub 模块的源代码不可用,并且假设 TFHub 将使用与 BERT 的作者 (https://github.com/google-research/bert/) 的代码的开源版本相同的实现。正如 modeling.py 的源代码所给出的脚本(https://github.com/google-research/bert/blob/bee6030e31e42a9394ac567da170a89a98d2062f/modeling.py),pooled_output (通常由 get_pooled_output() 函数调用),从第一个 token 的隐藏状态返回激活。

关于tensorflow - BERT - 池化输出与序列输出的第一个向量不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61331991/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com