# 导入必要的库import torchimport torchnn as nnimport pandas as pdimport matplotlibpyplot as pltfrom sklearnmetrics import roc_curve auc# 读取数据data = pdread_excelCUserslenovoDesktopHIVDNN神经网络测试data1xlsxx = da
这个错误是因为prob是一个需要梯度计算的Tensor,而numpy()方法不支持梯度计算。可以使用detach()方法将其转换为不需要梯度计算的Tensor,然后再调用numpy()方法。修改代码如下:
输出每个样本的概率
_, predicted = torch.max(outputs.data, 1) prob = torch.softmax(outputs, dim=1)[:, 1] print("每个样本的概率:", prob.detach().numpy())
绘制准确率变化的图
plt.plot(train_accuracy) plt.title('Accuracy') plt.xlabel('Epoch') plt.ylabel('Accuracy') plt.show()
绘制损失变化的图
plt.plot(train_loss) plt.title('Loss') plt.xlabel('Epoch') plt.ylabel('Loss') plt.show()
绘制ROC图
fpr, tpr, threshold = roc_curve(y, prob.detach().numpy()) roc_auc = auc(fpr, tpr) plt.title('ROC Curve') plt.plot(fpr, tpr, 'b', label='AUC = %0.2f' % roc_auc) plt.legend(loc='lower right') plt.plot([0, 1], [0, 1], 'r--') plt.xlim([0, 1]) plt.ylim([0, 1]) plt.ylabel('True Positive Rate') plt.xlabel('False Positive Rate') plt.show()
原文地址: http://www.cveoy.top/t/topic/bLEP 著作权归作者所有。请勿转载和采集!