Python 3.x 在bert层中,拉式输出和顺序输出之间有什么区别?

Python 3.x 在bert层中,拉式输出和顺序输出之间有什么区别?,python-3.x,tensorflow,neural-network,text-classification,bert-language-model,Python 3.x,Tensorflow,Neural Network,Text Classification,Bert Language Model,各位!!我在读关于Bert的书,想用它的单词嵌入做文本分类。我遇到了这一行代码: pooled_output, sequence_output = self.bert_layer([input_word_ids, input_mask, segment_ids]) 然后: clf_output = sequence_output[:, 0, :] out = Dense(1, activation='sigmoid')(clf_output) 但我不明白合并输出的用途序列输出不包含所有

各位!!我在读关于Bert的书,想用它的单词嵌入做文本分类。我遇到了这一行代码:

pooled_output, sequence_output = self.bert_layer([input_word_ids, input_mask, segment_ids])   
然后:

clf_output = sequence_output[:, 0, :]
out = Dense(1, activation='sigmoid')(clf_output)
但我不明白合并输出的用途序列输出不包含所有信息,包括['CLS']的单词嵌入吗?如果是,为什么我们有池输出


提前谢谢

如果您给出了一个序列,“您在StackOverflow上”。序列_输出将给出这四个字的768个嵌入。但是,合并后的输出只会为您提供一个768的嵌入,它将合并这四个字的嵌入。

如果您提供了一个序列,“you's on StackOverflow”。序列_输出将给出这四个字的768个嵌入。但是,合并输出只会给您一个768的嵌入,它将合并这四个字的嵌入。

序列输出是BERT模型最后一层输出的隐藏状态(嵌入)序列。它包括嵌入[CLS]令牌。因此,对于句子“You is on Stackoverflow”,它给出了5个嵌入:四个单词中的每一个都嵌入一个(假设单词“Stackoverflow”被标记为一个标记),同时嵌入[CLS]标记。
池输出是嵌入[CLS]标记(来自序列输出),由线性层和Tanh激活函数进一步处理。在训练前,根据下一句预测(分类)目标训练线性层权重。有关更多详细信息,请参阅BERT原始文件。

序列输出是BERT模型最后一层输出的隐藏状态(嵌入)序列。它包括嵌入[CLS]令牌。因此,对于句子“You is on Stackoverflow”,它给出了5个嵌入:四个单词中的每一个都嵌入一个(假设单词“Stackoverflow”被标记为一个标记),同时嵌入[CLS]标记。
池输出是嵌入[CLS]标记(来自序列输出),由线性层和Tanh激活函数进一步处理。在训练前,根据下一句预测(分类)目标训练线性层权重。有关更多详细信息,请参阅BERT原始文件。

感谢您的回复!但你如何确定使用哪一个呢?一般来说,人们使用句子的“集合输出”并将其用于文本分类(或任何其他特定任务)。谢谢你的回答!但如何确定使用哪一个呢?一般来说,人们使用句子的“集合输出”并将其用于文本分类(或任何其他特定任务)。