当我使用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
参数)。
但是,我不清楚使用局部拟合时会发生这种情况。略读代码也无济于事。任何人都可以澄清我如何达到退火学习率 在我的环境中?
答案 0 :(得分:2)
fit
在内部使用partial_fit
,因此learning rate configuration parameters适用于fit
和partial_fit
。默认退火计划为eta0 / sqrt(t)
,eta0 = 0.01
。
修改:这是不正确的,如评论中所示,SGDClassifier
的实际默认时间表是:
1.0 / (t + t0)
其中t0
启发式设置,t
是过去看到的样本数。