2016-11-01 2 views
10

Ich probiere das TensorFlow-Tutorial aus und verstehe nicht, woher kommt next_batch in dieser Zeile?Woher kommt next_batch im TensorFlow-Tutorial batch_xs, batch_ys = mnist.train.next_batch (100)?

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

Ich sah

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

Und next_batch es entweder gar nicht sehen.

Nun, wenn next_batch in meinem eigenen Code auszuprobieren, ich bin immer

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

Also ich würde gerne verstehen woher kommt aus next_batch kommen?

+0

auch hier gefragt: https://stackoverflow.com/questions/41454511/tensorflow-how-is -Dataset-Train-nächsten-Batch-definiert –

Antwort

15

next_batch ist ein Verfahren der DataSet Klasse (https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/learn/python/learn/datasets/mnist.py für weitere Informationen sehen, was in der Klasse ist).

Wenn Sie die mnist Daten laden und auf die Variable mnist mit zuweisen: in der Klasse der mnist.train

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

Look. Sie können es sehen, indem Sie eingeben:

print mnist.train.__class__ 

Sie folgendes sehen werden:

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

Da mnist.train eine Instanz der Klasse ist DataSet, können Sie die Klasse Funktion next_batch verwenden. Weitere Informationen zu Klassen finden Sie unter documentation.

+0

Tolle Erklärung danke. – Dan

8

Nachdem durch das tensorflow Repository suchen, scheint es hier stammen: wenn Sie schauen, implementieren es in Ihrem eigenen Code

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

jedoch (für Ihren eigenen Datensatz), wäre es wahrscheinlich, viel einfacher, es selbst in einem Dataset-Objekt zu schreiben, wie ich es tat. Nach meinem Verständnis ist es eine Methode, die gesamte Datenmenge zu mischen und $ mini_batch_size Anzahl der Proben aus der gemischten Datenmenge zurückzugeben.

Hier einig Pseudo-Code:

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

+0

Dies ist sehr gut danke. – Dan

-2

Sie können nur die Hilfe-Funktion:

help(tf.contrib.learn.datasets.mnist.DataSet.next_batch) 

und das Dokument der Funktion erhalten next_batch