Tensorflow复习笔记1:基础的softmax模型

最近在复习tensorflow的基础部分,做些笔记,就当备忘和写写教程啦。
与其他教程不同的是:
1. 所有程序能保证在tensorflow-gpu 1.8.0上测试通过。可以避免一些老教程低版本的坑吧。
2. 很多文章就是光BB,看的也挺爽,就是看完也没留下啥。我会在最后尽量给上完整的代码。


TensorFlow 程序通常被组织成一个构建阶段和一个执行阶段。
在构建阶段, op 的执行步骤 被描述成一个图。
在执行阶段, 使用会话(Session)执行图中的 op。

实验依然用的mnist数据集。后面会用到更新的fashion-mnist数据集。
使用简单的多分类模型:softmax模型,来解决mnist分类的问题。
代码有参考官网的例子,并加入了注释,进行了整理:

import tensorflow as tf

# 构建模型阶段
# 载入数据
import tensorflow.examples.tutorials.mnist.input_data as input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

# 输入数据:x
x = tf.placeholder(tf.float32, [None, 784])
# 输入数据:y
y_ = tf.placeholder("float", [None,10])

# 权重参数
W = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))

# 定义模型。得到预测的y
y = tf.nn.softmax(tf.matmul(x,W) + b)


# 定义损失函数:交叉熵
cross_entropy = -tf.reduce_sum(y_ * tf.log(y))
# 定义优化器和训练器
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)

# 定义准确率的计算方式
# 取预测值和真实值 概率最大的标签
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

# 执行会话阶段
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)

# i 表示 iteration
for i in range(10000):
  batch_xs, batch_ys = mnist.train.next_batch(100)
  sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

  if i%1000==0 :
    print("%d iteration, accuarcy:%.4f " % (i, sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels})) )

跑到最后,测试集的acc应该能拿到91%左右。
如果有不很清楚的API,建议都查查清楚。以上是最基础的代码啦。

猜你喜欢

转载自blog.csdn.net/yiranzhiliposui/article/details/81043287