CNNへの交差検定(Cross-Validation)の導入の仕方
10 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
プログラミング初心者です。
[imdsTrain,imdsValidation] = splitEachLabel(imds,0.5,'randomize');
help crossvarで検索すると、以下のようにでてきました。
TESTVAL = FUN(XTRAIN,XTEST)
こちらを、TESTVAL = FUN(imdsTrain, imdsValidation)とすると交差検定を導入できるという認識で
コンパイルしたのですが動きませんでした。
Undefined function or variable 'FUN'.
というエラーが出てしまいます。
交差検定の正しいやり方につきましてご教示いただけますと幸いです。
どうぞよろしくお願いいたします。
0 commentaires
Réponse acceptée
Tohru Kikawada
le 9 Fév 2019
crossvalのドキュメントに記載のある下記は指定する関数の戻り値と引数の一例です。
TESTVAL = FUN(XTRAIN,XTEST)
ドキュメントにあるいくつかの例題は試してみましたでしょうか。crossvalは様々な機械学習のアルゴリズムで使えるように汎用性のある関数ハンドルの受け渡しで実行されます。CNNで交差検定を実行する場合も下記のようにCNNのクラス分類結果を返すような関数を関数ハンドルとして渡してあげる必要があります。
%% データセットの読み込み
digitDatasetPath = fullfile(matlabroot,'toolbox','nnet','nndemos', ...
'nndatasets','DigitDataset');
imds = imageDatastore(digitDatasetPath, ...
'IncludeSubfolders',true,'LabelSource','foldernames');
%% ダミーのトレーニングインデックスを生成
X = (1:imds.numpartitions)';
y = imds.Labels;
%% 交差検定にCNNの予測ラベル関数のポインタを渡す
mcr = crossval('mcr',X,y,'Predfun',@(xtrain,ytrain,xtest)myCNNPredict(xtrain,ytrain,xtest,imds))
%% CNNを学習し、予測ラベルを出力する関数
function ypred = myCNNPredict(xtrain,ytrain,xtest,imds)
% 結果が一意になるように乱数シードをデフォルト値に設定
rng('default');
% ダミーの変数ベクトルを受けてimageDatastoreを学習用とテスト用に分割
imdsTrain = imageDatastore(imds.Files(xtrain));
imdsTrain.Labels = ytrain;
imdsValidation = imageDatastore(imds.Files(xtest));
% レイヤーの設定
layers = [
imageInputLayer([28 28 1])
convolution2dLayer(3,8,'Padding','same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2,'Stride',2)
convolution2dLayer(3,16,'Padding','same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2,'Stride',2)
convolution2dLayer(3,32,'Padding','same')
batchNormalizationLayer
reluLayer
fullyConnectedLayer(10)
softmaxLayer
classificationLayer];
options = trainingOptions('sgdm', ...
'InitialLearnRate',0.01, ...
'MaxEpochs',4, ...
'Shuffle','every-epoch', ...
'Verbose',false);
net = trainNetwork(imdsTrain,layers,options);
ypred = classify(net,imdsValidation);
end
4 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Deep Learning Toolbox dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!