我怎么能修改的第一层pre-trained款

44视图(30天)
我使用一款(resnet-50)特征提取。然而,一个类别的视觉特性非常小的调整功能删除数据。CNN和池层不要受到dimmension大小变化的影响。
当我试图改变输入大小我得到错误:
net.Layers (1) .InputSize = (280280 3)
你不能设置只读属性的InputSize ImageInputLayer。
我怎么能修改这一层呢?

答案(1)

威尔默阿里扎
威尔默阿里扎 2020年8月7日
我找到了解决方案,
必须移动到网络层图,取代层然后可以应用。
我附加特征提取的代码示例从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 = =次)

s manbetx 845

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!