簡體   English   中英

Problem loading Tensorflow Keras Model in Heroku deployment using Flask

[英]Problem loading Tensorflow Keras Model in Heroku deployment using Flask

我已經在 heroku 上設置了 flask API 並且我正在嘗試加載預訓練的圖像分類模型。 但是, load_model('classifierModel') function 似乎無法找到 classifierModel 文件夾,即使它與調用加載 function 的 main.py 文件存儲在同一目錄中。 我嘗試使用不同的 tensorflow-cpu 版本進行多次部署,但均無濟於事。 在本地主機上運行時我沒有問題。 不幸的是,嘗試在 Heroku 上部署總是會導致相同的錯誤:

OSError: SavedModel file does not exist at: classifierModel/{saved_model.pbtxt|saved_model.pb}

以下是一些示例日志

2022-04-08T22:41:45.519279+00:00 app[web.1]: [2022-04-08 22:41:45 +0000] [11] [ERROR] Exception in worker process
2022-04-08T22:41:45.519283+00:00 app[web.1]: Traceback (most recent call last):
2022-04-08T22:41:45.519284+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
2022-04-08T22:41:45.519284+00:00 app[web.1]:     worker.init_process()
2022-04-08T22:41:45.519284+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/workers/base.py", line 134, in init_process
2022-04-08T22:41:45.519285+00:00 app[web.1]:     self.load_wsgi()
2022-04-08T22:41:45.519285+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
2022-04-08T22:41:45.519285+00:00 app[web.1]:     self.wsgi = self.app.wsgi()
2022-04-08T22:41:45.519286+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/app/base.py", line 67, in wsgi
2022-04-08T22:41:45.519286+00:00 app[web.1]:     self.callable = self.load()
2022-04-08T22:41:45.519287+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
2022-04-08T22:41:45.519287+00:00 app[web.1]:     return self.load_wsgiapp()
2022-04-08T22:41:45.519287+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
2022-04-08T22:41:45.519288+00:00 app[web.1]:     return util.import_app(self.app_uri)
2022-04-08T22:41:45.519288+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/util.py", line 359, in import_app
2022-04-08T22:41:45.519288+00:00 app[web.1]:     mod = importlib.import_module(module)
2022-04-08T22:41:45.519289+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/importlib/__init__.py", line 127, in import_module
2022-04-08T22:41:45.519289+00:00 app[web.1]:     return _bootstrap._gcd_import(name[level:], package, level)
2022-04-08T22:41:45.519289+00:00 app[web.1]:   File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
2022-04-08T22:41:45.519290+00:00 app[web.1]:   File "<frozen importlib._bootstrap>", line 991, in _find_and_load
2022-04-08T22:41:45.519290+00:00 app[web.1]:   File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
2022-04-08T22:41:45.519290+00:00 app[web.1]:   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
2022-04-08T22:41:45.519291+00:00 app[web.1]:   File "<frozen importlib._bootstrap_external>", line 843, in exec_module
2022-04-08T22:41:45.519291+00:00 app[web.1]:   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
2022-04-08T22:41:45.519292+00:00 app[web.1]:   File "/app/wsgi.py", line 1, in <module>
2022-04-08T22:41:45.519292+00:00 app[web.1]:     from app.main import app
2022-04-08T22:41:45.519292+00:00 app[web.1]:   File "/app/app/main.py", line 15, in <module>
2022-04-08T22:41:45.519293+00:00 app[web.1]:     classifier = load_model('classifierModel')
2022-04-08T22:41:45.519293+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/tensorflow/python/keras/saving/save.py", line 189, in load_model
2022-04-08T22:41:45.519294+00:00 app[web.1]:     loader_impl.parse_saved_model(filepath)
2022-04-08T22:41:45.519294+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/tensorflow/python/saved_model/loader_impl.py", line 110, in parse_saved_model
2022-04-08T22:41:45.519295+00:00 app[web.1]:     raise IOError("SavedModel file does not exist at: %s/{%s|%s}" %
2022-04-08T22:41:45.519295+00:00 app[web.1]: OSError: SavedModel file does not exist at: classifierModel/{saved_model.pbtxt|saved_model.pb}
2022-04-08T22:41:45.519479+00:00 app[web.1]: [2022-04-08 22:41:45 +0000] [11] [INFO] Worker exiting (pid: 11)
2022-04-08T22:41:45.767195+00:00 app[web.1]: [2022-04-08 22:41:45 +0000] [4] [WARNING] Worker with pid 11 was terminated due to signal 15
2022-04-08T22:41:45.855598+00:00 app[web.1]: [2022-04-08 22:41:45 +0000] [4] [INFO] Shutting down: Master
2022-04-08T22:41:45.855640+00:00 app[web.1]: [2022-04-08 22:41:45 +0000] [4] [INFO] Reason: Worker failed to boot.
2022-04-08T22:41:46.166799+00:00 heroku[web.1]: State changed from up to crashed
2022-04-08T22:41:46.001860+00:00 heroku[web.1]: Process exited with status 3
111

main.py 的片段:

from flask import Flask
from flask import request
import cv2
import numpy as np
import os
from tensorflow.keras.models import load_model
from werkzeug.utils import secure_filename

import sys

app = Flask(__name__)

classifier = load_model('classifierModel')

嘗試:

from tensorflow import keras

並用於加載 model

model = tf.keras.models.load_model('./folder_with_model/')

它應該可以解決您的問題

試試#2

確保您還上傳了"variables" & "assets" (在我的情況下)文件夾以及 model。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM