x

Добро пожаловать в IT Leader Assistant.
Please Войти!

Создать аккаунт

Как завернуть Keras модель во Flask API

Александра Шаламова
03-16-2021 14:14
Как завернуть Keras модель во Flask API
Когда вы прошли все этапы разработки своей нейронной сети и получили обученную модель, приходит самое время начать использовать ее на практике. И в этой статье я расскажу, как легко можно это сделать с моделью созданной на Keras, с помощью API, созданном на Flask.
Я не буду в этой статье вдаваться в подробности обучения и работы с самой моделью, она может быть совершенно любой, под вашу задачу. Начнем с того, что у вас есть обученная модель в переменной model.
Теперь нам нужно завернуть работу этой модель в API, чтобы можно было использовать ее в нашем приложении. Для этого нужно сохранить модель в файл, который можно будет потом импортировать и использовать в приложении. Способов для этого есть несколько, я предлагаю один из них, который сама использую на практике. Заранее создаем папку models, где будет лежать наша модель, затем сохраняем:
model_json = model.to_json()
with open("models/model.json", "w") as json_file:
    json_file.write(model_json)
    
model.save_weights("models/model.h5")
После сохранения модели мы получаем два файла: model.json с архитектурой модели и model.h5 с весами обученной модели.
После этого копируем папку models в наш рабочий проект, где будем ее использовать. Далее приведу пример кода для импортирования модели:
import json
from tensorflow import keras
 
# читаем файл модели
with open('models/model.json') as json_file:
	loaded_model_json = json_file.read(
 
# загружаем модель из json с помощью метода model_from_json
model = keras.models.model_from_json(loaded_model_json)
 
# загружаем веса обученной модели в модель
model.load_weights("models/model.h5")
 
# компилируем модель с параметрами, с которыми она была обучена
# здесь вам нужно указать параметры вашей модели
model.compile(loss='...',
	optimizer='...',
	metrics=[])
После этого можно начать использовать model так же, как и до сохранения.
Теперь давайте используем эту модель в API Flask-а:
import json
from tensorflow import keras
from flask import Flask, request
 
def create_app(test_config=None):
	app = Flask(__name__)
 
	# читаем файл модели
        with open('models/model.json') as json_file:
		loaded_model_json = json_file.read()
 
 
	# загружаем модель из json с помощью метода model_from_json
	app.model = keras.models.model_from_json(loaded_model_json)
 
	# загружаем веса обученной модели в модель
	app.model.load_weights("models/model.h5")
 
	# компилируем модель с параметрами, с которыми она была обучена
	# здесь вам нужно указать параметры вашей модели
	app.model.compile(loss='...',
   		optimizer='...',
   		metrics=[])
 
 
	@app.route('/get_category_by_text', methods=['OPTIONS', 'POST'])
	# метод для классификации текста
	def get_category_by_text():
		# берем данные из запросы
      		text = request.form.get('text')
 
      		# передаем в модель для предсказания
     	        prediction = app.model.predict(np.array(test))
      		# отправляем ответ клиенту
      		return json.dumps({'category': prediction })
 
	return app 
После этого делаем запросы к серверу, передавая нужны данные. В примере нет никакой дополнительной обработки данных перед передачей в модель, на практике вам нужно будет сделать всю туже обработку данных, которую вы делали, когда обучали модель. Например, если ваша модель работает с текстом и перед обучением вы убирали из текста знаки препинания, окончания слов и использовали Tokenizer, то все тоже самое нужно сделать прежде чем отдать модели для предсказания новый текст.
Дальше все зависит от вашего конкретного случая, но описанные шаги помогут вам сохранить и использовать свою Keras модель в рабочем приложении.
Если у вас есть какие-то вопросы или пожелания вы можете воспользоваться формой для связи с нами:

Комментарии

Чтобы оставить комментарий, пожалуйста, авторизуйтесь

Подписывайтесь на обновления

Последние статьи из нашего блога