Я пытаюсь использовать keras-nlp с предварительно обученной моделью BERT в маске, чтобы предсказать некоторые токены в последовательности. Однако модель дает противоречивые результаты. Что может быть не так или я чего-то не понимаю?
Код: Выделить всё
import keras
import keras_nlp
import numpy as np
import tensorflow as tf
preprocessor = keras_nlp.models.BertMaskedLMPreprocessor.from_preset(
"bert_base_en"
)
masked_lm = keras_nlp.models.BertMaskedLM.from_preset(
"bert_base_en",
load_weights=True,
preprocessor=None,
)
test_sequence = preprocessor(["The capital of France is Paris."])
outputs = masked_lm(test_sequence[0])
predicted_ids = tf.math.argmax(outputs, axis=-1)
В этом примере препроцессор создает следующую последовательность [101, 1109, 2364, 1104, 1699, 103, 103, 119, 102,0,0,...] с позициями маски [5,6,0,0,0,0....]. Прогнозируемые_идентификаторы: [28059, 18994, 21690, 21690,.....], то есть [b'##saur', b'##hetic', b'##lani', b'##lani',. ...] вместо чего-то отдаленно близкого к «есть», «Париж».
Подробнее здесь:
https://stackoverflow.com/questions/791 ... redictions