Pytorch 计算误判率,计算准确率,计算召回率的例子

在深度学习中,我们通常需要计算模型的准确率、误判率和召回率等指标,以评估模型的性能。在PyTorch中,我们可以使用混淆矩阵来计算这些指标。下面是两个示例,分别演示如何计算准确率、误判率和召回率。

示例1:计算准确率、误判率和召回率

在这个示例中,我们将使用PyTorch计算一个二分类模型的准确率、误判率和召回率。具体来说,我们将使用一个名为BinaryClassifier的类来定义二分类模型,并使用sklearn模块生成一些随机数据。下面是一个示例:

import torch
import numpy as np
from sklearn.metrics import confusion_matrix

class BinaryClassifier(torch.nn.Module):
    def __init__(self):
        super(BinaryClassifier, self).__init__()
        self.linear = torch.nn.Linear(2, 1)

    def forward(self, x):
        x = self.linear(x)
        return torch.sigmoid(x)

# 生成随机数据
np.random.seed(0)
X = np.random.randn(100, 2)
y = np.random.randint(0, 2, 100)

# 定义模型和优化器
model = BinaryClassifier()
criterion = torch.nn.BCELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

# 训练模型
for epoch in range(100):
    inputs = torch.from_numpy(X).float()
    labels = torch.from_numpy(y).float().view(-1, 1)
    optimizer.zero_grad()
    outputs = model(inputs)
    loss = criterion(outputs, labels)
    loss.backward()
    optimizer.step()

# 计算准确率、误判率和召回率
inputs = torch.from_numpy(X).float()
labels = torch.from_numpy(y).float().view(-1, 1)
outputs = model(inputs)
predicted = (outputs > 0.5).float()
tn, fp, fn, tp = confusion_matrix(labels.numpy(), predicted.numpy()).ravel()
accuracy = (tp + tn) / (tp + tn + fp + fn)
misclassification_rate = (fp + fn) / (tp + tn + fp + fn)
recall = tp / (tp + fn)

print('Accuracy:', accuracy)
print('Misclassification rate:', misclassification_rate)
print('Recall:', recall)

在这个示例中,我们首先导入torchnumpysklearn.metrics模块。然后,我们定义了一个名为BinaryClassifier的类,该类继承自torch.nn.Module类,并包含一个线性层。我们使用torch.sigmoid函数将输出转换为概率。接下来,我们使用numpy.random模块生成一些随机数据,并使用torch.optim.SGD类定义优化器。在训练过程中,我们使用torch.from_numpy函数将NumPy数组转换为PyTorch张量,并使用torch.nn.BCELoss类定义损失函数。在训练完成后,我们使用模型对所有数据进行预测,并使用sklearn.metrics.confusion_matrix函数计算混淆矩阵。最后,我们使用混淆矩阵计算准确率、误判率和召回率。

示例2:计算多分类模型的准确率、误判率和召回率

在这个示例中,我们将使用PyTorch计算一个多分类模型的准确率、误判率和召回率。具体来说,我们将使用一个名为MultiClassifier的类来定义多分类模型,并使用sklearn模块生成一些随机数据。下面是一个示例:

import torch
import numpy as np
from sklearn.metrics import confusion_matrix

class MultiClassifier(torch.nn.Module):
    def __init__(self):
        super(MultiClassifier, self).__init__()
        self.linear = torch.nn.Linear(2, 3)

    def forward(self, x):
        x = self.linear(x)
        return torch.softmax(x, dim=1)

# 生成随机数据
np.random.seed(0)
X = np.random.randn(100, 2)
y = np.random.randint(0, 3, 100)

# 定义模型和优化器
model = MultiClassifier()
criterion = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

# 训练模型
for epoch in range(100):
    inputs = torch.from_numpy(X).float()
    labels = torch.from_numpy(y).long()
    optimizer.zero_grad()
    outputs = model(inputs)
    loss = criterion(outputs, labels)
    loss.backward()
    optimizer.step()

# 计算准确率、误判率和召回率
inputs = torch.from_numpy(X).float()
labels = torch.from_numpy(y).long()
outputs = model(inputs)
_, predicted = torch.max(outputs, 1)
tn, fp, fn, tp = confusion_matrix(labels.numpy(), predicted.numpy()).ravel()
accuracy = (tp + tn) / (tp + tn + fp + fn)
misclassification_rate = (fp + fn) / (tp + tn + fp + fn)
recall = tp / (tp + fn)

print('Accuracy:', accuracy)
print('Misclassification rate:', misclassification_rate)
print('Recall:', recall)

