【发布时间】:2020-03-10 21:08:00
【问题描述】:
我正在尝试实现一个模型,该模型将图像作为输入并给出 26 个数字的向量。我此时正在通过以下Matlab代码使用VGG-16:
analyzeNetwork(net);
NUM_OUTPUT = 26;
layers = net.Layers;
%output = fullyConnectedLayer(NUM_OUTPUT, ...
% 'Name','output_layer', ...
% 'WeightLearnRateFactor',10, ...
% 'BiasLearnRateFactor',10);
layers = [
layers(1:38)
fullyConnectedLayer(NUM_OUTPUT)
regressionLayer];
%layers(1:67) = freezeWeights(layers(1:67));
miniBatchSize = 5;
validationFrequency = floor(numel(YTrain)/miniBatchSize);
options = trainingOptions('sgdm',...
'InitialLearnRate',0.001, ...
'ValidationData',{XValidation,YValidation},...
'Plots','training-progress',...
'Verbose',false);
net = trainNetwork(XTrain,YTrain,layers,options);
YPred = predict(net,XValidation);
predictionError = YValidation - YPred;
thr = 10;
numCorrect = sum(abs(predictionError) < thr);
numImagesValidation = numel(YValidation);
accuracy = numCorrect/numImagesValidation;
rmse = sqrt(mean(predictionError.^2));
XTrain 和 YTrain 的形状如下:
XTrain: 224 224 3 140
YTrain: 26 140
通过运行上面的代码(它是代码的一部分而不是全部)我得到以下错误:
使用 trainNetwork 时出错(第 170 行) X 和 Y 中的观察数不一致。
如果有人能帮助我找出问题所在,我将不胜感激,因为据我所知,两者中的样本数量是相等的,其余维度没有必要相等。
【问题讨论】:
标签: matlab regression transfer-learning