在理解 BERTforTokenClassification class 来自 Transformers 库的输出时感到困惑

Confusion in understanding the output of BERTforTokenClassification class from Transformers library

是transformers pytorch库文档中给出的例子

from transformers import BertTokenizer, BertForTokenClassification
import torch

tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForTokenClassification.from_pretrained('bert-base-uncased', 
                      output_hidden_states=True, output_attentions=True)

input_ids = torch.tensor(tokenizer.encode("Hello, my dog is cute", 
                         add_special_tokens=True)).unsqueeze(0)  # Batch size 1
labels = torch.tensor([1] * input_ids.size(1)).unsqueeze(0)  # Batch size 1
outputs = model(input_ids, labels=labels)

loss, scores, hidden_states,attentions = outputs

这里 hidden_states 是一个长度为 13 的元组,包含模型在每一层输出处的隐藏状态加上初始嵌入输出。我想知道,hidden_states[0] 或 hidden_states[12] 是否代表最终的隐藏状态向量?

如果您查看源代码,特别是 BertEncoder,您可以看到返回的状态被初始化为一个空元组,然后在每一层的每次迭代中简单地附加。

最后一层附加为最后一个元素这个循环之后,参见here,所以我们可以安全地假设hidden_states[12]是最终向量.