Tensorflow实现简单Minist

来源:互联网 发布:linux新建用户并授权 编辑:程序博客网 时间:2024/05/20 01:11
TF安装成功后,我们就开始进入实战吧!
拿Minist作为例子;
有两种方式去下来Minist数据:
  1、在Yann Lecun网站上载MNIST数据
   2、用Python代码实现
MNIST
数据的自动下载
在此,我们采用第二种方式去下载数据,代码如下:
from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
载完成功后,会在屏幕上出现如下的信息:
分别为训练数据和测试数据。
import tensorflow as tfx = tf.placeholder(tf.float32, [None, 784])
这里设置op;
每个图片大小为28*28=784,即每个图片的像素点数。
y_ = tf.placeholder(tf.float32, [None, 10])
同理设置op;
每个图片的label是从0到9的期中一个数。
如果图片为2,那么在第三个位置上的值就为1。(从0开始的)W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
为模型创建相应的权值及其偏好
y = tf.nn.softmax(tf.matmul(x, W) + b)
利用矩阵法则和softmax函数  效果:y={softmax}(Wx+b)
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_*tf.log(y),reduction_indices=[1]))
利用“交叉熵”

train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
利用GD算法

init = tf.global_variables_initializer()
初始化我们所创建的变量sess=tf.Session();sess.run(init)
启动模型
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})
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
在此,需说明cast函数。
例如,原来correct_prediction的数据格式是bool,那么将其转化成float32以后,就能够将其转化成0和1的序列。
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))
运行整个代码得出如下结果:
至此,一个TF入门程序就测试完毕。
                                             
0 0
原创粉丝点击