You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Kaggle猫狗数据集上训练ResNet18停滞在0%的问题求助

训练ResNet18停滞在0%的排查与解决步骤

1. 优先排查数据加载环节(最常见原因)

即使确认数据集可访问,仍可能存在以下问题:

  • 损坏图片文件阻塞加载:Kaggle猫狗数据集自带部分无法正常读取的损坏文件(如PetImages/Cat/666.jpg、PetImages/Dog/11702.jpg),加载时会导致进程无响应。
    解决:遍历数据集检测并删除损坏文件:
    import os
    from PIL import Image
    
    data_dir = "kagglecatsanddogs_5340/PetImages"
    for folder in ["Cat", "Dog"]:
        folder_path = os.path.join(data_dir, folder)
        for filename in os.listdir(folder_path):
            file_path = os.path.join(folder_path, filename)
            try:
                img = Image.open(file_path)
                img.verify()
            except (IOError, SyntaxError):
                print(f"删除损坏文件: {file_path}")
                os.remove(file_path)
    
  • DataLoader参数设置不当:num_workers过高会引发多进程加载冲突,复杂预处理也可能导致阻塞。
    解决:先将num_workers设为0(单进程加载),简化预处理流程(仅保留resize、归一化),测试是否能正常运行,再逐步恢复参数。
  • 数据集长度统计错误:进度显示的0/5015需与实际有效图片数量匹配,若大量文件无效,会导致加载逻辑异常。

2. 检查模型与训练流程

  • 模型结构错误:自定义层逻辑问题或全量训练时误设requires_grad=False,会导致反向传播卡住。
    解决:先使用预训练ResNet18替换分类头的最简结构测试:
    import torch
    import torchvision.models as models
    model = models.resnet18(pretrained=True)
    num_ftrs = model.fc.in_features
    model.fc = torch.nn.Linear(num_ftrs, 2)
    
  • 损失/优化器配置错误:比如CrossEntropyLoss输入需为模型原始logits(无需手动softmax),优化器未正确绑定模型参数。
    解决:确认损失函数输入维度匹配,优化器参数为model.parameters()。

3. 环境与硬件排查

  • GPU显存不足:显存占满会导致进程陷入等待,无报错但停滞。
    解决:降低batch_size(如从32降至16),或用torch.cuda.empty_cache()清理显存后重启训练。
  • 系统资源限制:远程服务器或Kaggle Notebook可能因CPU/内存占用过高导致进程挂起。
    解决:重启进程,用nvidia-smi查看GPU状态,top查看CPU/内存占用。

内容的提问来源于stack exchange,提问作者TAT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 07:27:10