我一直在制作一个简单的网站,该网站使用 keras 在从用户网络摄像头捕获的图像上运行图像分类模型。目前,我的模型保存在我的 Flask 应用程序的静态文件夹中。问题出在模型的实际加载中。当我尝试加载模型时(在 python 文件 app.py 中,其中包含我的 Flask 应用程序)。
@app.route('/')
def init():
model = load_model('/static/model/model.keras')
return render_template('index.html')
它会抛出找不到文件的错误。
我尝试使用请求加载它并从github编写它,这导致了同样的错误。 我也尝试过做
@app.route('/cdn/<path:filename>')
def custom_static(filename):
return send_from_directory('/static', filename)
并从中加载它,但同样的错误仍然存在。
这里的主要问题可能是模型的路径。 Flask(以及一般的 Python)根据当前工作目录查找文件,因此仅给出
'/static/model/model.keras'
可能不起作用,因为它不是绝对路径。
快速修复可以使用
os.path
作为绝对路径。你可以像这样更新你的 app.py 并检查 -
@app.route('/')
def init():
# Create an absolute path to your model
model_path = os.path.join(app.root_path, 'static', 'model', 'model.keras')
model = load_model(model_path)
return render_template('index.html')
通过使用
app.root_path
,我们可以告诉Python从app文件夹的根目录开始,所以无论脚本运行在哪里,它都会找到model.keras。