gpt4 book ai didi

python - Theano 教程中的说明

转载 作者:太空狗 更新时间:2023-10-29 21:22:15 42 4
gpt4 key购买 nike

我正在阅读 this tutorialhome page of Theano documentation 上提供

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

enter image description here

我对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)))

我们为什么需要它?

我想我在这里弄错了。你们能帮帮我吗?

最佳答案

param_update 使用 theano.shared(.) 的初始化只告诉 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 进行更新。

关于python - Theano 教程中的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25366863/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com