我正在尝试将keras模型转换为用于Google Cloud的ml-engine预测的模型。我有一个预先训练的分类器,将numpy数组作为输入。我发送给model.predict的正常工作数据称为input_data。
我将其转换为base 64,并json使用以下几行将其转储到文件中:
data = {}
data['image_bytes'] = [{'b64':base64.b64encode(input_data.tostring())}]
with open('weights/keras/example.json', 'w') as outfile:
json.dump(data, outfile)
Run Code Online (Sandbox Code Playgroud)
现在,我尝试从现有模型创建TF模型:
from keras.models import model_from_json
import tensorflow as tf
from keras import backend as K
from tensorflow.python.saved_model import builder as saved_model_builder
from tensorflow.python.saved_model import utils
from tensorflow.python.saved_model import tag_constants, signature_constants
from tensorflow.python.saved_model.signature_def_utils_impl import build_signature_def, predict_signature_def
init = tf.global_variables_initializer()
with tf.Session() as sess:
K.set_session(sess)
sess.run(init)
print("Keras model & weights loading...")
K.set_learning_phase(0)
with open(json_file_path, 'r') as file_handle:
model = …Run Code Online (Sandbox Code Playgroud) 我有一个接受过大输入的训练模型。我通常将其作为形状 (1,473,473,3) 的 numpy 数组来执行。当我把它放到 JSON 中时,我最终得到了一个大约 9.2MB 的文件。即使我将其转换为 JSON 文件的 base64 编码,输入仍然相当大。
ml-engine predict 在发送 JSON 文件时拒绝我的请求,并出现以下错误:
(gcloud.ml-engine.predict) HTTP request failed. Response: {
"error": {
"code": 400,
"message": "Request payload size exceeds the limit: 1572864 bytes.",
"status": "INVALID_ARGUMENT"
}
}
Run Code Online (Sandbox Code Playgroud)
看起来我无法向 ML-engine 发送大小超过 1.5MB 的任何内容。这确定是一回事吗?其他人如何绕过对大数据进行在线预测?我必须启动计算引擎还是会遇到同样的问题?
编辑:
我从 Keras 模型开始并尝试导出到 tensorflow 服务。我将我的 Keras 模型加载到一个名为“model”的变量中,并定义了一个目录“export_path”。我像这样构建 tensorflow 服务模型:
signature = predict_signature_def(inputs={'input': model.input},
outputs={'output': model.output})
builder = saved_model_builder.SavedModelBuilder(export_path)
builder.add_meta_graph_and_variables(
sess=sess,
tags=[tag_constants.SERVING],
signature_def_map={
signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY: signature
}
)
builder.save()
Run Code Online (Sandbox Code Playgroud)
输入将如何查找此 signature_def?JSON 会像 {'input': ' https://storage.googleapis.com/projectid/bucket/filename …