相同的句子在XLNet中产生不同的向量



我已经使用XLNet嵌入作为服务计算了两个相同句子的向量。但该模型为两个相同的句子生成了不同的向量嵌入,因此余弦相似度不为1,欧几里得距离也不为0。在BERT的情况下,它运行良好。例如如果

vec1 = en.encode(texts=['he is anger'],pooling='reduce_mean')
vec2 = en.encode(texts=['he is anger'],pooling='reduce_mean')

模型(XLNet(说这两个句子不一样。

这是因为模型中的丢弃层。在推理过程中,应该关闭丢弃层,但库中存在错误。这里已经讨论过了,显然还没有解决。

请参阅此处的讨论:https://github.com/amansrivastava17/embedding-as-service/issues/45

同时,正如@Davide Fiocco所建议的,你可以使用HuggingFace的简单方法。请使用forwardgeneratepipeline

作为解决方法,如果您有一些灵活性,那么使用普通的transformers库怎么样?

结果

from transformers import pipeline
embedder = pipeline("feature-extraction", model="xlnet-base-cased")
embedder("he is anger")

是确定性的。

相关内容

  • 没有找到相关文章

最新更新