Выход сигмоида
Вы делаете двоичную классификацию со своим слоем Dense(1, activation = "sigmoid")
.
При активации сигмоида ваш выход представляет собой одно число от 0 до 1, которое вы можете интерпретировать как вероятность вашего первого класса. Предполагается, что наблюдения с выходом, близким к 0, относятся к первому классу, а наблюдения с выходом, близким к 1, из второго класса.
Точка отсечения не обязательно должна быть 0,5 (см. RO C кривые), но это разумное значение при интерпретации выходных данных как вероятности, поскольку P(class2) = 1 - P(class1)
.
Вопреки тому, что говорит другой ответ, нет необходимости использовать Dense(2, activation = "softmax")
для двоичной классификации. Ваш подход лучше.
Тем не менее, вы не делаете прогнозы с argmax с сигмоидальным активированным выходом. argmax
одного значения всегда равно 0. Вместо этого вы хотите сравнить вероятность с вашей точкой отсечения, обычно 0.5
.
Например, просматривая первые 7 предложений:
[[0.05458272]
[0.03890216]
[0.01066688]
[0.00394785]
[0.08322579]
[0.9882582 ]
[0.8437737 ]]
Предсказанные классы: [0 0 0 0 0 1 1]
.
Конечно, ваша проблема в том, что вы не просили столько предложений, только одно. Проблема в том ...
texts
должен быть список предложений
XXX_texts
функции ожидают список предложений. Когда вы передаете одно предложение, оно обрабатывается как список отдельных символов.
Прямо сейчас вы получаете последовательность и прогноз для каждой буквы!
Измените test_converted = t.texts_to_sequences(sent)
на test_converted = t.texts_to_sequences([sent])
и все в порядке.
Помните, это text*s*_to_sequence*s*
, а не text_to_sequence
!
Tokenizer
Кроме того, вам нужно использовать тренировочный токенизатор для ваших тестовых данных! В противном случае токены различаются, и вы получите бессмысленные результаты.
Например, ваш тренировочный токенизатор может закодировать «mov ie» как токен 123, но для вашего тестового токенизатора токен 123 может быть «актером». Если вы не используете один и тот же индекс слов, тестовые предложения становятся гиббери sh для вашей модели.