Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何向Keras制造的ML引擎模型发送POST请求?_Keras_Google Cloud Platform_Google Cloud Ml - Fatal编程技术网

如何向Keras制造的ML引擎模型发送POST请求?

如何向Keras制造的ML引擎模型发送POST请求?,keras,google-cloud-platform,google-cloud-ml,Keras,Google Cloud Platform,Google Cloud Ml,我做了一个凯拉斯模型 model = Sequential() model.add(Dense(12, input_dim=7, activation='relu')) model.add(Dense(8, activation='relu')) model.add(Dense(1, activation='sigmoid')) 在当地训练 # Compile model model.compile(loss='binary_crossentropy', optimizer='adam',

我做了一个凯拉斯模型

model = Sequential() 
model.add(Dense(12, input_dim=7, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
在当地训练

# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# Fit the model
model.fit(X_train, Y_train, epochs=150, batch_size=10)
测试表明它是有效的

example = np.array([X_test.iloc[0]])    
model.predict(example)
使用此功能保存它

def to_savedmodel(model, export_path):
"""Convert the Keras HDF5 model into TensorFlow SavedModel."""
builder = saved_model_builder.SavedModelBuilder(export_path)
signature = predict_signature_def(inputs={'input': model.inputs[0]},
                                outputs={'income': model.outputs[0]})
K.clear_session()
sess = K.get_session()
builder.add_meta_graph_and_variables(
        sess=sess,
        tags=[tag_constants.SERVING],
        signature_def_map={
            signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY: signature}
    )
sess.close()
K.clear_session()
builder.save()
该模型现在以
.pb
格式保存在GC存储器中

我在ML引擎中创建了一个新模型,并部署了第一个版本。 当我试图通过HTTP
POST
请求使用这个json
body

{
  "instances": [{
    "input": [1, 2, 3, 4, 5, 6, 7 ]
  }]
}
我得到这个错误:

{
    "error": "Prediction failed: Error during model execution: AbortionError(code=StatusCode.NOT_FOUND, details=\"FeedInputs: unable to find feed output dense_34_input:0\")"
}

知道如何发送正确的正文或正确保存模型吗?

谢谢sdcbr。你给我指明了正确的方向。保存模型的功能是扔掉我训练过的模型。我更改了它,现在效果很好:

def to_savedmodel(fname, export_path):
    with tf.Session() as sess:
        K.set_session(sess)
    model = load_model(fname)
    sess.run(tf.initialize_all_variables())
    K.set_learning_phase(0)
    builder = SavedModelBuilder(export_path)
    signature = predict_signature_def(
        inputs={"inputs": model.input},
        outputs={"outputs": model.output}) 
builder.add_meta_graph_and_variables(
        sess=sess,
        tags=[tag_constants.SERVING],
        signature_def_map={
            'predict': signature})
    builder.save()

谢谢sdcbr。你给我指明了正确的方向。保存模型的功能是扔掉我训练过的模型。我更改了它,现在效果很好:

def to_savedmodel(fname, export_path):
    with tf.Session() as sess:
        K.set_session(sess)
    model = load_model(fname)
    sess.run(tf.initialize_all_variables())
    K.set_learning_phase(0)
    builder = SavedModelBuilder(export_path)
    signature = predict_signature_def(
        inputs={"inputs": model.input},
        outputs={"outputs": model.output}) 
builder.add_meta_graph_and_variables(
        sess=sess,
        tags=[tag_constants.SERVING],
        signature_def_map={
            'predict': signature})
    builder.save()

repo包含用于ML引擎的良好且最新的样板代码,可能会有所帮助。不过,它是基于tensorflow的。然而,在保存模型之前清除Keras会话时,你不是要扔掉经过训练的图形吗?这篇文章有帮助吗:是的!就这样!你的第二个建议是正确的。我把经过训练的图表扔掉了。我开发了一个新的功能:repo包含用于ML引擎的良好且最新的样板代码,这可能会有所帮助。不过,它是基于tensorflow的。然而,在保存模型之前清除Keras会话时,你不是要扔掉经过训练的图形吗?这篇文章有帮助吗:是的!就这样!你的第二个建议是正确的。我把经过训练的图表扔掉了。我做了一个新的功能: