TensorFlow 1.4 verschiebt TF-Dataset nach Kern (tf.data.Dataset
) und doc/tutorial empfiehlt, tf.estimator
zum Trainieren von Modellen zu verwenden.Schätzer + Dataset kann nicht verwendet werden und für weniger als eine Epoche trainiert werden
Wie jedoch am Ende von this page empfohlen, müssen das Dataset-Objekt und sein Iterator innerhalb der input_fn
-Funktion instanziiert werden. Dies bedeutet, dass die Iterationen durch das Dataset bei jedem Aufruf an estimator.train(input_fn, steps)
neu beginnen. Somit wird das Aufrufen der Schritte < Anzahl der Stichproben in der Epoche dazu führen, dass das Modell auf einer Teilmenge des Datensatzes trainiert wird.
Also meine Frage. Ist es möglich, so etwas wie dies mit Estimator + Datensatz zu implementieren:
for i in range(num_epochs):
# Train for some steps
estimator.train(input_fn=train_input_fn, steps=valid_freq)
validation_iterator.
# Evaluate on the validation set (steps=None, we evaluate on the full validation set)
estimator.evaluate(input_fn=valid_input_fn)
ohne Training zu beginnen Proben Iterationen von Grund auf bei jedem Aufruf estimator.train(input_fn=train_input_fn, steps=valid_freq)
?
Zum Beispiel, im Gegensatz zu here, instanziieren Sie das Dataset und seinen Iterator außerhalb input_fn
? Ich habe es versucht, aber es funktioniert nicht, weil dann die Eingabe (vom Dataset-Iterator) und das Modell (vom Schätzer model_fn
) nicht Teil desselben Graphen sind.
Dank
Verwandte Github Ausgabe: https://github.com/tensorflow/tensorflow/issues/14283