Abh*_*hek 7 python numpy gradient-descent theano deep-learning
我正在阅读Theano文档主页上提供的本教程
我不确定梯度下降部分给出的代码.

我对for循环有疑问.
如果将' param_update '变量初始化为零.
param_update = theano.shared(param.get_value()*0., broadcastable=param.broadcastable)
Run Code Online (Sandbox Code Playgroud)
然后在剩下的两行中更新其值.
updates.append((param, param - learning_rate*param_update))
updates.append((param_update, momentum*param_update + (1. - momentum)*T.grad(cost, param)))
Run Code Online (Sandbox Code Playgroud)
我们为什么需要它?
我想我在这里弄错了.你们能帮助我吗!
小智 15
初始化param_update使用theano.shared(.)只告诉Theano保留一个将由Theano函数使用的变量.此初始化代码仅调用一次,以后不会用于将值重置param_update为0.
实际值param_update将根据最后一行更新
updates.append((param_update, momentum*param_update + (1. - momentum)*T.grad(cost, param)))
Run Code Online (Sandbox Code Playgroud)
当train通过将此更新字典作为参数构建的函数时(本教程中的[23]):
train = theano.function([mlp_input, mlp_target], cost,
updates=gradient_updates_momentum(cost, mlp.params, learning_rate, momentum))
Run Code Online (Sandbox Code Playgroud)
每次train调用时,Theano将根据动量规则计算costwrt 的梯度param并更新param_update为新的更新方向.然后,param将按照保存在更新方向进行更新param_update与适当的learning_rate.
| 归档时间: |
|
| 查看次数: |
3472 次 |
| 最近记录: |