2

我一直在练习 Bert Embedding。具体来说,我将 BERT-Base Uncased 模型与 PyTorch 库一起使用

    import torch
    from pytorch_pretrained_bert import BertTokenizer, BertModel, BertForMaskedLM
    tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
    model = BertModel.from_pretrained('bert-base-uncased')

我注意到,对于我查看过的几乎每个单词,bert 嵌入 768 长向量中的元素 #308 都是负异常值,其值低于 -2,可能有一半时间低于 -4。

这真的很奇怪。我试图用谷歌搜索有关“bert embedding 308”的信息,但找不到任何东西。

我想知道这种“现象”是否有任何解释。

这是我提取嵌入的例程:

def bert_embedding(text, bert_model, bert_tokenizer, layer_number = 0):
    marked_text = "[CLS] " + text + " [SEP]"    
    #the default is the last layer: 0-1 = -1
    layer_number -= 1
    tokenized_text = bert_tokenizer.tokenize(marked_text)
    indexed_tokens = tokenizer.convert_tokens_to_ids(tokenized_text)   
    segments_ids = [1] * len(tokenized_text)
    tokens_tensor = torch.tensor([indexed_tokens])
    segments_tensors = torch.tensor([segments_ids])

    with torch.no_grad():
        encoded_layers, _ = bert_model(tokens_tensor, segments_tensors)

    return encoded_layers[layer_number][0][:]
4

0 回答 0