La plupart des tutoriels se concentrent sur le cas où l'ensemble de l'ensemble de données de formation s'intègre en mémoire. Cependant, j'ai un itérateur qui agit comme un flux infini de (caractéristiques, des étiquettes) (les créer à moindre coût à la volée).
Lors de la mise en œuvre du INPUT_FN code> pour tensorflows estimateur , puis-je retourner une instance de l'itérateur comme
for i in range(max_iter):
learn_op(input_fn())
3 Réponses :
L'argument de TENSORFLOW propose deux exemples d'Input_FN code> Input_FN code> pour NUMPY et Panda Tableaux, mais ils partent d'un tableau en mémoire, cela ne vous aide donc pas avec votre problème. P>
Vous pouvez également consulter leur code en suivant les liens ci-dessus, pour voir comment ils implémentent un fichier Si vous êtes prêt à utiliser l'interface de niveau moins élevé de Tensorflow, les choses sont plus simples et plus flexibles. Il y a un Tutoriel qui couvre la plupart des besoins et les solutions proposées sont faciles (-er) à mettre en œuvre . p>
En particulier, si vous avez déjà un itérateur qui renvoie des données que vous avez décrites dans votre question, à l'aide des espaces réservés (section "L'alimentation" dans le lien précédent) doit être simple. P> INPUT_FN code> est utilisé tout au long de la formation, mais la fonction elle-même est appelée une fois. Donc, créer un
sophistiqué INPUT_FN CODE> qui va au-delà de retourner un tableau constant comme expliqué dans le Tutoriel n'est pas aussi simple. p>
input_fn code> non trivial efficace, mais vous pouvez constater qu'il nécessite plus de code que vous souhaitez. . p>
J'aurais pensé que l'alimentation d'un réseau d'un itérateur / itérable est le cas d'utilisation standard, pas l'exception.
J'ai trouvé une demande de traction qui convertit un générateur code> sur un la partie correspondante est p> INPUT_FN code>:
https://github.com/tensorflow/tensorflow/pull/7045/files
from tensorflow.contrib.learn.python.learn.learn_io import generator_io import numpy as np # define generator def generator(): for index in range(2): yield {'a': np.ones(1) * index,'b': np.ones(1) * index + 32,'label': np.ones(1) * index - 32} input_fn = generator_io.generator_input_fn(generator, target_key='label', batch_size=2, shuffle=False, num_epochs=1) features, target = input_fn() Refer to the test case https://github.com/tensorflow/tensorflow/pull/7045/files
J'utilise
dataseet.from_generator code> et dans le générateur I boucle via l'itérateur.