【发布时间】:2016-02-16 17:11:09
【问题描述】:
我最近开始学习tensorflow,我在tensorflow网站上做第一个教程,遇到了一个问题。
我在 Cloud 9 上使用 tensorflow。
起始代码没有问题:
import tensorflow as tf
import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
x = tf.placeholder(tf.float32, [None, 784]);
W = tf.Variable(tf.zeros([784, 10]));
b = tf.Variable(tf.zeros([10]));
y = tf.nn.softmax(tf.matmul(x, W) + b);
y_ = tf.placeholder(tf.float32, [None, 10]);
cross_entropy = -tf.reduce_sum(y_ * tf.log(y));
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy);
init = tf.initialize_all_variables();
xs = mnist.train.images;
ys = mnist.train.labels;
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1));
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
sess = tf.Session();
sess.run(init);
在教程的训练部分,它说从 55000 张图像的整个训练集中批量获得 100 张图像会更快。代码是:
for i in range(1000):
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
print str(i) + " -> " + str(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}));
这行得通,我得到了教程所说的 %91 准确度。
然后我尝试将整个集合发送到训练中,因为教程建议的计算量很大。我将迭代保持在较低水平,以查看实际发生的情况。
for i in range(100):
sess.run(train_step, feed_dict = {x: batch_xs, y_: batch_ys});
print str(i) + " -> " + str(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}));
但是,无论迭代多少次,我的准确率总是 0.098。
然后我尝试了另一种方法来达到同样的效果。
for i in range(100):
for start, end in zip(range(0,len(xs),50), range(50, len(ys), 50)):
sess.run(train_step, feed_dict = {x: xs[start:end], y_: ys[start:end]});
print str(i) + " -> " + str(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}));
在这个例子中,它以 50 x 50 迭代整个集合。这种方法最多可以工作 200 x 200。在 200 之后,无论数字是多少,我都会得到 0.098 的准确度。
据我所知,您可以发送到培训的项目数量是任意限制的。是真的还是我在这里遗漏了什么?
谢谢。
【问题讨论】:
标签: python python-2.7 tensorflow