gpt4 book ai didi

python - 如何在 python theano 中编写 adagrad

转载 作者:行者123 更新时间:2023-11-28 19:55:12 24 4
gpt4 key购买 nike

为了简化问题,假设一个维度(或特征)已经更新了 n 次,下次我看到该特征时,我想将学习率设置为 1/n。

我想出了这些代码:

def test_adagrad():
embedding = theano.shared(value=np.random.randn(20,10), borrow=True)
times = theano.shared(value=np.ones((20,1)))
lr = T.dscalar()
index_a = T.lvector()
hist = times[index_a]
cost = T.sum(theano.sparse_grad(embedding[index_a]))
gradients = T.grad(cost, embedding)
updates = [(embedding, embedding+lr*(1.0/hist)*gradients)]
### Here should be some codes to update also times which are omitted ###
train = theano.function(inputs=[index_a, lr],outputs=cost,updates=updates)
for i in range(10):
print train([1,2,3],0.05)

Theano 没有给出任何错误,但训练结果有时给出 Nan。请问有人知道如何纠正这个问题吗?

谢谢你的帮助

PS:我怀疑是稀疏空间中的操作造成了问题。所以我尝试用 theano.sparse.mul 替换 *。这给出了我之前提到的一些结果

最佳答案

也许您可以利用以下 example for implementation of adadelta ,并用它来推导你自己的。如果成功请更新:-)

关于python - 如何在 python theano 中编写 adagrad,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29365370/

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