pytorch 矩阵分解,pytorch混淆矩阵画图
混淆矩阵是绘制ROC曲线的基础,也是衡量分类模型准确性的最基本、最直观、最简单的方法。以下文章主要介绍pytorch分类模型绘制混淆矩阵及可视化的相关信息,有需要的可以参考。
目录
步骤1。获得混淆矩阵步骤2。可视化混淆矩阵,得到其他分类指标的汇总。
Step 1. 获取混淆矩阵
#首先定义一个空的分类号*分类号的混淆矩阵。
conf _ matrix=torch . zeros(Emotion_kinds,Emotion _ kinds)
#使用torch.no_grad()可以显著降低测试用例的GPU占用。
用torch.no_grad():
对于enumerate(test_loader):中的步骤(img,targets)
# imgs:火炬。尺寸([50,3,200,200])手电筒。漂浮者
# Targets: torch.size ([50,1]),torch.longtensor多了一个维度,我们要去掉。
targets=targets.squeeze() # [50,1] - [50]
#将变量转化为GPU
targets=targets.cuda()
imgs=imgs.cuda()
# print(step,imgs.shape,imgs.type(),targets.shape,targets.type())
out=模型(imgs)
#记录混淆矩阵参数
conf_matrix=confusion _ matrix(out,targets,conf _ matrix)
conf_matrix=conf_matrix.cpu()
混淆矩阵函数用于求解混淆矩阵,其定义如下:
def混淆矩阵(预编码,标签,配置矩阵):
preds=torch.argmax(preds,1)
对于邮政编码为:的邮政编码(预编码、标签)
conf_matrix[p,t]=1
返回配置矩阵
在我们的程序执行完test_loader之后,我们可以得到这个数据的混淆矩阵。接下来,我们必须计算正确的识别数并可视化混淆矩阵:
conf _ matrix=np . array(conf _ matrix . cpu())#将混淆矩阵从gpu转移到CPU,再转移到NP
corrections=conf _ matrix . diagonal(offset=0)#用于提取对角线的每个分类的正确识别数
per _ kinds=conf _ matrix . sum(axis=1)#提取每个分类数据的试纸条总数
Print(混淆矩阵的元素总数:{0},测试集总数: {1} 。format (int (np.sum (conf _ matrix)),test _ num))
打印(会议矩阵)
#获得每种情绪的识别准确率
打印(每种情绪的总数:,per_kinds)
打印(每种情绪的正确预测数:,修正数)
打印(每种情绪的识别准确率为:{0} 。格式([rate * 100表示修正率/每种类型])
这一步的输出如下:
Step 2. 混淆矩阵可视化
将上面获得的混淆矩阵可视化。
#绘制混淆矩阵
Emotion=8#这个值是具体的分类号,可以自己修改。
标签=[中性,冷静,快乐,悲伤,焦虑,恐惧,尴尬,惊讶] #每个类别标签
#显示数据
plt.imshow(conf_matrix,cmap=plt.cm.Blues)
#在图中标出数量/概率信息。
Thresh=conf_matrix.max()/2#数字颜色阈值。如果数值超过这个,颜色会加深。
对于范围内的x(Emotion _ kinds):
对于范围(Emotion_kinds):中的y
#注意这里的matrix[y,x]不是matrix[x,y]
info=int(conf_matrix[y,x])
plt.text(x,y,info,
垂直对齐=居中,
horizontalalignment=居中,
color= white if info thresh else black )
Plt.tight_layout()#确保图形不重叠。
plt.yticks(范围(情感_种类),标签)
Plt。x票(range (emotion _ kinds),labels,rotation=45) # x轴字体倾斜45。
plt.show()
plt.close()
好了,这是最终的视觉混乱矩阵:
其它分类指标的获取
比如F1评分,TP,TN,FP,FN,精准率,召回率等指标都需要加上(因为还没用过)~
总结
关于pytorch分类模型绘制混淆矩阵及可视化的这篇文章到此为止。有关pytorch绘制混淆矩阵的更多信息,请搜索热门IT软件开发工作室之前的文章或继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。