2017-10-20 33 views
6

J'essaie d'obtenir une prédiction avec une fonction d'entrée personnalisée avec estimator.predict, mais il me donne ceci:tensorflow estimator.predict() Avertit: tensorflow: graphique d'entrée ne contient pas de QUEUERUNNER

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

Il ne me donne pas une erreur, mais predict dit juste que ses paramètres de restauration et ne retourne pas les prédictions réelles. Voici mon code:

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

Je l'ai regardé en cause this, mais je ne pouvais pas trouver une solution liée à mon problème. Pourquoi TensorFlow montre-t-il cet avertissement et comment puis-je m'en débarrasser?

+1

damn, je viens de trouver ceci (frapper le même problème), et pas de réponses? – contractorwolf

+0

Peut-être pas utile (ce n'était pas pour moi): https://github.com/tensorflow/tensorflow/issues/11621 – antonimmo

Répondre

2

je frappe cela aussi, en lisant le fil https://github.com/tensorflow/tensorflow/issues/11621

Je pense que votre programme est tout à fait correct et il est l'avertissement qui est faux :). Il a été ajouté bien avant l'existence de l'API Datasets et était bien intentionné. (AFAICT l'API predict() repose sur votre entrée se terminant par tf.errors.OutOfRangeError et avant que les datasets n'existent, seuls les pipelines basés sur QueueRunner se terminent de cette manière, donc c'était probablement une erreur si aucun file d'attente n'existait.) @xiejw nous supprimons cet avertissement ou y a-t-il une manière plus astucieuse de détecter la condition d'erreur?

Espérons qu'ils vont supprimer l'erreur quand elle est inutile.

0

J'ai eu la même erreur. Cependant, pour voir les valeurs dans la prédiction (rangée par rangée), j'ai utilisé l'opérateur __next__(). Ainsi, le code pour afficher la prochaine ligne immédiate est: print(predictions.__next__)