If warm_start = False , each subsequent call to .fit() (after the initial call to .fit() or partial_fit() ) resets the trained model parameters for initialization. If warm_start = True , each subsequent call to .fit() (after the initial call to .fit() or partial_fit() ) will save the values โโof the trained model parameters from the previous run and use them initially. Regardless of the value of warm_start each call to partial_fit() will retain the model parameters of the previous run, and they will be used initially.
An example of using MLPRegressor :
import sklearn.neural_network import numpy as np np.random.seed(0) x = np.linspace(-1, 1, num=50).reshape(-1, 1) y = (x * 1.5 + 2).reshape(50,) cold_model = sklearn.neural_network.MLPRegressor(hidden_layer_sizes=(), warm_start=False, max_iter=1) warm_model = sklearn.neural_network.MLPRegressor(hidden_layer_sizes=(), warm_start=True, max_iter=1) cold_model.fit(x,y) print cold_model.coefs_, cold_model.intercepts_ #[array([[0.17009494]])] [array([0.74643783])] cold_model.fit(x,y) print cold_model.coefs_, cold_model.intercepts_ #[array([[-0.60819342]])] [array([-1.21256186])] #after second run of .fit(), values are completely different #because they were re-initialised before doing the second run for the cold model warm_model.fit(x,y) print warm_model.coefs_, warm_model.intercepts_ #[array([[-1.39815616]])] [array([1.651504])] warm_model.fit(x,y) print warm_model.coefs_, warm_model.intercepts_ #[array([[-1.39715616]])] [array([1.652504])] #this time with the warm model, params change relatively little, as params were #not re-initialised during second call to .fit() cold_model.partial_fit(x,y) print cold_model.coefs_, cold_model.intercepts_ #[array([[-0.60719343]])] [array([-1.21156187])] cold_model.partial_fit(x,y) print cold_model.coefs_, cold_model.intercepts_ #[array([[-0.60619347]])] [array([-1.21056189])] #with partial_fit(), params barely change even for cold model, #as no re-initialisation occurs warm_model.partial_fit(x,y) print warm_model.coefs_, warm_model.intercepts_ #[array([[-1.39615617]])] [array([1.65350392])] warm_model.partial_fit(x,y) print warm_model.coefs_, warm_model.intercepts_ #[array([[-1.39515619]])] [array([1.65450372])] #and of course the same goes for the warm model
KamKam
source share