Как сделать прогноз в Tensorflow? - PullRequest
0 голосов
/ 03 мая 2020

Кажется, это простой вопрос, но я нигде не могу найти его в Интернете.

Я прошел учебник по классификации текста (положительный и отрицательный) https://www.tensorflow.org/tutorials/keras/text_classification_with_hub

После запуска всех кодов я sh сделаю прогноз с моим собственным текстом, скажем "Тест".

model.predict(["Test"])
#output
array([[-0.87035626]], dtype=float32)

Возвращает 1 значение, положительное или отрицательное (- 0.87 из приведенного выше примера).

Но это не имеет смысла. Я ожидаю, что он возвращает классификационную вероятность, такую ​​как:

[0:0.2, 1:0.8]

, что означает, что метка 0 имеет вероятность 0,2, а метка 1 имеет вероятность 0,8.

Может ли кто-нибудь помочь мне в этом?

1 Ответ

1 голос
/ 04 мая 2020

Это действительно странно, так как вы ожидаете значения от 0 до 1 (независимо от сигмоида или softmax)

Ошибка в учебнике TensorFlow.

В последней строке кода у вас есть: model.add(Dense(1)) без активации. Если ничего не указано, то по умолчанию используется линейная активация , что на самом деле подходит для задач регрессии.

Что вы можете сделать, чтобы получить результаты в нужной форме, это добавить последний слой и компиляция модели, например:

model.add(tf.keras.layers.Dense(2, activation = 'softmax'))
...
model.compile(optimizer='adam',
          loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True),
          metrics=['accuracy'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...