tensorflow官网有很全面的教程,对于新手来说,还是太高深,这里边学习边总结适合自己的学习路线。
TensorFlow开发的基本步骤如下:
- 定义TensorFlow输入节点
- 定义’学习参数’的变量
- 定义’运算’
- 优化函数,优化目标
- 初始化所有变量
- 迭代更新参数到最优解
- 测试模型
- 使用模型
定义输入节点
TensorFlow有如下几种定义输入节点的方法:
- 通过占位符定义:一般使用这种方式
- 通过字典类型定义:一般用于输入比较多的情况
- 直接定义:一般很少使用
占位符定义
|
|
通过函数placeholder定义float类型占位符
字典定义
与占位符定义类似,只不多是组成了字典
直接定义
就是将定义好的python变量直接放到OP节点中参与输入运算,将模拟数据的变量直接放到模型中进行训练
定义’学习参数’变量
学习参数的定义与输入节点的电仪很想,分为直接定义和字典定义两部分。这两种都是常见的使用方式,只不过在深层神经网络里由于参数过多,普遍会使用第二种情况
直接定义参数
|
|
字典定义
|
|
定义’运算’
定义’运算’的过程是建立模型的核心过程,直接决定了模型的拟合效果。
- 定义正向传播模型
如神经网络、卷积神经网、循环神经网络、GoogLeNet、Resnet等都是由神经元以不同的组合方式组成的网络结构 - 定义损失函数
损失函数主要是计算’输出值’与’目标值’之间的误差,是配合反向传播使用的。为了在反向传播中可以找到最小值要求改函数必须是可导的。
优化函数,优化目标
有了正向结构和损失函数后,就是通过优化函数来优化学习参数,这个过程也是在反向传播中完成的。
反向传播过程就是沿着正向传播的结构像相反方向将误差传递过去。这里面涉及的技术比较多,如L1、L2正则化、冲量调节、学习率自适应、adm随机梯度下降算法等。
初始化所有变量
初始化所有变量的过程,虽然只有一句代码,但也是一个关键环节。
在session创建好了之后,第一件事就是需要初始化
tf.global_variables_initializer函数初始化所有变量的步骤,必须在所有变量和OP定义完成之后。
这样才能保证定义的内容有效,否则,初始化之后定义的变量和OP都无法使用session中的run来进行算值。
迭代更新参数到最优解
模型中的节点是通过session中的run来运算的。在训练环节也是如此,只不过run里面放的是优化操作的OP,同时会在外层加上循环次数
真正使用过程中会引入一个叫做MINIBATCH概念进行迭代训练,即每次取一定量的数据同时放到网络里进行训练。
测试模型
就是得到模型的准确率,从而来描述模型的好坏
使用模型
一般会把生成的模型保存起来,再通过载入已有的模型来进行实际的使用。
参考:<深入学习之TensorFlow: 入门、原理与进阶实战>