我想在数据集上训练网络,然后继续培训更多数据。这可以通过scikit-learn中的“warm_start”选项实现。据我所知,它应该在每次初始化时将权重设置为零,并且在多次调用适合的情况下,如果warm_start参数设置为True,则使用前一个拟合调用的权重作为下一个拟合的起始点。
然而,在实践中比较两个选项(warm_start = True / False)会产生相同的权重结果,从而产生预测结果。 唯一的区别似乎是,如果在warm_start = True的情况下分配给变量,权重会被追溯更新。
以下代码使用简单的scikit-learn数据集和ElasticNet作为模型来说明这一点。 weights_1在第二次拟合后更改值,以使weights_1 == weights_2为warm_start = True(如上所述),而weights_1保持第一次拟合的值为warm_start = False(在第二次运行中将warm_start设置为False以进行比较)
我是否错误地使用了warm_start参数或其他:如果结果不依赖于是否使用,它的应用是什么?
如果warm_start根本不适合我的目的,是否可以将之前拟合的权重传递给模型?我找不到任何参数来设置我感兴趣的模型的初始系数(ElasticNet和MLPRegressor)。
X, y = load_boston(return_X_y=True)
X_1, X_2, y_1, y_2 = X[:len(X)/2], X[len(X)/2:], y[:len(y)/2], y[len(y)/2:]
model_1 = linear_model.ElasticNet(alpha = 0.01, warm_start=True)
in_weights = model_1.coef_
print 'Initialization : \nin_weights', in_weights
model_1.fit(X_1, y_1)
weights_1 = model_1.coef_
print '\nFirst fit:\n in_weights', in_weights, '\n \nweights_1 \n', weights_1
model_1.fit(X_2, y_2)
weights_2 = model_1.coef_
print '\n Second Fit: \nin_weights \n', in_weights, '\n \nweights_1 \n', weights_1, '\n \nweights_2 \n', weights_2