Swin-Unet 训练自己数据集踩过的坑

本文讨论了数据集制作中标签匹配的重要性,强调了标签必须与像素值对应,否则会导致数据加载错误。同时,提到了一个常见错误——.npz文件无法识别,原因是train.txt中多了一个空格。在解决CUDA错误时,建议检查设备侧断言触发和设置CUDA_LAUNCH_BLOCKING环境变量进行调试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

py", line 160, in <dictcomp> return elem_type({key: default_collate([d[key] for d in batch]) for key in elem}) File "C:\ProgramData\Anaconda3\envs\untitled\lib\site-packages\torch\utils\data\_utils\collate.py", line 141, in default_collate return torch.stack(batch, 0, out=out) RuntimeError: stack expects each tensor to be equal size, but got [224, 224] at entry 0 and [448, 448] at entry 1

以及

RuntimeError: CUDA error: device-side assert triggered CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect. For debugging consider passing CUDA_LAUNCH_BLOCKING=1.

<nclass之类的统统都是标签不对应问题,例如我做两分类问题,加上背景nclass应该为3,标签就应该在[0 1 2]之间,如果不设置则会报错,怎么设置标签查看label的像素值,调试中看label

 

 标签设置一定要和像素对应否则无法生成正确的数据集格式。

数据集制作如果遇到以下这种这种情况无法识别.npz,自己真是找了好久这个问题,是因为train.txt中没错就是写数据集名称的txt文档中多了一个空格!删除最后一行的空格。

 

### 使用Swin-UNet模型训练自定义数据集 为了使用Swin-UNet模型训练自定义数据集,需遵循一系列特定的操作流程。首先,确保安装了必要的依赖库,特别是PyTorch版本应与提供的代码兼容。 #### 准备环境 确认环境中已正确配置Python以及所需版本的PyTorch和其他辅助包。这一步骤对于后续顺利运行至关重要[^1]。 #### 数据预处理 创建一个新的类继承`torch.utils.data.Dataset`来加载和预处理自定义的数据集。在这个过程中,重载`__init__()`、`__len__()` 和 `__getitem__()` 方法以适应具体的应用场景。通过这种方式,不仅能够简化数据访问逻辑,还能充分利用框架内置的功能如多线程读取、随机打乱顺序(shuffle)和支持批量(batch)操作[^3]。 ```python from torch.utils.data import Dataset, DataLoader class CustomImageDataset(Dataset): def __init__(self, image_dir, mask_dir, transform=None): self.image_dir = image_dir self.mask_dir = mask_dir self.transform = transform # 初始化其他属性... def __len__(self): return len(self.images) def __getitem__(self, idx): img_path = os.path.join(self.image_dir, self.images[idx]) mask_path = os.path.join(self.mask_dir, self.masks[idx]) image = Image.open(img_path).convert('RGB') mask = Image.open(mask_path) if self.transform: image = self.transform(image) mask = self.transform(mask) sample = {'image': image, 'mask': mask} return sample ``` #### 配置训练参数 调整超参数设置,比如批次大小(batch size),学习率(learning rate),优化器(optimizer)的选择等。这些因素直接影响到最终模型的表现。同时也要注意选择合适的损失函数(loss function)用于指导网络的学习过程[^2]。 #### 执行训练循环 利用给定的训练脚本来启动实际的训练环节。此阶段会反复迭代整个数据集多次(epoches),每次更新权重直至达到满意的收敛状态或者满足预先设定的最大轮次限制。期间可以通过监控验证集上的表现来防止过拟合现象的发生。 #### 测试与评估 完成一轮或多轮完整的训练周期后,采用预留出来的独立测试样本集来进行全面评测。借助于准备好的评估工具箱,可以获得诸如IoU (Intersection over Union), Dice Coefficient等一系列量化指标用来衡量算法的有效性和鲁棒性。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值