我试图拼凑出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)
以启发式方式设置t0
,t
是过去看到的样本数。