tensorflow使用
(一)TensorFlow开发的基本步骤
(1)定义TensorFlow输入节点。
(1.1)定义输入节点的方法
● 通过占位符定义:一般使用这种方式。
X = tf.placeholder(“float”)
Y = tf.placeholder(“float”)
● 通过字典类型定义:一般用于输入比较多的情况。
inputdict={
“X” :tf.placeholder(“float”)
“Y” : tf.placeholder(“float”)
}
● 直接定义:一般很少使用。
tf.Variable(tf.zeros([1]),“bais”)
(2)定义“学习参数”的变量
学习参数的定义与输入的定义很像,分为直接定义和字典定义两部分。这两种都是常见的使用方式,只不过在深层神经网络里由于参数过多,普遍都会使用第二种情况。
直接定义
# 模型参数
W = tf.Variable(tf.random_normal([1]), name="weight")
b = tf.Variable(tf.zeros([1]), name="bias")
(3)定义“运算”
定义“运算”的过程是建立模型的核心过程,直接决定了模型的拟合效果.运算中有正向传播模型:多层神经网络、卷积神经网、循环神经网络及更深层的GoogLeNet、Resnet等
(4)优化函数,优化目标
在有了正向结构和损失函数后,就是通过优化函数来优化学习参数。
反向传播过程,就是沿着正向传播的结构向相反方向将误差传递过去。这里面涉及的技术比较多,如L1、L2正则化、冲量调节、学习率自适应、adm随机梯度下降算法等,每一个技巧都代表一个时代。
(5)初始化所有变量
init = tf.global_variables_initializer()
# 启动Session
with tf.Session() as sess:
sess.run(init)
注意: 使用tf.global_variables_initializer函数初始化所有变量的步骤,必须在所有变量和OP定义完成之后。这样才能保证定义的内容有效,否则,初始化之后定义的变量和OP都无法使用session中的run来进行算值。
(6) 迭代更新参数到最优解
在迭代训练环节,都是需要通过建立一个session来完成的,常用的是使用with语法,可以在session结束后自行关闭.
with tf.Session() as sess:
(7)测试模型
测试模型部分已经不是神经网络的核心环节了,同归对评估节点的输出,得到模型的准确率(或错误率)从而来描述模型的好坏.
(8)使用模型
一般会把生成的模型保存起来,再通过载入已有的模型来进行实际的使用。