matconvnet上的剩余网络单元内容引用错误

时间:2017-04-30 22:25:33

标签: matlab deep-learning vlfeat matconvnet deep-residual-networks

我正在使用mathconvnet 1.0 beta24。我可以正确安装和编译工具箱。当我在网站上关注快速入门时(http://www.vlfeat.org/matconvnet/quick/); 我开始;

untar('http://www.vlfeat.org/matconvnet/download/matconvnet-1.0-beta24.tar.gz') ;
cd matconvnet-1.0-beta24
run matlab/vl_compilenn ;

之后代替imagenet-vgg-f模型我想使用其中一个resnet模型,所以我继续;

urlwrite(...
  'http://www.vlfeat.org/matconvnet/models/imagenet-resnet-50-dag.mat', ...
  'imagenet-resnet-50-dag.mat') ;
run matlab/vl_setupnn ;
net = load('imagenet-resnet-50-dag.mat') ;

这部分工作正常,但是当我运行以下命令时;

net = vl_simplenn_tidy(net) ;

我收到以下错误;

来自非单元数组对象的单元格内容引用。

Error in vl_simplenn_tidy (line 47)
layer = net.layers{l} ;

imagenet-vgg-f模型工作正常,但是当我尝试使用resnet模型时,我得到了错误。我不知道如何解决这个问题。这对我来说非常重要,因为我是一名新手。

赞赏任何想法

提前致谢

1 个答案:

答案 0 :(得分:0)

如果我没记错的话,ResNet使用DAGNN(即网络是有向无环图)。 VGG很简单。所以你不能将vl_simplenn_tidy用于ResNet。该错误是由使用{}访问net.layers引起的。在DAGNN中,您只能通过()访问图层,因为它是一个matlab结构数组,而不是单元格数组。也就是说,dagNN和simplenn之间还存在其他差异。所以你不能在dagNN上使用vl_simplenn_tidy()。