机器学习笔记--TensorFlow学习笔记(1)--TensorFlow运作方式

1.准备数据

MNIST是机器学习领域的一个经典问题,指的是让机器查看一系列大小为28x28像素的手写数字灰度图像,并判断这些图像代表0-9中的哪一个数字。

2.下载

在run_training()方法的一开始,input_data.read_data_sets()函数会确保你的本地训练文件夹中,已经下载了正确的数据,然后将这些数据解压并返回一个含有DataSet实例的字典。

data_sets = input_ data.read_data_sets(FLAGS.train_dir, FLAGS.fakedata)
# fake_data标记是用于单元测试的,读者可以不必理会。 
# 例如:
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)

3.输入与占位符(Inputs and Placeholders)

# placeholder_inputs()函数将生成两个tf.placeholder操作,定义传入图表中的shape参数,
# shape参数中包括batch_size值,后续还会将实际的训练用例传入图表。
images_placeholder = tf.placeholder(tf.float32, shape = (batch_size, IMAGE_PIXELS))
labels_placeholder = tf.placeholder(tf.int32, shape = (batch_size))

# 例如:
xs = tf.placeholder(tf.float32,[None,784])  #28*28
ys = tf.placeholder(tf.float32,[None,10])  #10个输出

4.构件图表

在为数据创建占位符之后,就可以运行mnist.py文件,经过三阶段的模式函数操作:inference(), loss(),和training()。图表就构建完成了。
1.inference() —— 尽可能地构建好图表,满足促使神经网络向前反馈并做出预测的要求。
2.loss() —— 往inference图表中添加生成损失(loss)所需要的操作(ops)。
3.training() —— 往损失图表中添加计算并应用梯度(gradients)所需的操作。

(4.1 4.2 4.3 直接查看下面的链接)
http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_tf.html

4.1 推理(Inference)

inference()函数会尽可能地构建图表,做到返回包含了预测结果(output prediction)的Tensor。
它接受图像占位符为输入,在此基础上借助ReLu(Rectified Linear Units)激活函数,构建一对完全连接层(layers),以及一个有着十个节点(node)、指明了输出logits模型的线性层。

4.2 损失(Loss)

loss()函数通过添加所需的损失操作,进一步构建图表。

4.3 训练(training)

training()函数添加了通过梯度下降(gradient descent)将损失最小化所需的操作。

5.图表

6.会话

完成全部的构建准备、生成全部所需的操作之后,我们就可以创建一个tf.Session,用于运行图表。

sess = tf.Session()
# 或者用with代码块生成Session,限制作用域
with tf.Session() as sess:
    init = tf.initialize_all_variables()
    sess.run(init)

sess.run()方法将会运行图表中与作为参数传入的操作相对应的完整子集。在初次调用时,init操作只包含了变量初始化程序tf.group。图表的其他部分不会在这里,而是在下面的训练循环运行。

7.训练循环

# 训练的每一步都是通过用户代码控制,而能实现有效训练的最简单循环就是:
for step in xrange(max_steps):
    sess.run(train_op)

# 例如:
for i in range(3000):
    batch_xs,batch_ys=mnist.train.next_batch(100)
    sess.run(train,feed_dict={xs:batch_xs,ys:batch_ys})
    if i%100==0:
        print(compute_accuracy(mnist.test.images,mnist.test.labels))

8.评估模型

每隔xx个训练步骤,尝试使用训练数据集与测试数据集,对模型进行评估。


链接:
http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_tf.html

猜你喜欢

转载自blog.csdn.net/Void_worker/article/details/81484776