问题:
分类模型可以输出其文本的embedding吗?LM模型可以输出其文本的embedding吗?答案:可以。
假设你已经用自己的数据fine-tuing好模型。
主要工具设备型号:
python3.6、torch1.7、transformer4.2、macOS、
文档huggingface:https://huggingface.co/transformers/model_doc/bert.html
1.获取Embedding的方式有哪些
- 直接用 CLS Token 的 Embedding 作为句子表征(也就是下文中说的pooler_out),Bert 下游句子级别的任务基本都是用这个作为标准方法;缺点:CLS 压缩了太多信息
- 最后几层上下文 Embedding 的平均值:会损失语义,尤其是对 Self-Attention 取平均,甚至会弱化本来得到的 “Attention”
- 最后一层基础上加一层 CNN(卷积+Max Pooling):除了增加学习成本,没啥缺点。
那么怎么取?用哪个方式获取文本embedding呢?对不起,这个问题也在困扰着我,方法们各有千秋,也不知道如何选择了。那就选择最容易落地、能快速上线的——第一种方式:直接用 CLS Token 的 Embedding 作为句子表征。
2.用哪个类可以输出文本的embedding?
BertModel这个类初始化的模型,输出中有pooler_out,可以作为文本的embedding。bert系列的其他类,没有这个输出选项。
例子:
from transformers import

本文介绍了如何利用BERT模型输出文本Embedding,包括获取Embedding的不同方式及其优缺点,并提供了使用BertModel类输出Embedding的具体示例。
1万+

被折叠的 条评论
为什么被折叠?



