如何预测使用keras和谷歌云ml引擎

时间:2017-11-19 23:54:49

标签: tensorflow keras conv-neural-network tensorflow-serving google-cloud-ml

我需要了解如何从keras模型获得预测,并在Google Cloud ml引擎上部署张量流后端。

我已完成以下步骤: 1)训练使用Keras开发的CNN句子分类模型

2)使用tensorflow保存模型保存模型

3)部署到google cloud ml引擎。

我的问题是预测只给出了概率,但没有给出这些概率的标签。 如何在预测时获得标签和概率。<​​/ p>

我的代码如下:

def get_cnn_model_v1():
    model = Sequential()
    model.add(Embedding(VOCAB_SIZE,
                        50,
                        input_length=max_document_length))
    model.add(Dropout(0.2))
    model.add(Conv1D(64,
                     3,
                     padding='valid',
                     activation='relu',
                     strides=1))
    model.add(GlobalMaxPooling1D())
    model.add(Dense(256))
    model.add(Dropout(0.2))
    model.add(Activation('relu'))
    model.add(Dense(number_of_labels))
    model.add(Activation('softmax'))
    model.summary()
    model.compile(loss='categorical_crossentropy',
                  optimizer='adam',
                  metrics=[metrics.mae,metrics.categorical_accuracy])

    return model

model.fit(x,y,batch_size=32,epochs=50,verbose=1, validation_data=(testX, testY),shuffle=True)


builder = saved_model_builder.SavedModelBuilder("<path>")
signature = predict_signature_def(
inputs={'input': m.inputs[0]},
outputs={'output': m.outputs[0]})


with K.get_session() as sess:
    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()

我在谷歌云存储上传了这个模型并成功部署了它。 当我使用python客户端运行预测时,我得到了一组概率。我也想要每个概率的类名。如何修改我的模型或签名以实现此目的?

1 个答案:

答案 0 :(得分:0)

抱歉,您确实需要知道每个标签对应的类号。一旦你知道,你可以将它添加到你的输出字典。

您可能想问一下keras人们如何访问标签词汇表。我假设它可以从你进行映射的层中获得。