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がどこから来たのか理解したいと思いますか?
next_batch
はDataSet
クラスのメソッドです( 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.train
はDataSet
クラスのインスタンスであるため、クラスの関数next_batch
を使用できます。クラスの詳細については、 documentation をご覧ください。
Tensorflowリポジトリを調べたところ、ここから始まっているようです。
ただし、独自のコードで(独自のデータセット用に)実装する場合は、私が行ったように、データセットオブジェクトに自分で記述する方がはるかに簡単です。私が理解しているように、これはデータセット全体をシャッフルし、シャッフルされたデータセットから$ mini_batch_size個のサンプルを返すメソッドです。
疑似コードは次のとおりです。
shuffle data.x and data.y while retaining relation return [data.x[:mb_n], data.y[:mb_n]]