更新ano函数中的参数

2024-10-01 15:30:54 发布

您现在位置:Python中文网/ 问答频道 /正文

以这种方式调用“updates”参数做什么?在

f_grad_shared = theano.function([x, mask, y], cost, updates=zgup + rg2up,
                                    name='adadelta_f_grad_shared')

我在no函数中看到的关于“updates”参数的所有文档都讨论了表单对(共享变量,用于更新共享变量的表达式)。但是,这里只有一个表达式,如何知道哪个共享变量被更新了?在

我想共享变量是隐式的,但是zgup和{}都依赖于不同的共享变量:

^{pr2}$

此代码来自http://deeplearning.net/tutorial/lstm.html中的lstm.py

谢谢


Tags: name参数表达式方式functionmasktheanoshared
1条回答
网友
1楼 · 发布于 2024-10-01 15:30:54

认为updates应该是键-值对的列表(或字典),其中键是共享变量,值是描述如何更新相应共享变量的符号表达式。在

这两条线形成一对:

zgup = [(zg, g) for zg, g in zip(zipped_grads, grads)]
rg2up = [(rg2, 0.95 * rg2 + 0.05 * (g ** 2))
         for rg2, g in zip(running_grads2, grads)]

前面几行中创建的zipped_grads和{}都只是一个共享变量的列表。在这里,这些共享变量使用Pythonzip函数链接到更新,该函数发出一个对列表。实际上,第一行可以用

^{pr2}$

这段代码相当复杂,因为它实现了AdaDelta更新机制。如果您想了解updates在一个更简单的设置中是如何工作的,请看一下Theano MLP tutorial中的基本随机梯度下降更新。在

updates = [
        (param, param - learning_rate * gparam)
        for param, gparam in zip(classifier.params, gparams)
    ]

相关问题 更多 >

    热门问题