Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нейронные сети в matlab, возникает ошибка при симуляции 
V
    Опции темы
belka0107
Дата 4.1.2012, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 31.10.2006

Репутация: нет
Всего: нет



Доброго времени суток!
я новичок в матлабе, но в ближайшее время необходимо разобраться в нем и нейронных сетях.
На данный момент задача - реализовать нейронную сеть которая будет классифицировать изображение 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);


Подскажите на каком этапе я допускаю ошибку, и возможно вообще неправильный подход выбран...
PM MAIL   Вверх
belka0107
Дата 6.1.2012, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 31.10.2006

Репутация: нет
Всего: нет



оказалась ошибка с типом в imread, надо было преобразовать в double
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Математические пакеты | Следующая тема »


 




[ Время генерации скрипта: 0.1046 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.