web-dev-qa-db-fra.com

D'où vient next_batch dans le tutoriel TensorFlow batch_xs, batch_ys = mnist.train.next_batch (100)?

J'essaie le didacticiel TensorFlow et je ne comprends pas d'où vient next_batch dans cette ligne?

 batch_xs, batch_ys = mnist.train.next_batch(100)

J'ai regardé

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

Et je n'ai pas vu next_batch non plus.

Maintenant, quand j'essaye next_batch dans mon propre code, je reçois

AttributeError: 'numpy.ndarray' object has no attribute 'next_batch'

Je voudrais donc comprendre d'où vient next_batch?

14
Dan

next_batch est une méthode de la classe DataSet (voir https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/learn/python/learn/datasets/mnist. py pour plus d'informations sur le contenu de la classe).

Lorsque vous chargez les données mnist et les affectez à la variable mnist avec:

mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

regardez la classe de mnist.train. Vous pouvez le voir en tapant:

print mnist.train.__class__

Vous verrez ce qui suit:

<class 'tensorflow.contrib.learn.python.learn.datasets.mnist.Dataset'>

Car mnist.train est une instance de la classe DataSet, vous pouvez utiliser la fonction de la classe next_batch. Pour plus d'informations sur les classes, consultez la documentation .

19
Nick Becker

Après avoir parcouru le référentiel tensorflow, il semble provenir ici:

https://github.com/tensorflow/tensorflow/blob/9230423668770036179a72414482d45ddde40a3b/tensorflow/contrib/training/python/training/sequence_queueing_state_saver.py#L905

Cependant, si vous cherchez à l'implémenter dans votre propre code (pour votre propre ensemble de données), il serait probablement beaucoup plus simple de l'écrire vous-même dans un objet d'ensemble de données, comme je l'ai fait. Si je comprends bien, c'est une méthode pour mélanger l'ensemble de données entier, et retourner $ mini_batch_size nombre d'échantillons de l'ensemble de données mélangé.

Voici un pseudocode:

shuffle data.x and data.y while retaining relation return [data.x[:mb_n], data.y[:mb_n]]

8
Dark Element