TensorFlow 1.4 przenosi zestaw danych TF do rdzenia (tf.data.Dataset
) oraz dokument/samouczek sugerują użycie tf.estimator
do modelowania pociągów.Nie można użyć estymatora + zestawu danych i pociągu dla mniej niż jednej epoki.
Jednak zgodnie z zaleceniami pod koniec this page obiekt zestawu danych i jego iterator musi być utworzony w funkcji input_fn
. Oznacza to, że iteracje za pośrednictwem zbioru danych będą zaczynać się od nowa dla każdego połączenia z estimator.train(input_fn, steps)
. Tak więc wywoływanie jest z krokami < liczba próbek w epoce, doprowadzi do wyszkolenia modelu w podzbiorze zbioru danych.
Tak więc moje pytanie. Czy jest możliwe aby zaimplementować coś takiego z Szacow + Dataset:
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)
bez uruchamiania próbki szkoleniowe iteracje od nowa przy każdym wywołaniu estimator.train(input_fn=train_input_fn, steps=valid_freq)
?
Na przykład, w przeciwieństwie do here, utworzyć egzemplarz zestawu danych i jego iteratora poza input_fn
? Próbowałem, ale to nie działa, ponieważ wtedy dane wejściowe (z iteratora zestawu danych) i model (z estymatora model_fn
) nie są częścią tego samego wykresu.
Dzięki
Powiązane problem github: https://github.com/tensorflow/tensorflow/issues/14283