使用TensorFlow搭建一个全连接神经网络教程
说明
本例子利用TensorFlow搭建一个全连接神经网络,实现对MNIST手写数字的识别。
先上代码
fromtensorflow.examples.tutorials.mnistimportinput_data importtensorflowastf #preparedata mnist=input_data.read_data_sets('MNIST_data',one_hot=True) xs=tf.placeholder(tf.float32,[None,784]) ys=tf.placeholder(tf.float32,[None,10]) #themodelofthefully-connectednetwork weights=tf.Variable(tf.random_normal([784,10])) biases=tf.Variable(tf.zeros([1,10])+0.1) outputs=tf.matmul(xs,weights)+biases predictions=tf.nn.softmax(outputs) cross_entropy=tf.reduce_mean(-tf.reduce_sum(ys*tf.log(predictions), reduction_indices=[1])) train_step=tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) #computetheaccuracy correct_predictions=tf.equal(tf.argmax(predictions,1),tf.argmax(ys,1)) accuracy=tf.reduce_mean(tf.cast(correct_predictions,tf.float32)) withtf.Session()assess: init=tf.global_variables_initializer() sess.run(init) foriinrange(1000): batch_xs,batch_ys=mnist.train.next_batch(100) sess.run(train_step,feed_dict={ xs:batch_xs, ys:batch_ys }) ifi%50==0: print(sess.run(accuracy,feed_dict={ xs:mnist.test.images, ys:mnist.test.labels }))
代码解析
1.读取MNIST数据
mnist=input_data.read_data_sets('MNIST_data',one_hot=True)
2.建立占位符
xs=tf.placeholder(tf.float32,[None,784]) ys=tf.placeholder(tf.float32,[None,10])
xs代表图片像素数据,每张图片(28×28)被展开成(1×784),有多少图片还未定,所以shape为None×784.
ys代表图片标签数据,0-9十个数字被表示成One-hot形式,即只有对应bit为1,其余为0.
3.建立模型
weights=tf.Variable(tf.random_normal([784,10])) biases=tf.Variable(tf.zeros([1,10])+0.1) outputs=tf.matmul(xs,weights)+biases predictions=tf.nn.softmax(outputs) cross_entropy=tf.reduce_mean(-tf.reduce_sum(ys*tf.log(predictions), reduction_indices=[1])) train_step=tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
使用Softmax函数作为激活函数:
4.计算正确率
correct_predictions=tf.equal(tf.argmax(predictions,1),tf.argmax(ys,1)) accuracy=tf.reduce_mean(tf.cast(correct_predictions,tf.float32))
5.使用模型
withtf.Session()assess: init=tf.global_variables_initializer() sess.run(init) foriinrange(1000): batch_xs,batch_ys=mnist.train.next_batch(100) sess.run(train_step,feed_dict={ xs:batch_xs, ys:batch_ys }) ifi%50==0: print(sess.run(accuracy,feed_dict={ xs:mnist.test.images, ys:mnist.test.labels }))
运行结果
训练1000个循环,准确率在87%左右.
ExtractingMNIST_data/train-images-idx3-ubyte.gz ExtractingMNIST_data/train-labels-idx1-ubyte.gz ExtractingMNIST_data/t10k-images-idx3-ubyte.gz ExtractingMNIST_data/t10k-labels-idx1-ubyte.gz 0.1041 0.632 0.7357 0.7837 0.7971 0.8147 0.8283 0.8376 0.8423 0.8501 0.8501 0.8533 0.8567 0.8597 0.8552 0.8647 0.8654 0.8701 0.8712 0.8712
以上这篇使用TensorFlow搭建一个全连接神经网络教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。