在这个示例中,我们首先定义了一个名为MultiClassifier的类,该类继承自torch.nn.Module类,并包含一个线性层。我们使用torch.softmax函数将输出转换为概率。接下来,我们使用numpy.random模块生成一些随机数据,并使用torch.optim.SGD类定义优化器。在训练过程中,我们使用torch.from_numpy函数将NumPy数组转换为PyTorch张量,并使用torch.nn.CrossEntropyLoss类定义损失函数。在训练完成后,我们使用模型对所有数据进行预测,并使用torch.max函数找到每个样本的最大输出。然后,我们使用sklearn.metrics.confusion_matrix函数计算混淆矩阵。最后,我们使用混淆矩阵计算准确率、误判率和召回率。

总之,使用PyTorch计算准确率、误判率和召回率非常简单。我们可以使用混淆矩阵来计算这些指标,并使用sklearn.metrics.confusion_matrix函数计算混淆矩阵。在计算准确率、误判率和召回率之前,我们需要使用torch.max函数找到每个样本的最大输出。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pytorch 计算误判率,计算准确率,计算召回率的例子 - Python技术站

(1)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • pytorch中的Variable

    “”” Variable为tensor数据构建计算图,便于网络的运算 “”” import torch from torch.autograd import Variable tensor = torch.FloatTensor([[1,2],[3,4]]) # 创建一个tensor类型的数据 variable = Variable(tensor, requ…

    PyTorch 2023年4月6日
    00
  • Pytorch实验常用代码段汇总

    当进行PyTorch实验时,我们经常需要使用一些常用的代码段来完成模型训练、数据处理、可视化等任务。本文将详细讲解PyTorch实验常用代码段汇总,并提供两个示例说明。 1. 模型训练 在PyTorch中,我们可以使用torch.optim模块中的优化器和nn模块中的损失函数来训练模型。以下是模型训练的示例代码: import torch import to…

    PyTorch 2023年5月15日
    00
  • 更快的计算,更高的内存效率:PyTorch混合精度模型AMP介绍

    作者:Rahul Agarwal ​ 您是否知道反向传播算法是Geoffrey Hinton在1986年的《自然》杂志上提出的? ​ 同样的,卷积网络由Yann le cun于1998年首次提出,并进行了数字分类,他使用了单个卷积层。 直到2012年下半年,Alexnet才通过使用多个卷积层在imagenet上实现最先进的技术来推广卷积网络。 ​ 那么,是什…

    PyTorch 2023年4月7日
    00
  • Pytorch如何把Tensor转化成图像可视化

    以下是“PyTorch如何把Tensor转化成图像可视化”的完整攻略,包含两个示例说明。 示例1:将Tensor转化为图像 步骤1:准备数据 我们首先需要准备一些数据,例如一个包含随机数的Tensor: import torch import matplotlib.pyplot as plt x = torch.randn(3, 256, 256) 步骤2:…

    PyTorch 2023年5月15日
    00
  • Faster-RCNN Pytorch实现的minibatch包装

    实际上faster-rcnn对于输入的图片是有resize操作的,在resize的图片基础上提取feature map,而后generate一定数量的RoI。 我想首先去掉这个resize的操作,对每张图都是在原始图片基础上进行识别,所以要找到它到底在哪里resize了图片。 直接搜 grep ‘resize’ ./lib/ -r ./lib/crnn/ut…

    PyTorch 2023年4月8日
    00
  • ubuntu tensorflow 和 pytorch 启动

    1. 首先查看是否安装库,执行如下命令: 1 conda info –envs 2. 如果有,进行TensorFlow启动,执行如下命令: 1 source activate tf #这里的tf是1中命令执行完后的包的名称 3. 执行Python,在执行import,命令如下: 1 Python 2 import tf 效果如下:        4. py…

    2023年4月8日
    00
  • 关于PyTorch 自动求导机制详解

    关于PyTorch自动求导机制详解 在PyTorch中,自动求导机制是深度学习中非常重要的一部分。它允许我们自动计算梯度,从而使我们能够更轻松地训练神经网络。在本文中,我们将详细介绍PyTorch的自动求导机制,并提供两个示例说明。 示例1:使用PyTorch自动求导机制计算梯度 以下是一个使用PyTorch自动求导机制计算梯度的示例代码: import t…

    PyTorch 2023年5月16日
    00
  • conda pytorch 配置

    主要步骤: 0.安装anaconda3(基本没问题) 1.配置清华的源(基本没问题) 2.查看python版本,运行 python3 -V; 查看CUDA版本,运行 nvcc -V 3.如果想用最新版本的python,可以创建新的python版本:   conda create –name python38 python=3.8   conda activ…

    2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部