1.引入tensorflow包
import tensorflow as tf 这是默认用法,所有引入tensorflow都要这么写,记住即可。
2.建立占位符
建立占位符便于后期的数据传入以及tensorflow对整个计算流程的优化。
x = tf.placeholder( dtype, shape=None, name=None)
dtpye为数据类型,类似于pandas的数据类型,为tensorflow专用的数据类型,前边要加一个tf前缀。 shape为数据维度,默认为None即一维。name为名称。
3.定义图变量
包括tf.Variable和tf.get_variable两种方法。
tf.Variable(initial_value, trainable=True, collections=None, validate_shape=True, name=None)
各参数含义为:initial_value 所有可以转换为Tensor的类型 变量的初始值
trainable bool 如果为True,会把它加入到GraphKeys.TRAINABLE_VARIABLES,才能对它使用Optimizer
collections list 指定该图变量的类型、默认为[GraphKeys.GLOBAL_VARIABLES]
validate_shape bool 如果为False,则不进行类型和维度检查
name string 变量的名称,如果没有指定则系统会自动分配一个唯一的值
tf.get_variable跟tf.Variable都可以用来定义图变量,但是前者的必需参数(即第一个参数)并不是图变量的初始值,而是图变量的名称。
4.建立合适的模型
tensorflow与神经网络相关的模块包括tf.nn,tf.layers, tf.contrib,其中tf.nn最常用,常见的模块可以参见
https://blog.csdn.net/jiaoyangwm/article/details/79247371。
5.定义损失函数
在定义损失函数之前要明确tensorflow常用的计算公式。tf.reduce是模块是常用的计算模块,包括tf.reduce.sum()、tf.reduce.max()、tf.reduce.min()等,其中所有函数都可以使用axis参数指定计算的方向,即按行计算还是按列计算。
通常采用交叉熵损失定义损失函数,采用tensorflow的语言去写交叉熵。
6.参数优化
通常采用梯度下降法对模型参数进行优化。最常使用的优化器包括:
tf.train.GradientDescentOptimizer()、tf.train.MomentumOptimizer()、f.train.AdamOptimizer()
7.建立会话
设置好参数优化方法后就可以跑程序了,此时需要首先设置一个会话,以用于tensorflow跑程序。
tf.InteractiveSession()和tf.Session(),其中后者需要再运行程序之前设置好全部的操作。
8.初始化变量
tf.global variables initializer(). run()
9.采用梯度下降优化变量
采用迭代法进行变量优化,通常采取的分批训练的方法,即每次从样本中选取100个样本进行训练,反复1000次。
for _in range(1000):
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run()
sess.run()语法为:
sess.run(fetches, feed_dict=None, options=None, run_metadata=None)
feed_dict其实就是替换fetches中已有变量的值
10.检验模型精度
判断预测值和真实值是否相等,相等取1、不相等取0,取平均值即为预测精度。可以用tf.equal和tf.reduce_mean计算最终的结果。