模型是如何训练出来的

一 模型里的内容和意义
一个标准的模型结构分为输入、中间节点、输出三大部分,而如何让这三部分连通起来学习规则并可进行计算,则是框架TensorFlow所做的事情。
TensorFlow将中间节点及节点间的运算关系(OPS)定义在自己内部的一个“图”上,全通过一个“会话(session)”进行图中OPS的具体运算。
可以这样理解:
  • “图”是静态的,无论做任何加、减、乘、除,它们只是将关系搭建在一起,不会有任何计算。
  • “会话”是动态的,只有启动会话后才会将数据流向图中,并按照图中的关系运算。并将最终的结果从图中流出。
TensorFlow用这种方式分离了计算的定义和执行,“图”类似施工图(blueprint),而会话更像施工地点。
构建一个完整的图一般需要定义3种变量。
  • 输入节点:即网络的入口。
  • 用于训练的模型参数(也叫学习参数):是连接各个节点的路径。
  • 模型中的节点(OP):最复杂的就是OP。OP可以用来代表模型中的中间节点,也可以代表最终的输出节点,是网络中的真正结构。
下图为这3种变量放在图中所组成的网络静态模型。在实际训练中,通过动态会话将图中各个节点按照静态规则运算起来,每一次迭代都会对图中的学习参数进行更新调整,通过一定次数的迭代运算之后最终形成的图便是所要的“模型”。而在会话中,任何一个节点都会通过会话的run函数进行计算,得到该节点的真实数值。

二 模型内部数据流向
1 正向
正向:数据从输入开始,依次进行各节点定义的运算,一直运算到输出,是模型最基本的数据流向。它直观地表现了网络模型的结构,在模型的训练、测试、使用场景中都会用到。这部分是必须要掌握的。
2 反向
反向:只有在训练场景下会用到。这里使用了一个叫做反向链式求导的方法,即先从正向的最后一个节点开始,计算此时结果值与真实值的误差,这样会形成一个用学习参数表示误差的方程,然后对方程中的每个参数求导,得到其梯度修正值,同时反推出上一层的误差,这样就将该层节点的误差按照正向的相反方向传到上一层,并接着计算上一层的修正值,如此反复下去一步一步地进行转播,直到传到正向的第一个节点。
这部分原理TensorFlow已经实现好了,简单理解即可,应该把重点放在使用什么方法来计算误差,使用哪些梯度下降的优化方法,如何调节梯度下降中的参数(如学习率)问题上。
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/79947437
文章标签: 模型
个人分类: 人工智能
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