3

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

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

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参数)。

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

4

1 回答 1

3

fit正在partial_fit内部使用,因此学习率配置参数适用fitpartial_fit. 默认的退火时间表eta0 / sqrt(t)eta0 = 0.01.

编辑:这是不正确的,如评论中所见,实际的默认时间表SGDClassifier是:

1.0 / (t + t0)其中t0是启发式设置的,t是过去看到的样本数。

于 2013-09-20T13:03:39.717 回答