gpt4 book ai didi

Python sklearn 在训练期间显示损失值

转载 作者:太空狗 更新时间:2023-10-30 00:05:17 25 4
gpt4 key购买 nike

我想在训练期间检查损失值,以便观察每次迭代的损失。到目前为止,我还没有找到一种简单的方法让 scikit 学习为我提供损失值的历史记录,也没有找到 scikit 中已有的功能来为我绘制损失。

如果没有办法绘制它,如果我可以简单地在 classifier.fit 结束时获取最终损失值,那就太好了。

注意:我知道有些解决方案是封闭形式的。我正在使用几个没有分析解决方案的分类器,例如逻辑回归和支持向量机。

有人有什么建议吗?

最佳答案

所以我找不到关于直接获取每次迭代损失值的很好的文档,但我希望这对将来的人有所帮助:

old_stdout = sys.stdout
sys.stdout = mystdout = StringIO()
clf = SGDClassifier(**kwargs, verbose=1)
clf.fit(X_tr, y_tr)
sys.stdout = old_stdout
loss_history = mystdout.getvalue()
loss_list = []
for line in loss_history.split('\n'):
if(len(line.split("loss: ")) == 1):
continue
loss_list.append(float(line.split("loss: ")[-1]))
plt.figure()
plt.plot(np.arange(len(loss_list)), loss_list)
plt.savefig("warmstart_plots/pure_SGD:"+str(kwargs)+".png")
plt.xlabel("Time in epochs")
plt.ylabel("Loss")
plt.close()

此代码将采用普通的 SGDClassifier(几乎任何线性分类器),并拦截 verbose=1 标志,然后拆分以获得详细打印的损失。显然这比较慢,但会给我们带来损失并打印出来。

关于Python sklearn 在训练期间显示损失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44443479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com