千家信息网

Pytorch训练模型得到输出后如何计算F1-Score和AUC

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了Pytorch训练模型得到输出后如何计算F1-Score和AUC,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、计
千家信息网最后更新 2026年11月03日Pytorch训练模型得到输出后如何计算F1-Score和AUC

这篇文章主要介绍了Pytorch训练模型得到输出后如何计算F1-Score和AUC,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

1、计算F1-Score

对于二分类来说,假设batch size 大小为64的话,那么模型一个batch的输出应该是torch.size([64,2]),所以首先做的是得到这个二维矩阵的每一行的最大索引值,然后添加到一个列表中,同时把标签也添加到一个列表中,最后使用sklearn中计算F1的工具包进行计算,代码如下

import numpy as npimport sklearn.metrics import f1_scoreprob_all = []lable_all = []for i, (data,label) in tqdm(train_data_loader):    prob = model(data) #表示模型的预测输出    prob = prob.cpu().numpy() #先把prob转到CPU上,然后再转成numpy,如果本身在CPU上训练的话就不用先转成CPU了    prob_all.extend(np.argmax(prob,axis=1)) #求每一行的最大值索引    label_all.extend(label)print("F1-Score:{:.4f}".format(f1_score(label_all,prob_all)))

2、计算AUC

计算AUC的时候,本次使用的是sklearn中的roc_auc_score () 方法

输入参数:

y_true:真实的标签。形状 (n_samples,) 或 (n_samples, n_classes)。二分类的形状 (n_samples,1),而多标签情况的形状 (n_samples, n_classes)。

y_score:目标分数。形状 (n_samples,) 或 (n_samples, n_classes)。二分类情况形状 (n_samples,1),"分数必须是具有较大标签的类的分数",通俗点理解:模型打分的第二列。举个例子:模型输入的得分是一个数组 [0.98361117 0.01638886],索引是其类别,这里 "较大标签类的分数",指的是索引为 1 的分数:0.01638886,也就是正例的预测得分。

average='macro':二分类时,该参数可以忽略。用于多分类,' micro ':将标签指标矩阵的每个元素看作一个标签,计算全局的指标。' macro ':计算每个标签的指标,并找到它们的未加权平均值。这并没有考虑标签的不平衡。' weighted ':计算每个标签的指标,并找到它们的平均值,根据支持度 (每个标签的真实实例的数量) 进行加权。

sample_weight=None:样本权重。形状 (n_samples,),默认 = 无。

max_fpr=None:

multi_class='raise':(多分类的问题在下一篇文章中解释)

labels=None:

输出:

auc:是一个 float 的值。

import numpy as npimport sklearn.metrics import roc_auc_scoreprob_all = []lable_all = []for i, (data,label) in tqdm(train_data_loader):    prob = model(data) #表示模型的预测输出    prob_all.extend(prob[:,1].cpu().numpy()) #prob[:,1]返回每一行第二列的数,根据该函数的参数可知,y_score表示的较大标签类的分数,因此就是最大索引对应的那个值,而不是最大索引值    label_all.extend(label)print("AUC:{:.4f}".format(roc_auc_score(label_all,prob_all)))

补充:pytorch训练模型的一些坑

1. 图像读取

opencv的python和c++读取的图像结果不一致,是因为python和c++采用的opencv版本不一样,从而使用的解码库不同,导致读取的结果不同。

2. 图像变换

PIL和pytorch的图像resize操作,与opencv的resize结果不一样,这样会导致训练采用PIL,预测时采用opencv,结果差别很大,尤其是在检测和分割任务中比较明显。

3. 数值计算

pytorch的torch.exp与c++的exp计算,10e-6的数值时候会有10e-3的误差,对于高精度计算需要特别注意,比如

两个输入5.601597, 5.601601, 经过exp计算后变成270.85862343143174, 270.85970686809225

感谢你能够认真阅读完这篇文章,希望小编分享的"Pytorch训练模型得到输出后如何计算F1-Score和AUC"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

标签 模型 输出 分数 形状 索引 训练 篇文章 最大 图像 指标 结果 较大 一行 参数 c++ 输入 不同 同时 平均值 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州为想互联网科技有限公司 蓝思科技飞鸽互联网 互联网和科技创新 盈实互联网科技 奇酷互联网科技 奇士达互联网科技 互联网科技创新企业排名 汉立互联网科技有限公司联系电话 云创客互联网科技公司 南平创想时代互联网科技有限公司 黑科技闪耀互联网之光 宜昌元轩互联网科技有限公司 广西互联网科技孵化中心 世界互联网领先科技成果获奖 中和天地互联网科技有限公司 有人说阿里系是互联网科技企业 科技互联网行业投资研究 中国科技和美国互联网 科技互联网经济论坛 华人运通互联网科技公司 天津市摩尔互联网科技 互联网科技未来 互联网科技小贷 互联网科技股午盘股票涨跌 成都仁贤领冠互联网科技有限公司 阿里互联网科技公司 新兴科技互联网创新大赛颁奖典礼 银川新华互联网科技学校联系电话 东营紫格互联网科技 世界互联网科技成果奖
0