VDSR、DRCN作者matlab代码调试

最近由于要跑对比实验,所以找了一下VDSR和DRCN作者提供的代码

首先发一下作者论文页面下的代码链接,这玩意我在git上找了好久没找到,最后好不容易找到DRCN,是作者学校的网站,我把网页中的DRCN改成VDSR,也成功找到VDSR的代码

DRCN:

https://cv.snu.ac.kr/research/DRCN/

VDSR:

https://cv.snu.ac.kr/research/VDSR/

 

我上来先跑的DRCN,还算很顺利,有几个要注意的地方,我写会写在下面,至于VDSR,问题就比较多了,我会在最后面附上我改的VDSR代码的百度网盘链接

说下我服务器配置:ubuntu16.04、 GeForce GTX TITAN X(对应的GPU编号是2,matlab的编号从1开始,与pytorch和tensorflow不同)、 matlab2015

我一开始打算在自己电脑的windows上跑,但是又需要 VS2017,有需要装cuda,很难搞,服务器上的cuda都配好了,也不用装vs,windows下尝试了几次不成之后就听师兄的去服务器上跑了,下面主要遇到这么几个问题

 

1.按照作者readme中写的步骤执行

首先报错nvcc fatal : Unsupported gpu architecture 'compute_20'
查到https://www.cnblogs.com/houjun/p/9885847.html,是由于cuda9不支持compute_20
即# For CUDA >= 9.0, comment the *_20 and *_21 lines for compatibility.
注释了 vl_compilenn 第153行的'-gencode=arch=compute_20,code=\"sm_20,compute_20\" '...
改完后
警告: 您使用的 gcc 版本为 '5.4.0-6ubuntu1~16.04.11)'。不支持该版本的 gcc。MEX 当前支持的版本为 '4.7.x'。有关当前支
持的编译器列表,请参阅: http://www.mathworks.com/support/compilers/current_release。 
> In vl_compilenn>mex_link (line 456)
  In vl_compilenn (line 408)
  In setup (line 4) 

这个警告不用管,不影响后续操作


2.运行testDRCN时出现out of memory,怀疑是指定GPU错误,根据链接修改,服务器终端输入nvidia-smi查看GPU状态和编号由于服务器上TitanX对应1,另一块别人再用的对应0,matlab则是从1开始计数,所以
要修改GPU,选择2
http://gaobb.github.io/2015/06/12/Matlab%20and%20GPU/

3.在matlab lab命令行里修改,发现还是out of memory
在测试程序中写
g=gpuDevice(2); %by yyc
reset(g);  %by yyc
发现还是不行,但是把g=gpuDevice(2);的‘;’号去掉后,变得可以了
我后面会上传我改好的VDSR代码

4.在测试别的训练集的时候,发现不行,提到runRCN不存在,估计是因为图太大调用了裁减函数,但是裁剪函数里的名称是runRCN,而
文件夹里只有runDRCN,尝试把runRCN 都替换成runDRCN,成功运行(这个问题只有DRCN的代码里有)

一般就上面几个问题,解决好后把数据集放到相应位置,result文件夹下就有结果了

 

(下面开始是VDSR的问题)

除了上面的问题修改完后,(比如DRCN中的注释了 vl_compilenn 第153行的'-gencode=arch=compute_20,code=\"sm_20,compute_20\" '...和选择GPU)

VDSR出现
5.错误使用 vl_nnconv

Error using vl_nnconv
An input is not a numeric array (or GPU support not compiled).

Error in vl_simplenn (line 296)
res(i+1).x = vl_nnconv(res(i).x, l.weights{1}, l.weights{2}, …

Error in runVDSR (line 3)
res2 = vl_simplenn(net2, imlow, []);% {‘conserveMemory’, true});

Error in VDSR (line 46)
impred = runVDSR(net, imlowy, gpu);

Error in testVDSR (line 13)
VDSR(data, SF, ‘VDSR.mat’, outRoute);


尝试在VDSR的matconnet下加入DRCN中的又的setup.m文件,还是失败
一系列尝试均失败

6.把DRCN的snu_matconvnet到VDSR下,修改testVDSR里的路径,使其匹配,运行会提示少一个vl_simplenn_tidy
在VDSR代码中找到这个文件,复制过去,成功运行

 

改好的代码链接(注意针对自己的cuda版本和GPU做二次修改)

https://pan.baidu.com/s/1Sj5_nqltP4-G4bhjVcQiKg

提取码:ew3k

 

  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值