我需要了解如何从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客户端运行预测时,我得到了一组概率。我也想要每个概率的类名。如何修改我的模型或签名以实现此目的?
答案 0 :(得分:0)
抱歉,您确实需要知道每个标签对应的类号。一旦你知道,你可以将它添加到你的输出字典。
您可能想问一下keras人们如何访问标签词汇表。我假设它可以从你进行映射的层中获得。