Нейрону жесткого предела с 2 входами не удается правильно классифицировать 5 входных векторов, потому что они линейно неотделимы.
Каждый из этих пяти вектор-столбцов в X задает входные векторы с 2 элементами, и вектор-строка T задает целевые категории вектора. Постройте эти векторы с PLOTPV.
X = [ -0.5 -0.5 +0.3 -0.1 -0.8; ...
-0.5 +0.5 -0.5 +1.0 +0.0 ];
T = [1 1 0 0 0];
plotpv(X,T);
perceptron должен правильно классифицировать входные векторы на X в категории, заданные T. Поскольку два вида входных векторов не могут быть разделены прямой линией, perceptron не сможет сделать это.
Здесь начальная буква perceptron создается и конфигурируется. (Шаг настройки является обычно дополнительным, когда он выполняется автоматически, АДАПТИРУЮТСЯ и ОБУЧАЮТСЯ.)
net = perceptron; net = configure(net,X,T);
Добавьте начальную попытку нейрона классификации к графику. Начальные веса обнуляются, таким образом, любой вход дает тот же выход, и линия классификации даже не появляется на графике.
hold on
plotpv(X,T);
linehandle = plotpc(net.IW{1},net.b{1});
АДАПТИРУЙТЕСЬ возвращает новую сеть после изучения на входе и целевых данных, выходных параметрах и ошибке. Цикл позволяет сети неоднократно адаптироваться, строит график классификации и останавливается после 25 итераций.
for a = 1:25 [net,Y,E] = adapt(net,X,T); linehandle = plotpc(net.IW{1},net.b{1},linehandle); drawnow; end;
Обратите внимание на то, что нулевая ошибка никогда не получалась. Несмотря на обучение, perceptron не стал приемлемым классификатором. Только способность классифицировать линейно отделимые данные является основным ограничением perceptrons.