Sklearn SGDClassifier minibatch-learning and learning rate s



我试图拼凑出SGDClassifier在使用partial_fit方法训练它时如何选择它的学习率。

即,我的主要学习循环如下所示:

from sklearn.linear_model import SGDClassifier
m = SGDClassifier(n_iter=1, alpha=0.01)
n_iter = 40
t0 = time.time()
for i in range(n_iter):
    for fname in files:
        X, y = load_next_batch(fname)
        m.partial_fit(X, y, classes = [0, 1])
    print "%d:  valid-error: %f  (time: %fs)" % (i, 1.0-m.score(Xvalid, yvalid), time.time() - t0)

现在,由于我在整个训练集中进行了 40 次传递,我想随着时间的推移来退火我的学习率。如果我使用 fit 而不是部分拟合,我的理解是这会自动发生(除非我修改 learning_rate 参数)。

但是,我不清楚使用部分拟合时如何发生这种情况。略读代码也无济于事。谁能澄清我如何实现退火学习率在我的环境中?

fit在内部使用partial_fit,因此学习率配置参数适用于fit partial_fit。默认退火时间表与 eta0 = 0.01 一起eta0 / sqrt(t)

编辑:这是不正确的,如注释所示,SGDClassifier的实际默认时间表是:

1.0 / (t + t0)以启发式方式设置t0t是过去看到的样本数。

相关内容

  • 没有找到相关文章