無名関数の原理
8 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
初心者です。
以下のコードについて、無名関数の仕組みで理解できない部分があります。
無名関数の(xtrain,ytrain,xtest,これらの引数がどのタイミングで生成されているのか分かりません。
教えてください。
%% ライブラリの選択
library='MATLAB';
global laps
laps = 0;
%% データセットの読み込み
digitDatasetPath = fullfile(matlabroot,'toolbox','nnet','nndemos', ...
'nndatasets','DigitDataset');
imds = imageDatastore(digitDatasetPath, ...
'IncludeSubfolders',true,'LabelSource','foldernames');
%% ダミーのトレーニングインデックスを生成
X = (1:imds.numpartitions)';
y = imds.Labels;
%% 交差検定にCNNの予測ラベル関数のポインタを渡す
Nanasi=@(xtrain,ytrain,xtest)myCNNPredict(xtrain,ytrain,xtest,imds,library,laps);
mcr = crossval('mcr',X,y,'Predfun',Nanasi)
%% CNNを学習し、予測ラベルを出力する関数
function ypred = myCNNPredict(xtrain,ytrain,xtest,imds,library,laps)
switch library
case 'MATLAB'
% 結果が一意になるように乱数シードをデフォルト値に設定
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);
case 'HALCON'
%%%HALCON
[RateTable,trainedNet,options]=HalconTestC(laps);
ypred=categorical(RateTable.Var3);
laps=laps+1;
end
end
0 comentarios
Respuestas (1)
Tohru Kikawada
el 2 de Feb. de 2021
3つの引数 xtrain,ytrain,xtest は交差検定の関数として呼び出された際、値が渡されます。
mcr = crossval('mcr',X,y,'Predfun',Nanasi)
無名関数を定義しただけですと実行はされていないことになります。
こちらは通常の function 識別子で関数を定義した際と同様の挙動となります。
ご参考になれば幸いです。
0 comentarios
Ver también
Categorías
Más información sobre イメージを使用した深層学習 en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!