BertForNextSentencePrediction - Преобразование логитов в логические значения? - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь использовать модель прогнозирования следующего предложения, которая предварительно обучена в BERT.

Я использую пример из класса TFBertForNextSequencePrediction. Я понимаю, что seq_relationship_score возвращает логиты, указывающие, принадлежит ли следующее предложение предыдущему контексту или нет. Я попытался с Softmax от Keras, но он не возвращает логическое значение.

import tensorflow as tf
from transformers import BertTokenizer, TFBertForNextSentencePrediction

tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = TFBertForNextSentencePrediction.from_pretrained('bert-base-uncased')

input_ids = tf.constant(tokenizer.encode(["My dog is called Tetley.", "My dog is my best friend"], add_special_tokens=True))[None, :]  # Batch size 1

outputs = model(input_ids)
seq_relationship_scores = outputs[0]

print(seq_relationship_scores)

import keras
print(keras.activations.softmax(seq_relationship_scores, axis=-1))

Как проверить, имеют ли два предложения одинаковый контекст с seq_relationship_scores?

https://huggingface.co/transformers/_modules/transformers/modeling_tf_bert.html#TFBertForNextSentencePrediction Эта модель tf.keras.Model <https://www.tensorflow.org/api_docs/python/tf/keras/Model> __ суб-класс. Используйте его как обычную модель Keras TF 2.0 и обратитесь к документации TF 2.0 по всем вопросам, связанным с общим использованием и поведением.

Вывод выглядит примерно так:

tf.Tensor([[ 4.642335  -3.4926772]], shape=(1, 2), dtype=float32)
Using TensorFlow backend.
tf.Tensor([[9.9970692e-01 2.9300974e-04]], shape=(1, 2), dtype=float32)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...