UPDATE: In Version 1.3 wurden die contrib estimators (tf.contrib.learn.DNNClassifier zum Beispiel) geändert, um von der Core-Schätzer-Klasse tf.estimator.Estimator zu erben, die im Gegensatz zu ihrem Vorgänger die Modellfunktion als private Klasse verbirgt Sie müssen estimator.model_fn
in der folgenden Lösung durch estimator._model_fn
ersetzen.
Josh's Antwort weist Sie auf das Flowers-Beispiel hin, was eine gute Lösung ist, wenn Sie einen benutzerdefinierten Schätzer verwenden möchten. Wenn Sie bei einem gespeicherten Schätzer bleiben möchten (z. B. tf.contrib.learn.DNNClassifiers
), können Sie ihn in einen benutzerdefinierten Schätzer einfügen, der Unterstützung für Schlüssel hinzufügt. (Anmerkung: Ich denke, es ist wahrscheinlich, dass Dosenschätzer wichtige Unterstützung erhalten, wenn sie sich in den Kern bewegen).
%Vor%
my_key_estimator
kann dann genauso verwendet werden wie Ihre DNNClassifier
, außer dass Sie eine Funktion mit dem Namen 'key'
von input_fns (Vorhersage, Auswertung und Training) erwarten.
EDIT2:
Sie müssen auch den entsprechenden Eingangstensor zur gewünschten Vorhersagefunktion hinzufügen. Zum Beispiel würde ein neuer JSON-Serving-Input fn wie folgt aussehen:
%Vor%
(leicht abweichend zwischen 1.2 und 1.3, da tf.contrib.learn.InputFnOps
durch tf.estimator.export.ServingInputReceiver
ersetzt wird und das Auffüllen von Tensoren auf Rang 2 in 1.3 nicht mehr notwendig ist)
Dann sendet ML Engine einen Tensor namens "key" mit Ihrer Vorhersageanforderung, die an Ihr Modell und Ihre Vorhersagen weitergegeben wird.
EDIT3: Modified key_model_fn_gen
unterstützt das Ignorieren von fehlenden Schlüsselwerten.
EDIT4: Hinzugefügt Schlüssel für die Vorhersage