是否可以使用`sklearn`重新训练保存的神经网络

时间:2019-07-26 19:38:33

标签: python scikit-learn neural-network pre-trained-model

我正在开发一个项目,该项目旨在对推文进行分类,并且正在使用sklearn的{​​{3}}。是否可以使用Iterator[Dataset]进行重新培训,如果可以,请向正确的方向指导我。另外,重新训练模型是否值得,或者在构建网络时我应该只是调整值。

2 个答案:

答案 0 :(得分:0)

您可以尝试以下方法。

from sklearn.externals import joblib
##Suppose your trained model is named MyTrainedModel
##This is how you save it in a file called MyTrainedModelFile.txt.
joblib.dump(MyTrainedModel, 'MyTrainedModelFile.txt')
##Later you can recall the model and use it
Loaded_model = joblib.load('MyTrainedModelFile.txt')

本教程为here

请告诉我您是否要这样做。

答案 1 :(得分:0)

使用partial_fit提供的MLPClasifier方法可以很好地做到这一点。我已经为此编写了示例代码。如果您批量获取数据,则很好地重新训练保存的模型,而训练对您来说是一项昂贵的操作,因此每次获得新一批数据时都无法承受对整个数据集的训练。

import pickle
from sklearn.neural_network import MLPClassifier
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=1000, n_classes=4, n_features=11,
                       n_informative=4, weights=[0.25,0.25,0.25,0.25],
                       random_state=0)

x_batch1 = X[0:500]
y_batch1 = y[0:500]

x_batch2 = X[500:999]
y_batch2 = y[500:999]

clf = MLPClassifier()
clf.partial_fit(x_batch1, y_batch1, classes = np.unique(y))  # you need to pass the classes when you fit for the first time


pickle.dump(clf, open("MLP_classifier", 'wb'))
restored_clf = pickle.load(open("MLP_classifier", 'rb'))

restored_clf.partial_fit(x_batch2, y_batch2)

希望这会有所帮助!