Linux系统MatConvNet出错:Attempt to execute SCRIPT vl_nnconv as a function

Posted Z.Q.Feng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统MatConvNet出错:Attempt to execute SCRIPT vl_nnconv as a function相关的知识,希望对你有一定的参考价值。


一、项目场景

最近在 MATLAB 中使用 MatConvNet 时出现如下报错:

network forward for depth prediction...
Attempt to execute SCRIPT vl_nnconv as a function:
/home/zq/Documents/项目/SynthText-Myself/prep_scripts/libs/matconvnet/matlab/vl_nnconv.m

Error in my_nn_struct_forward (line 43)
      res(i+1).x = vl_nnconv(res(i).x, l.filters, l.biases, 'pad', l.pad, 'stride', l.stride) ;

Error in do_model_evaluate (line 23)
res = my_nn_struct_forward(net, img_data, [], ...

Error in predict_depth>get_depth (line 95)
    depth = do_model_evaluate(model, ds, opts);

Error in predict_depth (line 60)
        depth = get_depth(img,model.(imtype),opts);

好奇的我打开 vl_nnconv.m 一看,居然全是注释没有内容!


解决办法

在 MATLAB 中使用 MatConvNet 是需要预先编译安装的,进入到你的 matconvnet-1.0-beta25 文件夹(就是 matlab 文件夹mex 文件夹 所在的那个目录),在 MATLAB 命令行中运行如下命令:

cd matconvnet-1.0-beta25 % 设置MATLAB工作目录为此文件夹
run matlab/vl_compilenn ;

编译过程中若报错可参考此文章:MATLAB-matconvnet报错:Error using mex … error: ‘numeric_limits’ is not a member of ‘std’

接着复制你的 mex 文件夹内的所有内容到 matlab 文件夹内:

Windows 下此文件后缀名为 .mexw64,Linux 下为 .mexa64

以上是关于Linux系统MatConvNet出错:Attempt to execute SCRIPT vl_nnconv as a function的主要内容,如果未能解决你的问题,请参考以下文章

MatConvNet下载后make报错解决办法

MatConvNet训练自己的网络

Matconvnet工具箱在Matlab中的安装

在windows上Matlab 编译MatConvNet

MatConvNet编译报错:mex/vl_nnconv.mexa64‘ compiled with ‘-R2018a‘ and linked with ‘-R2017b‘. 解决办法

CC 异常: net.sourceforge.cruisecontrol.CruiseControlException: Encountered an IO exception while attem