почему время прогнозирования API модели глубокого обучения увеличивается при повторной отправке файлов json? - PullRequest
0 голосов
/ 10 июля 2019

Я использовал колбу для разработки API-интерфейсов для прогнозирования тегов изображений, которые были развернуты в локальной сети.Я проверил мой API с отправкой времени json с терминала с помощью следующей команды:

time curl http://127.0.0.1:5000/api/ -d '{"image_links":["https://1", "https://2"], "type":"100"}' -H 'Content-Type: application/json'

Я нашел первый раз, чтобы отправить файл json, время прогнозирования каждого тега составляет около: 40 с.Во второй раз при отправке моего файла json время прогнозирования для каждого тега составляет около 60 ~ 70 с, но в третий раз время каждого из них составляет около 100 ~ 110 с.Я обнаружил, что время увеличивается, когда я снова отправляю свой JSON.Но после перезапуска приложения первый раз нормально, а второй увеличивается.Я думаю, что в моем коде есть ошибка, и там около 10 тегов, и у каждого тега есть 5-кратные модели, я использовал keras для обучения своей модели:

def load_model(img_dim, num_label):
    print('begin to get model')
    input_tensor = Input(shape=img_dim)
    base_model = InceptionResNetV2(include_top=False, input_shape=img_dim, weights='imagenet')
    x = input_tensor
    x = Lambda(preprocess_input, name='preprocessing')(x)
    x = base_model(x)
    x = GlobalAveragePooling2D()(x)
    x = Dropout(0.5)(x)
    x = Dense(num_label, activation='softmax', name='softmax')(x)
    model = Model(input_tensor, x)
    print('finish loading model')

    return model

@app.route("/api/", methods=["POST"])
def predict_tag():
print('beginning to prediction')

data = request.get_json()
model_image = load_model(img_dim, num_label)

len_test = validation_batch.shape[0]

for t_image in lst_main_image:
    n_fold = 5
    preds_test = np.zeros((len_test, 2), dtype=np.float)
    print('t_image:', t_image)
    tag_i_time = time.time()
    for i in range(1, 6):
        model_image.load_weights('../model/{}/main_image/{}_aug_inception.fold_{}{}.hdf5'.format(industry, industry, i, t_image))
        model_image.compile(optimizer=Adam(lr=1e-4), loss='binary_crossentropy', metrics=['accuracy'])
        test_prob = model_image.predict(validation_batch)
        preds_test += test_prob
    tag_i_e = time.time()
    print('each tag the times:', t_image, tag_i_e - tag_i_time)
    preds_test /= n_fold
    y_pred = preds_test.argmax(axis=-1)
    lst_result_image.append(list(y_pred))
    print('finish predict the tag:', t_image)

lst_all_result = {} 

return jsonify(lst_all_result)


if __name__ == '__main__':

    app.run(debug=True)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...