ECANet-master调试记录

Posted 彭祥.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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文件的调试过程了,仅供参考。
项目下载地址

以上是关于ECANet-master调试记录的主要内容,如果未能解决你的问题,请参考以下文章

本田R魂Atom 3.5R 以355PS/550kg的极致比重刷掉 Audi RS6 Avant!

IOS调试发现的坑,记录一下

u-boot命令行调试LCD简单记录

Java关于远程调试程序教程

中国开源代码贡献占全球比重40%

2019-09-20受难在生命中占比重要地位