Theano 教程中的说明
Posted
技术标签:
【中文标题】Theano 教程中的说明【英文标题】:Clarification in the Theano tutorial 【发布时间】:2014-10-11 13:50:09 【问题描述】:我正在阅读home page of Theano documentation上提供的this tutorial
我不确定梯度下降部分给出的代码。
我对 for 循环有疑问。
如果您将 'param_update' 变量初始化为零。
param_update = theano.shared(param.get_value()*0., broadcastable=param.broadcastable)
然后在剩下的两行中更新它的值。
updates.append((param, param - learning_rate*param_update))
updates.append((param_update, momentum*param_update + (1. - momentum)*T.grad(cost, param)))
我们为什么需要它?
我想我在这里弄错了。 你们能帮帮我吗!
【问题讨论】:
'and you dun 在剩下的两行中更新它的值是什么?什么意思? 能否请您添加代码而不是屏幕截图? 这里的梯度下降部分:nbviewer.ipython.org/github/craffel/theano-tutorial/blob/master/… 我的意思是你在我提供的第一个代码行中初始化 param_update,而你不需要在上面给出的剩余两个代码行中更新。下次我会尝试添加代码! 【参考方案1】:使用theano.shared(.)
初始化param_update
只告诉Theano 保留一个将由Theano 函数使用的变量。此初始化代码只调用一次,以后将不会使用将param_update
的值重置为0。
param_update
的实际值会根据最后一行更新
updates.append((param_update, momentum*param_update + (1. - momentum)*T.grad(cost, param)))
当 train
函数通过将此更新字典作为参数构造时(本教程中的 [23]):
train = theano.function([mlp_input, mlp_target], cost,
updates=gradient_updates_momentum(cost, mlp.params, learning_rate, momentum))
每次调用train
,Theano 都会计算cost
w.r.t 的梯度。 param
和 param_update
根据动量规则更新到新的更新方向。然后,param
将按照保存在param_update
中的更新方向进行更新,并带有适当的learning_rate
。
【讨论】:
以上是关于Theano 教程中的说明的主要内容,如果未能解决你的问题,请参考以下文章
Theano-gpu坑:ERROR (theano.gpuarray): Could not initialize pygpu, support disabled