こんにちはCNNに精通して、私はバイナリ分類航空機(760画像)または非航空機(750)のコードを用意しました。ここでバイナリ分類のCNNトレーニングでエラーが発生しました
は私のMATLABコード
Npos = numel(possitive_regions);
Nneg = numel(negative_regions);
Npos_train = floor(0.25* Npos);
Npos_val = floor(0.25*Npos);
Npos_test = floor(0.50*Npos);
Nneg_train = floor(0.25*Nneg);
Nneg_val = floor(0.25*Nneg);
Nneg_test = floor(0.50*Nneg);
for i=1:Npos
im= imresize (single(possitive_regions{i,:}),[50,50]);
imdb.images.data(:,:,:, i) = im;
imdb.images.labels(i) = 1;
if i <= Npos_train
imdb.images.set(i) = 1;
elseif i <= Npos_train+Npos_val
imdb.images.set(i) = 2;
else
imdb.images.set(i) = 3;
end
end
% for negative samples
for i=1:Nneg
im= imresize (single(negative_regions{i,:}),[50,50]);
imdb.images.data(:,:,:, i+Npos) = im;
imdb.images.labels(i+Npos) = 0;
if i <= Nneg_train
imdb.images.set(Npos+i) = 1;
elseif i <= Nneg_train+Nneg_val
imdb.images.set(Npos+i) = 2;
else
imdb.images.set(Npos+i) = 3;
end
end
imdb.meta.sets = {'train', 'val', 'test'} ;
%% Network
opts.inputSize = [50 50 3] ;
opts.train.batchSize = 50;
opts.train.numEpochs = 10;
opts.train.continue = true;
% opts.train.useGpu = false;
opts.train.learningRate = 0.01;
% opts = vl_argparse(opts, []);
f = 0.01;
f=1/100 ;
net.layers = {} ;
net.layers{end+1} = struct('type', 'conv','weights', {{f*randn(5,5,3,20, 'single'), zeros(1, 20, 'single')}},'stride', 1,'pad', 0);
net.layers{end+1} = struct('type', 'pool','method', 'max', 'pool', [2 2], 'stride', 2, 'pad', 0) ;
net.layers{end+1} = struct('type', 'conv', 'weights', {{f*randn(5,5,20,50, 'single'),zeros(1,50,'single')}}, 'stride', 1, 'pad', 0) ;
net.layers{end+1} = struct('type', 'pool', 'method', 'max', 'pool', [2 2], 'stride', 2, 'pad', 0) ;
net.layers{end+1} = struct('type', 'conv', 'weights', {{f*randn(4,4,50,500, 'single'), zeros(1,500,'single')}}, 'stride', 1, 'pad', 0) ;
net.layers{end+1} = struct('type', 'relu') ;
net.layers{end+1} = struct('type', 'conv', 'weights', {{f*randn(1,1,500,10, 'single'), zeros(1,10,'single')}}, 'stride', 1, 'pad', 0) ;
net.layers{end+1} = struct('type', 'softmaxloss') ;
disp('Net is Ok.');
% [net, info] = trainfn(net, imdb, getBatch(opts), 'expDir', opts.expDir, net.meta.trainOpts, opts.train, 'val', find(imdb.images.set == 3)) ;
[net, info] = cnn_train(net, imdb, @getBatch, opts.train, 'val', find(imdb.images.set == 2)) ;
私はMINSTの例から、それを取ったネットワーク部分です。このファイルとgetBatch関数をMatConvNetのサンプルフォルダに保存しました。 cnn_train
を実行すると、この出力とエラーが発生します。
誰でも、このエラーを解決するのを手伝ってください。 また、私はこのエラーについて調べました。私はmexファイルをチェックし、vl_compilenn( 'verbose'、1)を使ってコンパイルする必要があることを発見しました。 私もそれをコンパイル時にエラーが発生しました:
エラー使用してMEX
LINK:致命的なエラーLNK1104:ファイルを開くことができません 「C:\ Users \ユーザーz5085693 \ダウンロード\ matconvnet-1.0-beta23 \ matconvnet -1.0-beta23 \ matlab \ mex \ vl_nnconv.mexw64 '
vl_compilennのエラー> mex_link(行547)mex(mopts {:});
vl_compilenn(行498)のエラーmex_link(opts、objs、mex_dir、 、flags.mexlink);
どのようなエラーが表示されますか? – rpd
今すぐご確認ください – Addee