小编Cha*_*ler的帖子

Keras模型到Tensorflow输入b64编码数据而不是numpy ml-engine预言

我正在尝试将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)

keras tensorflow tensorflow-serving google-cloud-ml

5
推荐指数
0
解决办法
365
查看次数

gcloud ml-engine 在大文件上返回错误

我有一个接受过大输入的训练模型。我通常将其作为形状 (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 …

python json numpy predict google-cloud-ml

5
推荐指数
1
解决办法
1932
查看次数