function - theano 函数的更新列表的更新顺序

标签 function updates theano

Theano 函数的参数更新采用一个pair 列表,其中每个pair 指定一个共享符号变量及其在计算函数输出后的新表达式。
我想知道更新程序是否有任何命令。
如果两个符号变量的新表达式相互依赖,并且更新过程将使用更新的符号变量来更新依赖它的其他符号变量,那么顺序将很重要。
例如,此列表可能如下所示,

[(a, b + a), (b, b+ 1)]

我已经写了一些函数来测试这个。结果似乎表明它总是使用表达式中的旧值(对中的第二项)来更新第一项中的符号变量,即,

 a_new = b_old + a_old
 b_new = b_old + 1

这是一个定义的行为吗?

但是我发现了动量的实现 here ,
以下是生成更新列表和 param_update 符号变量的代码

param_update = theano.shared(param.get_value()*0., broadcastable=param.broadcastable)
updates += [(param, param - learning_rate*param_update),
 (param_update, momentum * param_update + (1. - momentum)*T.grad(cost, param))

然后在第一次迭代中,param 不会更新,因为 param_updates 都为零。在我的理解中,应该先更新 param_update,然后再用它来更新 param。

最佳答案

对于更新,它总是使用先前的值(Theano 函数调用之前的值)。所以你找到了正确的东西。

对于势头,我认为有延迟是正常的。

关于function - theano 函数的更新列表的更新顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28205589/

相关文章:

c++ - 为函数提供默认参数,但该参数是一个结构体

sql - 如何创建pl sql函数以检查数据库中是否存在数据

C++ 引用和左值

php - Firebug 控制台,给出错误 "function not defined"

java - 如何在 Ubuntu 中更新 java

python - 使用 ImageDataGenerator 时 Keras 卡住

android - 将 Android Studio 从版本 3.1.3 更新到版本 3.1.4 时出现的问题

dependencies - Conda 无法更新 Spyder 依赖项

numpy - 我想在 Theano 中将一个函数映射到向量的每个元素,我可以不使用扫描来实现吗?

python - 在 Ipython Notebook 中将 keras 后端更改为 Theano