tensorflow - “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 模型执行预测(不知何故只是利用了权重、偏差、模型形状)?
虽然一切正常,但我想我不明白它是如何工作的。
解决方案
保存到磁盘的模型具有模型架构和权重。load_model API 反序列化这个文件,构建并返回一个 Keras 模型对象。因此,您实际上是在 Keras 模型对象上调用 predict()。您可以通过调用以下方法检查模型对象:
type(flask_model) #check the type
dir(flask_model) #list the attributes/methods available
推荐阅读
- python - 无法安装 l18n,UnicodeDecodeError: 'cp950' codec can't decode byte
- python - matplotlib 自定义 linecolor 和 line type 循环器
- python - Python - 将大型数据框导出到 CSV
- java - 从 Katalon 的 Groovy / Java 测试用例运行外部程序
- vagrant - Vagrant - Bash:找不到命令
- c# - Asp.net Core 2 使用 Identity Server 4 启用多租户
- angular - 当请求的凭据模式为“包含”时,响应中的“Access-Control-Allow-Origin”标头不得为通配符“*”
- swift - 如何在 swift 中对 JSON 文件中的数据进行编码
- bootstrap-4 - Bootstrap 4 添加 bg 图像
- c - 凯撒哈佛 CS50X