模型是如何训练出来的

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

二 模型内部数据流向
1 正向
正向:数据从输入开始,依次进行各节点定义的运算,一直运算到输出,是模型最基本的数据流向。它直观地表现了网络模型的结构,在模型的训练、测试、使用场景中都会用到。这部分是必须要掌握的。
2 反向
反向:只有在训练场景下会用到。这里使用了一个叫做反向链式求导的方法,即先从正向的最后一个节点开始,计算此时结果值与真实值的误差,这样会形成一个用学习参数表示误差的方程,然后对方程中的每个参数求导,得到其梯度修正值,同时反推出上一层的误差,这样就将该层节点的误差按照正向的相反方向传到上一层,并接着计算上一层的修正值,如此反复下去一步一步地进行转播,直到传到正向的第一个节点。
这部分原理TensorFlow已经实现好了,简单理解即可,应该把重点放在使用什么方法来计算误差,使用哪些梯度下降的优化方法,如何调节梯度下降中的参数(如学习率)问题上。
  • 5
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值