W_fc2 = weight_variable([1024, 10]) b_fc2 = bias_variable([10])
y_conv=tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2) 训练和评估模型
这个模型的效果如何呢?
为了进行训练和评估,我们使用与之前简单的单层SoftMax神经网络模型几乎相同的一套代码,只是我们会用更加复杂的ADAM优化器来做梯度最速下降,在feed_dict中加入额外的参数keep_prob来控制dropout比例。然后每100次迭代输出一次日志。
cross_entropy = -tf.reduce_sum(y_*tf.log(y_conv))
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy) correct_prediction = tf.equal(tf.argmax(y_conv,1), tf.argmax(y_,1)) accuracy = tf.reduce_mean(tf.cast(correct_prediction, \sess.run(tf.initialize_all_variables()) for i in range(20000):
batch = mnist.train.next_batch(50) if i0 == 0:
train_accuracy = accuracy.eval(feed_dict={ x:batch[0], y_: batch[1], keep_prob: 1.0})
print \
train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})
print \
x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0}) 以上代码,在最终测试集上的准确率大概是99.2%。