Вывод BERT недетерминированный - PullRequest
2 голосов
/ 18 июня 2019

Вывод BERT не является детерминированным. Я ожидаю, что выходные значения будут детерминированными, когда я добавлю один и тот же вход, но в моей модели bert значения меняются. Звучит неловко, одно и то же значение возвращается дважды, один раз. То есть, как только появляется другое значение, появляется то же значение и оно повторяется. Как я могу сделать вывод детерминированным? позвольте мне показать фрагменты моего кода. Я использую модель, как показано ниже.

Для реализации BERT я использую реализацию BERT pytorch, реализованную с помощью huggingface. Это довольно известная модель для реализации в области pytorch. [ссылка] 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,

для всех уровней кодировщика ситуация одинаковая, - одинаковая дважды и один раз.

Я извлекаю функцию вставки слов из берта, и ситуация такая же.

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 Ответ

2 голосов
/ 18 июня 2019

Пожалуйста, попробуйте установить семена.Я столкнулся с той же проблемой и установил начальное значение, чтобы каждый раз получать одинаковые значения.Одной из возможных причин может быть отсев в BERT.

...