首页 > 解决方案 > “from tensorflow.python.keras.models import load_model”是否为您提供了 model.predict 功能?

问题描述

我刚刚成功完成了一个 tf.keras 顺序模型的训练,并编写了一个单独的“Flask”脚本,将保存的模型加载到我上传到 Heroku 的应用程序中。一切正常。但是,当我玩的时候,我意识到我只需要导入 Flask,从 flask 以及 pandas 请求,numpy 和从 tensorflow.python.keras.models 导入 load_model:

from tensorflow.python.keras.models import load_model
from flask import Flask, request
import pandas as pd
import numpy as np

使用所有 model.predict 工作(在我运行 load_model() 以及必要的 pandas 和 numpy 转换以正确格式(processed_features)获取 Flask/Post 数据之后:

preds = flask_model.predict(processed_features).flatten()

什么允许我运行 model.predict()?导入 load_model 时 model.predict() 是否可用(我显然不必使用 load_model 来运行 model.predict 以在训练后针对我的测试数据运行)?或者 model.predict() 是 python、numpy 或 pandas 中的通用函数,它知道如何通过 keras 模型执行预测(不知何故只是利用了权重、偏差、模型形状)?

虽然一切正常,但我想我不明白它是如何工作的。

标签: tensorflowkeras

解决方案


保存到磁盘的模型具有模型架构和权重。load_model API 反序列化这个文件,构建并返回一个 Keras 模型对象。因此,您实际上是在 Keras 模型对象上调用 predict()。您可以通过调用以下方法检查模型对象:

type(flask_model)  #check the type
dir(flask_model)   #list the attributes/methods available

推荐阅读