SemBERT icon indicating copy to clipboard operation
SemBERT copied to clipboard

请问为什么要用max处理sequence_out

Open leomeow33 opened this issue 2 years ago • 1 comments

在modeling.py的1129行附近 #first_token_tensor = sequence_output[:, 0] first_token_tensor, pool_index = torch.max(sequence_output, dim=1)

我调试看到sequence_output是一个[8,46,1034]维的tensor,为什么要用在1维上的max来处理它呢?这样会把不同token的第三维混合吧。 一般不是用cls来获得全句的语义信息吗?就像注释前的那样。

而且我按照目前的代码复现了,效果非常棒,就让我更想不通了,不用cls为什么可以有这么优秀的效果。 谢谢作者!

leomeow33 avatar Nov 03 '22 11:11 leomeow33

我也有同样的疑问。网上说cls其实只是一个分类信息,不能很好地代表整个句子的信息,但BertForSequenceClassification是个分类任务模型呀,用cls不是更好吗?

ALR-alr avatar May 16 '24 11:05 ALR-alr