Python Theano教程中的澄清

Python Theano教程中的澄清,python,numpy,theano,gradient-descent,deep-learning,Python,Numpy,Theano,Gradient Descent,Deep Learning,我正在阅读网上提供的资料 我不确定梯度下降部分给出的代码 我对for循环有疑问 如果将“参数更新”变量初始化为零 param_update = theano.shared(param.get_value()*0., broadcastable=param.broadcastable) 然后在剩下的两行中更新它的值 updates.append((param, param - learning_rate*param_update)) updates.append((param_update,

我正在阅读网上提供的资料

我不确定梯度下降部分给出的代码

我对for循环有疑问

如果将“参数更新”变量初始化为零

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)))
我们为什么需要它

我想我这里出了点问题。
你们能帮帮我吗

使用
theano.shared(.)
初始化
param\u update
时,仅告知theano保留一个变量,该变量将由theano函数使用。此初始化代码只调用一次,以后不会用于将
param_update
的值重置为0

param_update
的实际值将根据最后一行进行更新

updates.append((param_update, momentum*param_update + (1. - momentum)*T.grad(cost, param)))
训练通过将此更新字典作为参数构造的函数时([23]在本教程中):


每次调用
train
,Theano将计算
成本的梯度
w.r.t.
param
,并根据动量规则将
param\u update
更新到新的更新方向。那么,
param
将按照
param_update
中保存的更新方向,以适当的
learning_rate

更新,然后“您将在剩下的两行中更新它的值”。意思是说?您可以添加代码而不是屏幕截图吗?这里的渐变下降部分:我的意思是您将初始化在我提供的第一个代码行中更新param_,在上面给出的其余两个代码行中不更新。我将尝试从下次添加代码!
train = theano.function([mlp_input, mlp_target], cost,
                        updates=gradient_updates_momentum(cost, mlp.params, learning_rate, momentum))