Error in neural network

I'm novice in matlab and in neural network. My problem is to create network that will classificate images of 8x8 on 3 texture classes. 3 arrays are created( training set - P, targets - P, testing set):
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;
Then I create neural network with help nprtool, generated code: 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)
Save net and try to test on one image Q of size 8x8
img = imread('D:\matlab\test1.jpg');
Q = img(:).';
Q = Q';
a = sim( net, Q );
And get errors:
??? 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);
Help me, where is mistake in my code?
Sorry for my english

Réponses (2)

Walter Roberson
Walter Roberson le 5 Jan 2012

2 votes

imread() usually returns uint8 data. The NN operations including sim() must be passed double precision data and not uint8. This also applies to training.
belka0011
belka0011 le 5 Jan 2012

0 votes

Thank you!!! Now It works.

Catégories

En savoir plus sur Deep Learning Toolbox dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by