设置设备
device = torch.device(“cuda:0” if torch.cuda.is_available() else “cpu”)
定义数据增强
transform = transforms.Compose([ transforms.Resize((224, 224)), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ])
加载数据集
data_path = “path/to/dataset” dataset = datasets.ImageFolder(root=data_path, transform=transform)
加载模型
model_path = “path/to/model.pth” model = torch.load(model_path) model.to(device) model.eval()
获取预测结果和标签
labels = [] preds = [] for inputs, targets in dataset: inputs = inputs.unsqueeze(0).to(device) targets = targets.to(device) outputs = model(inputs) _, predicted = torch.max(outputs.data, 1) labels.append(targets.item()) preds.append(predicted.item())
生成混淆矩阵
cm = confusion_matrix(labels, preds) classes = dataset.classes cm_df = pd.DataFrame(cm, index=classes, columns=classes)
保存为CSV文件
cm_df.to_csv(“confusion_matrix.csv”) print(“Confusion matrix saved as confusion_matrix.csv”)
#### #### #### 非 ImageNet数据格式,定义导入数据的类名和方法!!!! 导入数据的类和函数定义代码:
import os import numpy as np import torch from torch.utils.data import Dataset from torchvision import transforms from PIL import Image class CustomDataset(Dataset): def init(self, data_dir, transform=None): self.data_dir = data_dir self.transform = transform self.img_files = os.listdir(data_dir)
def __len__(self): return len(self.img_files) def __getitem__(self, index): img_path = os.path.join(self.data_dir, self.img_files[index]) img = Image.open(img_path).convert('RGB') label = self.get_label_from_filename(self.img_files[index]) if self.transform: img = self.transform(img) return img, label def get_label_from_filename(self, filename): label = filename.split('.')[0] # 假设文件名为"label.image_id.jpg"格式 label = label.split('_')[0] # 仅保留label信息 return int(label)
加载数据集并进行预处理
data_dir = “your_data_dir” transform = transforms.Compose([ transforms.Resize((224, 224)), # 图像大小调整为224x224 transforms.ToTensor(), # 将图像转换为Tensor格式,并将像素值缩放到[0, 1] transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) # 图像标准化 ]) dataset = CustomDataset(data_dir, transform=transform)
#### 非imageNet数据格式,完成生成混淆矩阵程序代码!!!! 注意点: 1.自定义数据通过 “\_” 来进行获取图片的类别 label 标签值,所以你的命名中是否包含了标签值,如果没有标签值,还是需要自行修改的,当然有的话,也需要思考一下,标签值放置的位置在spilt后列表的那个位置! 2.对了,那个后面部分需要缩进,哈哈,python代码简洁,但缩进问题就很抽象,从 model = torch.load('model.pth') 开始直接缩进!!!
import torch import torchvision.transforms as transforms from torch.utils.data import DataLoader from sklearn.metrics import confusion_matrix import pandas as pd import numpy as np
自定义数据集类
class MyDataset(torch.utils.data.Dataset): def init(self, root_dir, transform=None): self.root_dir = root_dir self.transform = transform self.img_list = os.listdir(root_dir)
def __len__(self): return len(self.img_list) def __getitem__(self, idx): img_name = os.path.join(self.root_dir, self.img_list[idx])
最后
Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
👉Python所有方向的学习路线👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉Python必备开发工具👈
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
👉Python全套学习视频👈
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
👉实战案例👈
学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。
因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。
👉大厂面试真题👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。