Использование файла .h5 не дает ожидаемый результат? - PullRequest
0 голосов
/ 07 апреля 2020

В настоящее время я использую Flask для того, чтобы объединить классификацию изображений бэкэнда и внешнего интерфейса. Я также использую файл .h5, чтобы предсказать вывод. Вывод другой и совершенно неверный. На выходе должна быть вероятность предсказания. Вот код:

def upload():
    if request.method == 'POST':
        # Get the file from post request
        f = request.files['file']

        # Save the file to ./uploads
        basepath = os.path.dirname(__file__)
        file_path = os.path.join(
            basepath, 'uploads', secure_filename(f.filename))
        f.save(file_path)

        MODEL_ARCHITECTURE = 'model_adam_01.json'
        MODEL_WEIGHTS = 'model_50_eopchs_adam_01.h5'

        json_file = open(MODEL_ARCHITECTURE)
        loaded_model_json = json_file.read()
        json_file.close()
        model = model_from_json(loaded_model_json)
        model.load_weights(MODEL_WEIGHTS)
        model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
        prediction = model_predict(file_path, model)
        print("I think that is ")
        print(prediction)
        # print('I think that is {}.'.format(predicted_class.lower()))
        return str(prediction)

Ниже приведена функция model_predict, в которой я прошел путь к изображению, а модель

def model_predict(img_path, model):
    '''
        Args:
            -- img_path : an URL path where a given image is stored.
            -- model : a given Keras CNN model.
    '''

    IMG = image.load_img(img_path)
    print(type(IMG))

    IMG_ = np.asarray(IMG)
    print(type(IMG_))

    print(IMG_.shape)

    IMG_ = prepare(IMG_)
    print(IMG_.shape)
    #print(model)

    prediction = model.predict(IMG_)
    print(prediction.shape)

    return str(prediction)

Ниже приведен вывод, который я получаю:

I think that is
[[0.]]

Почему возникает эта проблема? Я использую keras 2.3.1 и tesorflow 1.15.2

1 Ответ

0 голосов
/ 07 апреля 2020

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

...