Доброго времени суток! я новичок в матлабе, но в ближайшее время необходимо разобраться в нем и нейронных сетях. На данный момент задача - реализовать нейронную сеть которая будет классифицировать изображение 8 на 8 пикселей к определнному контексту. у меня есть матрица P с обучающими данными и T с целями: Код | imSize = [8 8]; nump = 3; % number of classes n = 50; % number of images per class
% Получаем данные изображений images1 = extract_images('d:\matlab\sharp.jpg'); images2 = extract_images('d:\matlab\smooth.jpg'); images3 = extract_images('d:\matlab\texture.jpg');
images1 = images1(1:n*2); images2 = images2(1:n*2); images3 = images3(1:n*2);
trainingImages = [images1(1:n), images2(1:n), images3(1:n)]; testImages = [images1(n+1:end), images2(n+1:end), images3(n+1:end)];
% Формируем данные изображений в виде векторов в одну матрицу P = zeros(n*nump, prod(imSize)); N = zeros(n*nump, prod(imSize));
% training images reshaped into columns in P % image size (8x8) reshaped to (1x64)
for i = 1:length(trainingImages) P(i,:) = trainingImages{i}(:).'; N(i,:) = testImages{i}(:).'; end
P = P'; N = N';
% Заполняем массив целей T = zeros(nump, n*nump);
T(1,1:n) = 1; T(2,n+1:n*2) = 1; T(3,n*2+1:end) = 1;
|
создаю нейронную сеть с помощью nprtool, полученный код: Код | inputs = P; targets = T;
% Create a Pattern Recognition Network hiddenLayerSize = 10; net = patternnet(hiddenLayerSize);
% Setup Division of Data for Training, Validation, Testing net.divideParam.trainRatio = 70/100; net.divideParam.valRatio = 15/100; net.divideParam.testRatio = 15/100;
% Train the Network [net,tr] = train(net,inputs,targets);
% Test the Network outputs = net(inputs); errors = gsubtract(targets,outputs); performance = perform(net,targets,outputs)
% View the Network view(net)
|
сохраняю сеть, пытаюсь протестировать: Код | img = imread('D:\matlab\test1.jpg'); Q = img(:).'; Q = Q'; a = sim( net, Q );
|
И получаю ошибки: Цитата | ??? Error using ==> minus Integers can only be combined with integers of the same class, or scalar doubles.
Error in ==> mapminmax>apply at 266 y = (x - xmin(:,copyQ)) .* gain(:,copyQ) + settings.ymin;
Error in ==> forward at 25 xij = pfcns(k).apply(xij,pfcns(k).settings);
Error in ==> pre_inputs at 9 x(i,:) = nnproc.forward(fcns.inputs(i).process,x(i,:));
Error in ==> y at 29 Pc = nnproc.pre_inputs(fcns,Xc);
Error in ==> network.sim at 132 [Y,Xf,Af] = nnsim.y(net,X,Xi,Ai,Q);
|
Подскажите на каком этапе я допускаю ошибку, и возможно вообще неправильный подход выбран...
|