ECANet-master调试记录

本文主要记录ECANet-master程序的调试过程中出现的问题及解决方法:
项目下载地址

Traceback (most recent call last):
  File "D:/Downloads/Papers/ECANet-master/ECANet-master/light_main.py", line 425, in <module>
    main()
  File "D:/Downloads/Papers/ECANet-master/ECANet-master/light_main.py", line 104, in main
    model = models.__dict__[args.arch]()
KeyError: 'resnet18'
=> creating model 'resnet18'

在这里插入图片描述
这里提到问题错误出现是由于参数键值错误,这里是声明我们创建的模型名称,而在这个项目中,resnet模型创建都在eca_resnet.py文件中,我们打开里面的文件,发现创建模型的函数名为:

def eca_resnet18(k_size=[3, 3, 3, 3], num_classes=1_000, pretrained=False):
    """Constructs a ResNet-18 model.
    Args:
        k_size: Adaptive selection of kernel size
        pretrained (bool): If True, returns a model pre-trained on ImageNet
        num_classes:The classes of classification
    """
    model = ResNet(ECABasicBlock, [2, 2, 2, 2], num_classes=num_classes, k_size=k_size)
    model.avgpool = nn.AdaptiveAvgPool2d(1)
    return model

所以我们尝试将指明创建模型的参数设置为:

parser.add_argument('--arch', '-a', metavar='ARCH', default='eca_resnet18',#此处的resnet18的函数名应为resnet18
                    choices=model_names,
                    help='model architecture: ' +
                        ' | '.join(model_names) +
                        ' (default: resnet18)')

ok,问题解决
在这里插入图片描述
2.关于找不到数据集路径

usage: light_main.py [-h] [--arch ARCH] [-j N] [--epochs N] [--start-epoch N]
                     [-b N] [--lr LR] [--momentum M] [--weight-decay W]
                     [--print-freq N] [--resume PATH] [-e] [--pretrained]
                     [--world-size WORLD_SIZE] [--dist-url DIST_URL]
                     [--dist-backend DIST_BACKEND] [--seed SEED] [--gpu GPU]
                     [--action ACTION]
                     DIR
light_main.py: error: the following arguments are required: DIR

Process finished with exit code 2

这个项目中并没有给我们数据集,是因为该项目的数据集已经继承在我们的python的相关包中,我们点击RUN-Edit Configurations
在这里插入图片描述

这里我们使用的数据集是image_net,该数据集较大,耐心下载。
在这里插入图片描述
接着我们再次运行出现:

RuntimeError: Found 0 files in subfolders of: ./data/image Supported
extensions are: .jpg,.jpeg,.png,.ppm,.bmp,.pgm,.tif,.tiff,.webp

这个我们只需要在train和val下再创建一个train和val即可:
在这里插入图片描述
再次运行出现错误:

File “D:\PythonProgram\conda3.6\lib\site-packages\torch_init_.py”,
line 84, in
from torch._C import *
ImportError: DLL load failed: 页面文件太小,无法完成操作。

出现这个问题可能有两种情况。
①不止在运行一个项目,另一个项目的python程序也在运行,关掉就可以了。
②windows操作系统不支持python的多进程操作。而神经网络用到多进程的地方在数据集加载上,所以将DataLoader中的参数num_workers设置为0即可。
博主打开dataloader,发现参数默认即为0,看来还有别的地方进行了声明
在这里插入图片描述
仔细通过报错信息进行查找找到:
在这里插入图片描述
将其改为0,再次运行:
在这里插入图片描述
数据集较大,其开始往内存读取时硬盘和内存占用比重很大:
在这里插入图片描述
此时查看GPU利用率:直接拉满,开始炼丹了。
在这里插入图片描述
项目运行很慢,完成了训练和测试,等到运行到写入结果时:
在这里插入图片描述

AttributeError: module ‘os‘ has no attribute ‘mknod‘

最后发现在windows 上面 不支持 mknod ,所以想创建文件使用 open 把 ,open 支持打开文件,没有文件的时候就创建文件 ,记得使用 w ,也就是open(“xxxx”,“w”)
w 的意思是:打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
然后为了检测运行过程中是否还会有问题,我改了下参数,希望能够运行快些,然而:

CUDA out of memory. Tried to allocate 1024.00 KiB (GPU 0; 4.00 GiB
total capacity; 2.96 GiB already allocated; 403.20 KiB free; 133.03
MiB cached)

显存超了,只能改小一些。
以上便是light_main文件的调试过程了,仅供参考。
项目下载地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彭祥.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值