BERT输出不确定

时间:2019-06-17 23:17:12

标签: deep-learning nlp transformer bert-language-model

BERT输出不确定。 当我输入相同的输入时,我期望输出值是确定性的,但是我的bert模型中的值正在变化。听起来很尴尬,相同的值一次返回两次。也就是说,一旦出现另一个值,就会出现相同的值并重复执行。 如何使输出具有确定性? 让我显示代码片段。 我使用以下模型。

对于BERT实现,我使用拥抱面实现的BERT pytorch实现。这是在pytorch地区非常有名的ri实施。 [link] https://github.com/huggingface/pytorch-pretrained-BERT/

        tokenizer = BertTokenizer.from_pretrained(self.bert_type, do_lower_case=self.do_lower_case, cache_dir=self.bert_cache_path)
        pretrain_bert = BertModel.from_pretrained(self.bert_type, cache_dir=self.bert_cache_path)
        bert_config = pretrain_bert.config

获得这样的输出

        all_encoder_layer, pooled_output = self.model_bert(all_input_ids, all_segment_ids, all_input_mask)

        # all_encoder_layer: BERT outputs from all layers.
        # pooled_output: output of [CLS] vec.

pooled_output

tensor([[-3.3997e-01,  2.6870e-01, -2.8109e-01, -2.0018e-01, -8.6849e-02,

tensor([[ 7.4340e-02, -3.4894e-03, -4.9583e-03,  6.0806e-02,  8.5685e-02,

tensor([[-3.3997e-01,  2.6870e-01, -2.8109e-01, -2.0018e-01, -8.6849e-02,

tensor([[ 7.4340e-02, -3.4894e-03, -4.9583e-03,  6.0806e-02,  8.5685e-02,

对于所有编码器层,情况都是相同的-一次两次相同。

我从bert中提取单词嵌入功能,情况是一样的。

wemb_n
tensor([[[ 0.1623,  0.4293,  0.1031,  ..., -0.0434, -0.5156, -1.0220],

tensor([[[ 0.0389,  0.5050,  0.1327,  ...,  0.3232,  0.2232, -0.5383],

tensor([[[ 0.1623,  0.4293,  0.1031,  ..., -0.0434, -0.5156, -1.0220],

tensor([[[ 0.0389,  0.5050,  0.1327,  ...,  0.3232,  0.2232, -0.5383],

1 个答案:

答案 0 :(得分:2)

请尝试设置种子。我遇到了同样的问题,并设置了种子以确保我们每次都获得相同的值。可能的原因之一可能是BERT退出了。