остаточная ошибка ссылки на содержимое ячейки сети на matconvnet

Я использую 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 я хочу использовать одну из моделей реснета, поэтому я продолжаю;

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 работает нормально, но когда я пытаюсь использовать модель реснета, я получаю сообщение об ошибке. Я не знаю, как решить эту проблему. Это очень важно для меня, так как я новичок в этой теме.

Любые идеи приветствуются

заранее спасибо


person yns    schedule 30.04.2017    source источник


Ответы (1)


Если я правильно помню, ResNet использует DAGNN (т. е. сеть представляет собой ориентированный ациклический граф). VGG простой. Поэтому вы не можете использовать vl_simplenn_tidy для ResNet. Ошибка вызвана доступом к net.layers с использованием {}. В DAGNN вы можете получить доступ к слоям только с помощью (), так как это массив структур Matlab, а не массив ячеек. Тем не менее, есть и другие различия между dagNN и simplenn. Таким образом, вы не можете использовать vl_simplenn_tidy() на dagNN.

person DataHungry    schedule 07.06.2017