Я построил и обучил модель последовательной бинарной классификации с использованием слоев keras. Вроде все нормально работает. Пока я не начну использовать метод прогнозирования. Эта функция начинает давать мне странное экспоненциальное значение, а не вероятность. Это то, что я получаю после обучения и использования метода прогнозирования на модели.
Эта классификационная модель имеет два класса, скажем, кошка или собака, поэтому я ожидал, что результат будет что-то вроде [99.9999, 0,0001], предполагая, что это кошка. Я не уверен, как интерпретировать ценность, которую я получаю вместо этого.
Вот код, который у меня есть:
# Get the data.
(train_texts, train_labels), (val_texts, val_labels) = data
train_labels = np.asarray(train_labels).astype('float32')
val_labels = np.asarray(val_labels).astype('float32')
# Vectorizing data
train_texts,val_texts, word_index = vectorize_data.sequence_vectorize(
train_texts, val_texts)
# Building the model architecture( adding layers to the model)
model = build_model.simple_model_layers(train_texts.shape[1:])
# Setting and compiling with the features like the optimizer, loss and metrics functions
model = build_model.simple_model_compile(model=model)
# This is when the learning happens
history = model.fit(train_texts,
train_labels,
epochs=EPOCHS,
validation_data=(val_texts, val_labels),
verbose=VERBOSE_OFF, batch_size=BATCH_SIZE)
print('Validation accuracy: {acc}, loss: {loss}'.format(
acc=history['val_acc'][-1], loss=history['val_loss'][-1]))
# loading data to predict on
test_text = any
with open('text_req.pickle', 'rb') as pickle_file:
test_text = pickle.load(pickle_file)
print('Lets make a prediction of this requirement:')
prediction = model.predict(test_text, batch_size=None, verbose=0, steps=None)
print(prediction)
Добро пожаловать в StackOverflow. Пожалуйста, прочтите и следуйте инструкциям по публикации в справочной документации, как было предложено при создании этой учетной записи. Здесь применяется Минимальный, полный, проверяемый пример. Мы не сможем эффективно помочь вам, пока вы не опубликуете свой код MCVE и точно не опишете проблему. Мы сможем вставить ваш опубликованный код в текстовый файл и воспроизвести описанную вами проблему.
Этот результат представляет собой просто число в научной записи.
На самом деле получить этот номер не было проблемой. Моя проблема в том, что я действительно не знаю, что с этим делать. Я добавил дополнительную информацию в сообщение: «Эта модель классификации имеет два класса, скажем, кошка или собака, поэтому я ожидал, что результат будет примерно таким [99.9999, 0,0001], что предполагает, что это кошка. Я не уверен как интерпретировать ценность, которую я получаю вместо этого ".
Если вы используете сигмоид в качестве последнего слоя, нормально иметь только одно значение. Это соответствует вероятности того, что класс равен 1.
Обычно данные без перекоса преобразуются в значения журнала во время обучения. Так
np.exp(your_value)
может быть то, что вы ищете.
это просто возвращает мне 1. На самом деле я ожидал, что прогноз (данные) вернет два значения, которые являются вероятностями классов, в которые он классифицирует данные.
Нейронная сеть считает, что это странное значение равно 0. Это не экспонента, а 2,977094 * 10 ^ {- 12}