web-dev-qa-db-ja.com

TensorFlowチュートリアルbatch_xs、batch_ys = mnist.train.next_batch(100)のnext_batchはどこから来たのですか?

TensorFlowチュートリアルを試していますが、この行のnext_batchがどこから来たのかわかりませんか?

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

私は見た

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

また、next_batchも表示されませんでした。

今、自分のコードでnext_batchを試すと、

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

だから私はnext_batchがどこから来たのか理解したいと思いますか?

14
Dan

next_batchDataSetクラスのメソッドです( https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/learn/python/learn/datasetsを参照してください/mnist.py クラスの内容の詳細について)。

Mnistデータをロードし、それを変数mnistに割り当てると:

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

mnist.trainのクラスを見てください。次のように入力して表示できます。

print mnist.train.__class__

以下が表示されます。

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

mnist.trainDataSetクラスのインスタンスであるため、クラスの関数next_batchを使用できます。クラスの詳細については、 documentation をご覧ください。

19
Nick Becker

Tensorflowリポジトリを調べたところ、ここから始まっているようです。

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

ただし、独自のコードで(独自のデータセット用に)実装する場合は、私が行ったように、データセットオブジェクトに自分で記述する方がはるかに簡単です。私が理解しているように、これはデータセット全体をシャッフルし、シャッフルされたデータセットから$ mini_batch_size個のサンプルを返すメソッドです。

疑似コードは次のとおりです。

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

8
Dark Element