您好,
在学习做matlab nerual network toolbox 帮助中的例子时,遇到了以下问题:
错误使用 trainNetwork (line 154)
尝试确定 "readData" 是否是函数名称时出错。
出错 temp2 (line 55)
net = trainNetwork(imdsTrain,layers,options);
原因:
尝试确定 "readData" 是否是函数名称时出错。
无法重新加载 'D:\Program Files\MATLAB\R2018a\bin\win64\sl_graphical_classes.dll'
求解决办法。
%% 源程序————————————————————————————
clc
clear varaibles
close all
%%
digitDatasetPath = fullfile(matlabroot,'toolbox','nnet','nndemos', ...
'nndatasets','DigitDataset');%图片所在文件夹
imds = imageDatastore(digitDatasetPath, ...
'IncludeSubfolders',true,'LabelSource','foldernames');
%%
figure;
perm = randperm(10000,20);
for i = 1:20
subplot(4,5,i);
imshow(imds.Files{perm(i)});
end
%%
labelCount = countEachLabel(imds);
%%
img = readimage(imds,1);
size(img)
%% Divide the data into training and validation data sets
numTrainFiles = 750;
[imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomize');
%% Define Network Architecture
layers = [
imageInputLayer([28 28 1])
convolution2dLayer(3,8,'Padding',1)
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2,'Stride',2)
convolution2dLayer(3,16,'Padding',1)
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2,'Stride',2)
convolution2dLayer(3,32,'Padding',1)
batchNormalizationLayer
reluLayer
fullyConnectedLayer(10)
softmaxLayer
classificationLayer];
%% Specify Training Options
options = trainingOptions('sgdm', ...
'MaxEpochs',4, ...
'ValidationData',imdsValidation, ...
'ValidationFrequency',30, ...
'Verbose',false, ...
'Plots','training-progress');
%% Train Network Using Training Data
net = trainNetwork(imdsTrain,layers,options);
%% Classify Validation Images and Compute Accuracy
YPred = classify(net,imdsValidation);
YValidation = imdsValidation.Labels;
accuracy = sum(YPred == YValidation)/numel(YValidation);