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?
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 .
Après avoir parcouru le référentiel tensorflow, il semble provenir ici:
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]]