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 的梯度。 paramparam_update 根据动量规则更新到新的更新方向。然后,param 将按照保存在param_update 中的更新方向进行更新,并带有适当的learning_rate

【讨论】:

以上是关于Theano 教程中的说明的主要内容,如果未能解决你的问题,请参考以下文章

TensorFlow 可以与 Theano 一起安装吗?

Theano-gpu坑:ERROR (theano.gpuarray): Could not initialize pygpu, support disabled

tensorflow实现基于LSTM的文本分类方法

tensorflow实现基于LSTM的文本分类方法

Ubuntu14.04安装Theano详细教程

任何人都可以帮助详细说明 Python 教程中的这一段吗? [复制]