我正在使用以下代码训练数据。但是在这里我需要将数据分成批次(在MNIST tensorflow示例中给出:batch_xs,batch_ys = mnist.train.next_batch(100))。
当我查找next_batch方法时,它在任何库中都不可用。我是Tensor流的新手。只是想知道我是否可以在训练时将数据分成几批。
任何帮助都会非常感激。
for i in range(training_epochs):
sess.run(optimizer, feed_dict={x: inputX, y_: inputY}) # Take a gradient descent step using our inputs and labels
# That's all! The rest of the cell just outputs debug messages.
# Display logs per epoch step
if (i) % display_step == 0:
cc = sess.run(cost, feed_dict={x: inputX, y_:inputY})
print "Training step:", '%04d' % (i), "cost=", "{:.9f}".format(cc) #, \"W=", sess.run(W), "b=", sess.run(b)
print "Optimization Finished!"
training_cost = sess.run(cost, feed_dict={x: inputX, y_: inputY})
print "Training cost=", training_cost, "W=", sess.run(W), "b=", sess.run(b), '\n'
答案 0 :(得分:0)
next_batch
不是通用库方法。这是一种特定于MNIST数据集的方法,它读取下一个输入的小批量输入以供给Tensorflow。
你可以在这里看到它的实现: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/learn/python/learn/datasets/mnist.py#L160
您需要为数据集实现类似的功能。 此代码不是特定于Tensorflow的 - 您可以使用任何您喜欢的Python库来执行此操作。
希望有所帮助!
答案 1 :(得分:0)
作为解决方法,您可以尝试以下操作:
for i in range(1000):
# load batch of 100 images and correct answers
# where n_data_train is the number of rows of your training set
batch_X = x_train[(i*100)%n_data_train:((i+1)*100)%n_data_train]
batch_Y_ = y_train[(i*100)%n_data_train:((i+1)*100)%n_data_train]
train_data={X: batch_X, Y_: batch_Y_}
# train
sess.run(train_step, feed_dict=train_data)