在Tensorflow中将数据拆分为批次以进行分类

时间:2017-01-31 01:26:22

标签: machine-learning tensorflow classification

我正在使用以下代码训练数据。但是在这里我需要将数据分成批次(在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'

2 个答案:

答案 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)