Функция прогнозирования возвращает экспоненциальные значения

Я построил и обучил модель последовательной бинарной классификации с использованием слоев 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)

Нейронная сеть считает, что это странное значение равно 0. Это не экспонента, а 2,977094 * 10 ^ {- 12}

Tony Pellerin 30.10.2018 17:09

Добро пожаловать в StackOverflow. Пожалуйста, прочтите и следуйте инструкциям по публикации в справочной документации, как было предложено при создании этой учетной записи. Здесь применяется Минимальный, полный, проверяемый пример. Мы не сможем эффективно помочь вам, пока вы не опубликуете свой код MCVE и точно не опишете проблему. Мы сможем вставить ваш опубликованный код в текстовый файл и воспроизвести описанную вами проблему.

Prune 30.10.2018 17:10

Этот результат представляет собой просто число в научной записи.

Dr. Snoopy 30.10.2018 17:34

На самом деле получить этот номер не было проблемой. Моя проблема в том, что я действительно не знаю, что с этим делать. Я добавил дополнительную информацию в сообщение: «Эта модель классификации имеет два класса, скажем, кошка или собака, поэтому я ожидал, что результат будет примерно таким [99.9999, 0,0001], что предполагает, что это кошка. Я не уверен как интерпретировать ценность, которую я получаю вместо этого ".

Rohandeep Singh 30.10.2018 18:29

Если вы используете сигмоид в качестве последнего слоя, нормально иметь только одно значение. Это соответствует вероятности того, что класс равен 1.

Tony Pellerin 31.10.2018 09:58
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
5
718
1

Ответы 1

Обычно данные без перекоса преобразуются в значения журнала во время обучения. Так

np.exp(your_value)

может быть то, что вы ищете.

это просто возвращает мне 1. На самом деле я ожидал, что прогноз (данные) вернет два значения, которые являются вероятностями классов, в которые он классифицирует данные.

Rohandeep Singh 30.10.2018 18:32

Другие вопросы по теме