Python 使用scikit.MLPREGESSOR对多个数据集进行培训
我目前正在一个更大的数据集上训练我的第一个神经网络。我已经将我的训练数据分割成几个.npy二进制文件,每个文件包含20k个训练样本。我正在加载npy文件中的数据,应用一些简单的预处理操作,然后开始通过在循环中多次应用Python 使用scikit.MLPREGESSOR对多个数据集进行培训,python,machine-learning,scikit-learn,Python,Machine Learning,Scikit Learn,我目前正在一个更大的数据集上训练我的第一个神经网络。我已经将我的训练数据分割成几个.npy二进制文件,每个文件包含20k个训练样本。我正在加载npy文件中的数据,应用一些简单的预处理操作,然后开始通过在循环中多次应用partial\u fit方法来训练我的网络: for i in range(50): nnmodel.partial_fit(X_tr,Y_tr) 我已经读到,常规的.fit()方法不能进行多批次的训练,但相反,部分fit应该可以做到。。我的第一次训练跑总是很顺利。损失正
partial\u fit
方法来训练我的网络:
for i in range(50):
nnmodel.partial_fit(X_tr,Y_tr)
我已经读到,常规的.fit()
方法不能进行多批次的训练,但相反,部分fit应该可以做到。。我的第一次训练跑总是很顺利。损失正在减少,我得到了很好的拟合结果,所以我使用joblib.dump
方法保存了我的模型。
对于下一个调用,我将再次使用完全相同的脚本,该脚本从.npy文件加载我的数据(无论我是输入同一批还是另一批),对其进行预处理,这次使用joblib.load
,加载我预先训练过的模型,然后再次开始执行partial\u fit
循环。
在第二次运行中,我总是在所有迭代中得到一个恒定的损失,无论我使用什么数据集,错误不再减少:
Iteration 51, loss = 3.93268978
Iteration 52, loss = 3.93268978
Iteration 53, loss = 3.93268978
Iteration 54, loss = 3.93268978 ...
我做错了什么?
已经谢谢你了 有几种可能性
joblib.dump
和joblib.load
可能以意外方式保存或加载导入matplotlib.pyplot作为plt
从sklearn.neural_网络导入MLPREGESSOR
从sklearn.dataset导入make_回归
从sklearn.model\u选择导入列车\u测试\u拆分
十、 y=进行回归(n_样本=10000,随机状态=42)
X_序列,X_测试,y_序列,y_测试=序列测试分割(X,y)
regr=MLPREGESSOR()
损失=[]
测试性能=[]
对于范围内的uu(100):
#对批次进行100次传递
对于范围(5007501500)内的批次:
#对500个示例的批次执行部分拟合
#模拟批处理,也可以从“.npy”加载这些批处理`
X_列\u批次=X_列[批次-500:批次]
y_列批次=y_列【批次-500:批次】
再生部分配合(X系列批次、y系列批次)
损失追加(再损失)
测试\性能附加(再评分(X \ U测试,y \ U测试))
#绘图结果:
图(ax1,ax2)=plt.子批次(1,2)
ax1.title.set_文本(“培训损失”)
ax2.title.set_文本(“测试集上的分数”)
ax1.绘图(范围(长度(损失)),损失)
ax2.绘图(范围(透镜(测试性能)),测试性能)
plt.show()
输出:
非常感谢,这确实是第三次。你提到的那一点。。。不知怎的,joblib似乎在那里遇到了问题。。