willard-yuan/cnn-for-image-retrieval

Error using - Matrix dimensions must agree.

msftgitsklsd opened this issue · 4 comments

Error using -
Matrix dimensions must agree.
我有5000+张图片,跑到1982张的时候就报这个错误

你按下面的方式调试一下:

  1. 首先找到那个第1982的图片,确认一下图片有没有什么异常;
  2. 在图库所在目录去掉该张图片,然后看看图库中的图是否全部跑过去;
  3. 或者按下面方式定位到1982张图片那里:
%parfor i = 1:numImg
for i = 1982
   oriImg = imread(imgNamList{i, 1}); 
   if size(oriImg, 3) == 3
       im_ = single(oriImg) ; % note: 255 range
       im_ = imresize(im_, net.meta.normalization.imageSize(1:2)) ;
       im_ = im_ - net.meta.normalization.averageImage ;
       res = vl_simplenn(net, im_) ;

       % viesion: matconvnet-1.0-beta17
       featVec = res(20).x;

       featVec = featVec(:);
       feat = [feat; featVec'];
       fprintf('extract %d image\n\n', i);
   else
       im_ = single(repmat(oriImg,[1 1 3])) ; % note: 255 range
       im_ = imresize(im_, net.meta.normalization.imageSize(1:2)) ;
       im_ = im_ - net.meta.normalization.averageImage ;
       res = vl_simplenn(net, im_) ;

       % viesion: matconvnet-1.0-beta17
       featVec = res(20).x;

       featVec = featVec(:);
       feat = [feat; featVec'];
       fprintf('extract %d image\n\n', i);
   end
end

注意上面把i直接设为了从1982图片开始了,然后断点一步一步调试。

另外我在代码里已经加了对单通道图片的处理的情况的,即:

im_ = single(repmat(oriImg,[1 1 3])) ;

按上面方式调试后如果还有问题可以把那张出现问题的图片发给我。

感谢周日早上还来回复,第一次用matlab,很多地方都不懂,请见谅
1.图片看不出有异常
2.去掉图片,替换图片,还是一样的
3.定位到1982这张图片开始也不行

我的环境是win7 64 vs2010 matlab2015a matconvnet-1.0-beta17
图片传不上来,我贴到网盘了,链接:http://pan.baidu.com/s/1nuiPCDj

@sudddenly 我在这边把你这幅图片放进这个database(有9张图片)里,加上你这幅图片,共10幅图片,然后运行,测试通过,没问题。你可以自己按照我这个测试一下,应该是你其他地方的问题。