TensorFlow基本步骤

1.载入TensorFlow库

import tensorflow as tf  //as tf 意思是重命名为tf

2.创建新的InteractiveSession,使新创建的session注册为默认的session,之后的运算默认跑在这个session里面,不同session之间的数据和运算都是相互独立的

sess = tf.InteractiveSession()

3.创建一个Placeholder用户输入数据

x  = tf.placeholder(tf.float32,[None,784])

第一个参数是数据类型,第二个参数代表tensor的数据尺寸。其中的None代表输入的条数不限,784代表每条输入是一个784维的向量。
4.给模型中的weights和biases创建Variable对象

w = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))

参数是什么意思????目前不懂
5.实现算法
由公式y=softmax(wx+b)得到代码

y = tf.nn.softmax(tf.matmul(x,w)+b))

其中soft是一个函数,包含在tf.nn下,tf.nn含有大量的神经网络的组件。tf.matmul是TensorFlow中的矩阵乘法函数
6.描述模型对问题的分类精度——常用cross_entropy

y_ = tf.placeholder(tf.float32,[None,10])  //用于输入真实的label
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_*tf.log(y),reduction_indices=[1]))

7.定义优化算法进行训练

train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

TensorFlow会自动在后台进行运算。GradientDescentOptimizer是梯度下降算法,0.5是学习的速率,最后一个参数是优化目标。结果train_step为训练操作
8.运行全局参数初始化器,并直接运行他的run方法

tf.global_variables_initializer().run()

9.迭代地执行训练操作train_step。

for i in range(1000):
  batch_x, batch_y = mnist.train.next_batch(100)
  train_step.run({x:batch_xs, y_:batch_ys})

其中参数100表示每次随机从训练集中抽取100条样本构成一个mini-batch,并feed给placeholder
10.完成训练后对模型的准确率进行验证

correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(y_,1))

tf.argmax是一个从tensor中寻找最大值的序号。它能给出某个tensor对象在某一维上的其数据最大值所在的索引值。由于标签向量是由0,1组成,因此最大值1所在的索引位置就是类别标签。tf.argmax(y,1)是求各个预测的数字中概率最大的哪一个。得到的结果是一个布尔值数组
11.将上面的到的结果转换为正确率

accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print(accuracy.eval({x:mnist.test.images, y_:mnist.test.labels}))

tf.cast(correct_prediction, tf.float32)将布尔数组转化为float32格式

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 考试后 妻:女儿放学到家了吗? 父:咦,今天考试,这个时间应该早到家了。往天一到家就给我打电话,今天怎么没动静呢,...
    勇者先行阅读 1,013评论 0 0
  • 偶在简友圈看到一款山药馒头,正佩服简友想法的标新立异时,朋友圈又秀出一款红枣馒头。看得我灵机一动,红枣加山药做成馒...
    欢喜厨房阅读 9,951评论 0 8

友情链接更多精彩内容