我在 Tensorflow 中使用 BERT,有一个细节我不太明白。根据文档(https://tfhub.dev/google/bert_uncased_L-12_H-768_A-12/1 https://tfhub.dev/google/bert_uncased_L-12_H-768_A-12/1),合并输出是整个序列的输出。根据原始论文,这似乎是句子开头的标记“CLS”的输出。
pooled_output[0]
但是,当我查看与句子中第一个标记相对应的输出时
setence_output[0,0,:]
我相信它对应于标记“CLS”(句子中的第一个标记),两个结果是不同的。
正如 Huggingface 文档中提到的输出伯特模型 https://huggingface.co/transformers/v3.0.2/model_doc/bert.html#bertmodel,池化器输出为:
序列的第一个标记(分类标记)的最后一层隐藏状态由线性层和 Tanh 激活函数进一步处理。
所以因为further processed by a Linear layer and a Tanh activation function
,序列输出(CLS token)的第一个向量的输出和池化输出的值不同(但两个向量的大小相同)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)