适当的异步随机梯度下降与芹菜

时间:2013-10-30 08:45:55

标签: python celery distributed mathematical-optimization gradient-descent

我必须使用芹菜来并行化随机梯度下降算法,尽管这可能不是用芹菜做的更好的选择,这仍然是我的问题=)

该算法看起来像那样,其中数据是样本矩阵:

#Random init of the minimum:
x_current = np.random.random(n_dim)    

for i in range(max_iter):
    #Randomizes the lines, i.e. the samples of the minibatches at each iteration
    np.random.shuffle(datas)

    #I update my gradient by minibatches of n samples
    for batch in range(datas.shape[0] / n)

        delta = gradient(x_current, datas[(batch*n):(batch*(n+1)),:])
        x_current += delta

gradient是要作为任务分发的函数。假设我有10名工人,起初,我使用10个第一个小批量创建10个任务梯度。

当有人完成时,我希望使用下一个小批量创建一个新任务(如果迭代更改并返回到第一个小批量并不重要)和当前版本的x_current(无关紧要)如果它不是最后一个版本。)

另外,我必须得到结果并更新x_current并返回delta。所有增量都必须在x_current上“顺序”应用(但顺序无关紧要),并且与任务创建异步。

我的问题是,用芹菜做最优雅的方式是什么? 谢谢:))

0 个答案:

没有答案