为什么即使我使用相同的 BartForConditionalGenration 模型生成嵌入,它们仍然不同?
第一个嵌入是通过组合令牌嵌入和位置嵌入来生成的
embed_pos = modelBART.model.encoder.embed_positions(input_ids.input_ids)
inputs_embeds = modelBART.model.encoder.embed_tokens(input_ids.input_ids)
模型通过
进行第二次嵌入output = modelBART(input_ids.input_ids)
print("\n\n output: \n\n",output.encoder_last_hidden_state)
第一个和第二个的嵌入不应该相同吗?怎样才能使第一个和第二个嵌入的差异为零?
第一个嵌入(输入+位置)是模型的第一层。这些嵌入用于将标记映射到向量。
第二组嵌入 (
encoder_last_hidden_state
) 是模型编码器中最后一层的输出。
这些嵌入应该是不同的。