我找到了解决方案,
必须移动到网络层图,取代层然后可以应用。
我附加特征提取的代码示例从amtlab修改输入的大小
解压缩(“MerchData.zip”);
imd = imageDatastore (“MerchData”,“IncludeSubfolders”,真的,“LabelSource”,“foldernames”);
[imdsTrain, imdsTest] = splitEachLabel (imd, 0.7,“随机”);
numTrainImages =元素个数(imdsTrain.Labels);
idx = randperm (numTrainImages 16);
图
为i = 1:16
次要情节(4 4,我)
I = readimage (imdsTrain idx (I));
imshow(我)
结束
网= resnet18;
analyzeNetwork(净)
inputSize = net.Layers (1) .InputSize;
%创建图层,将取代输入层
%你的图像的大小必须更大或等于输入的大小。
[28 28层= imageInputLayer (3),“名字”,“输入”,“归一化”,“zscore”);
%正常化和移动数据的意思
layer.Mean = lgraph.Layers (1, 1) .Mean;
layer.StandardDeviation = lgraph。层(1,1).StandardDeviation;
% %移动网络层图
lgraph = layerGraph(净);
newlgraph = replaceLayer (lgraph,“数据”层);
%再次组装工作款
网= assembleNetwork (newlgraph);
analyzeNetwork(净)
augimdsTrain = augmentedImageDatastore (inputSize (1:2), imdsTrain);
augimdsTest = augmentedImageDatastore (inputSize (1:2), imdsTest);
层=“pool5”;
featuresTrain =激活(净、augimdsTrain层,“OutputAs”,“渠道”);
featuresTrain =挤压(featuresTrain);
featuresTrain = featuresTrain ';
featuresTest =激活(净、augimdsTest层,“OutputAs”,“渠道”);
featuresTest =挤压(featuresTest);
featuresTest = featuresTest ';
谁featuresTrain
analyzeNetwork(净)
YTrain = imdsTrain.Labels;
欧美= imdsTest.Labels;
分类器= fitcecoc (featuresTrain YTrain);
YPred =预测(分类器,featuresTest);
idx = [1 5 10 15];
图
为i = 1:元素个数(idx)
次要情节(2,2,我)
I = readimage (imdsTest idx (I));
标签= YPred (idx (i));
imshow(我)
标题(char(标签)
结束
精度=意味着(YPred = =次)