簡體   English   中英

如何在Matlab中設計MLP神經網絡?

[英]How to desig MLP neural network in Matlab?

嗨,我用三層神經網絡設計了XOR。 現在我有一個類似於xor的新問題,但我仍然無法弄清楚如何解決它。

這是問題所在:

在此輸入圖像描述

我想區分紅色區域和藍色區域。我可以在垂直方向上區域為-1到1,水平區域為-1到1。

任何身體能給我一個線索嗎? 或matlab中的某種示例代碼或網絡配置?

當我了解ANN概念時,我有類似的任務,我將與您分享代碼,只需要很少的更改即可達到目標。

clear all
close all
K1size = 200;
K2size = 300;
K1 = randn(K1size,2) - [ones(K1size,1)*2 ones(K1size,1)];
K2 = randn(K2size,2) + [ones(K2size,1) ones(K2size,1)*2];
figure(1)
plot(K1(1, 1), K1(1, 2), 'ro');
hold on
for i = 1:200
    plot(K1(i, 1), K1(i, 2), 'ro');
end;
for i = 1:300
    plot(K2(i, 1), K2(i, 2), 'bx');
end;
xlim([-5 5]);
ylim([-5 5]);
hold off
input = [K1 ;K2];
target = [zeros(K1size,1); ones(K2size,1)]; %K1 data gets target values of zero, K2 - ones

網絡設置

net = fitnet(5);
net.trainParam.min_grad = 0.000001;
net.trainParam.epochs = 200;
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;
net.trainParam.max_fail = 15;
net.layers{1}.transferFcn = 'logsig';

培訓

net = train(net, inputN', targetN');
yN = net(inputN');

我們正在使表面呈現輪廓:

n = 50;
xx = linspace(-20, 20, n);
yy = linspace(-20, 20, n);
[X, Y] = meshgrid(xx, yy);
Z = zeros(n, n);

從整個網格的訓練網絡計算值(我們將看到兩種數據類型是如何分開的)

    G =  net( [Y(:)' ; X(:)'] ) ; %  0 <= G <=1, like targets, so we can use it to make surface
    Z = vec2mat(G, n);

繪制並顯示輪廓

figure(2)
surf(X, Y, Z);
figure(1)
hold on
contour(X,Y,Z,1, 'linewidth',4)

結果 圖1和圖2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM