0

voraussagen Ich muss verstehen, wie Vorhersagen von einem Keras-Modell mit Tensorflow-Backend auf Google Cloud ml Engine bereitgestellt erhalten.Wie Keras und Google Cloud ml Engine

Ich habe getan, folgende Schritte: 1) Ausgebildete eine Klassifizierung CNN Satzmodell

2) mit Keras entwickelt gespeichert das Modell tensorflow gespeichert Modell

3) Eingesetzt in Google Cloud ml Motor.

Mein Problem ist Vorhersage gibt nur Wahrscheinlichkeiten, aber nicht die Bezeichnungen für diese Wahrscheinlichkeiten. Wie bekomme ich sowohl Etiketten als auch Wahrscheinlichkeiten zum Zeitpunkt der Vorhersage.

Mein Code ist wie folgt:

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() 

ich hochgeladen dieses Modell auf Google Cloud Storage und Einsatz erfolgreich. Wenn ich Vorhersagen mit Python-Client ausführen, bekomme ich ein Array von Wahrscheinlichkeiten. Ich möchte auch den Klassennamen gegen jede Wahrscheinlichkeit. Wie ändere ich mein Modell oder meine Signatur, um dies zu erreichen?

+0

Sie müssen diesem Wörterbuch Wahrscheinlichkeiten hinzufügen: outputs = {'output': m.outputs [0]}). ... Sie können tf.argmax verwenden, um das Label mit der höchsten Wahrscheinlichkeit zu erhalten – Lak

+0

Das scheint zu funktionieren, aber ich brauche Label gegen jede Wahrscheinlichkeit – manoveg

Antwort

0

Sorry, aber Sie müssen wissen, welche Klassennummer jedem Etikett entspricht. Sobald Sie das wissen, können Sie das zu Ihrem Wörterbuch von Ausgaben hinzufügen.

Vielleicht möchten Sie Keras Leute fragen, wie Sie auf das Vokabular der Etiketten zugreifen können. Ich nehme an, dass es in der Ebene verfügbar ist, in der Sie das Mapping durchführen.

Verwandte Themen