2017-10-20 46 views
6

Próbuję uzyskać prognozy z funkcją zwyczaj wejściowego estimator.predict, ale daje mi to:TensorFlow estimator.predict() daje OSTRZEŻENIE: tensorflow: wykres wejściowy nie zawiera QueueRunner

WARNING:tensorflow:Input graph does not contain a QueueRunner. That means predict yields forever. This is probably a mistake.

Nie daje mi błędu, ale predict mówi tylko, że jego parametry przywracania i nie zwraca rzeczywistych prognoz. Tu jest mój kodu:

test_data = [0.03, 0.91, 0.95, 0.10, 0.56, 0.93] 
test_data_in = { k: test_data[index] for index, k in enumerate(FEATURES) } 
print(test_data_in) 

def predict_input_fn(data_set): 
    feature_cols = { k: tf.reshape(tf.constant(data_set[k], dtype=tf.float32), [-1]) for k in FEATURES } 
    return feature_cols 

predictions = estimator.predict(input_fn=lambda: predict_input_fn(test_data_in)) 
print(list(predictions)) 

Szukałem na this problemu, ale nie mogę znaleźć rozwiązania mojego problemu związanego. Dlaczego TensorFlow pokazuje to ostrzeżenie i jak się go pozbyć?

+1

Cholera, właśnie znalazłem to (trafiając na ten sam problem) i brak odpowiedzi? – contractorwolf

+0

Może nie przydatne (nie było dla mnie): https://github.com/tensorflow/tensorflow/issues/11621 – antonimmo

Odpowiedz

2

uderzę to też, czytając wątek https://github.com/tensorflow/tensorflow/issues/11621

Myślę, że program jest całkowicie poprawny i jest to ostrzeżenie, że jest źle :). Został dodany na długo przed pojawieniem się API danych i miał dobre intencje. (AFAICT Funkcja przewidywania() opiera się na danych wejściowych kończących się na tf.errors.OutOfRangeError i przed istniejącymi zestawami danych tylko potoki oparte na QueueRunner zakończyłyby się w ten sposób, więc prawdopodobnie był to błąd, jeśli nie istniały żadne kolejki.) @xiejw usuwamy to ostrzeżenie, czy istnieje bardziej sprytny sposób na wykrycie błędu?

Mam nadzieję, że usunie błąd, gdy będzie niepotrzebny.

0

Wystąpił ten sam błąd. Jednakże, aby zobaczyć wartości w prognozie (rząd po rzędzie), skorzystałem z operatora __next__(). Tak więc kod wyświetlający następny wiersz natychmiastowy to: print(predictions.__next__)