Нейронная сеть с использованием MATLAB - PullRequest
2 голосов
/ 07 августа 2010

У меня есть тренировочный набор, который имеет вход и выход таким образом:

Input:
0.832 64.643
0.818 78.843
1.776 45.049
0.597 88.302
1.412 63.458
1.468 49.535
1.985 33.387
2.073 30.279
1.431 55.231
1.116 68.521
1.617 44.362
2.159 66.512

Output:
0 0 1
0 0 1
0 1 0
0 0 1
0 0 1
1 0 0
0 0 1
1 0 0
1 0 0
0 0 1
0 0 1
0 1 0
1 0 0
1 0 0
0 1 0
0 1 0

Мне нужно реализовать одну линейную нейронную сеть, которая может наилучшим образом представлять набор данных в MATLAB . Каков будет алгоритм сделать это в MATLAB?

Целевым выходом является «1 для определенного класса, которому принадлежит соответствующий вход, и« 0 для оставшихся 2 выходов.

1 Ответ

8 голосов
/ 07 августа 2010

Рассмотрим этот пример обучения прямой связи ANN одного скрытого слоя (с 3 узлами).Поскольку ваши данные имеют больше выходных точек, чем входных, я использую демонстрационный набор данных, но идея та же:

%# load sample data
laod simpleclass_dataset
input = simpleclassInputs;          %# 2x1000, 2-dimensional points
output = simpleclassTargets;        %# 4x1000, 4 classes

%# split data into training/testing sets
trainInd = 1:500;
testInd = 501:1000;

%# create ANN and initialize network weights
net = newpr(input, output, 3);
net = init(net);
net.trainParam.epochs = 25;        %# max number of iterations

%# learn net weights from training data
net = train(net, input(:,trainInd), output(:,trainInd));

%# predict output of net on testing data
pred = sim(net, input(:,testInd));

%# classification confusion matrix
[err,cm] = confusion(output(:,testInd), pred);

Вывод:

err =
     0.075075
cm =
    81     0     0     0
     0    82     0     0
     9     0    52    16
     0     0     0    93

Очевидно,вам понадобится доступ к Neural Network Toolbox.

...