使用回饋式神經網路實現乙個XOR的非線性分類

2021-06-25 17:53:26 字數 1485 閱讀 4796

不多說了,說多了都是淚,用矩陣寫法死活出錯。無奈只好for迴圈來寫了。delay為1步,實現對上乙個xor的**分析。測試效果基本達到100%。看**吧:

f = @(x)1./(1+exp(-x));

df=@(x)f(x).*(1-f(x));

delta=@(x, y)x==y;

% net config

alpha = 4;

w = rand(3, 6)*2 - 1;

p1 = zeros(3, 6);

p2 = p1;

p3 = p2;

% feedforward

x = randi([0, 1], 2, 1);

t = xor(x(1), x(2));

y = zeros(3, 1);

z = [1; x; y];

s = w*z;

y = f(s);

for i = 1:1000

x = randi([0, 1], 2, 1);

z = [1; x; y];

s = w*z;

y = f(s);

for j = 1:3

for k = 1:6

q1=df(s(1))*(w(1,4)*p1(j,k) + w(1,5)*p2(j,k) + w(1,6)*p3(j,k) + delta(1,j)*z(k));

q2=df(s(2))*(w(2,4)*p1(j,k) + w(2,5)*p2(j,k) + w(2,6)*p3(j,k) + delta(2,j)*z(k));

q3=df(s(3))*(w(3,4)*p1(j,k) + w(3,5)*p2(j,k) + w(3,6)*p3(j,k) + delta(3,j)*z(k));

p1(j,k)=q1;

p2(j,k)=q2;

p3(j,k)=q3;

endend

e = t - y(3);

w = w + alpha*e*p3;

t = xor(x(1), x(2));

end%test

x = randi([0, 1], 2, 1);

y = zeros(3, 1);

z = [1; x; y];

s = w*z;

y = f(s);

t = xor(x(1), x(2));

count = 0;

for i = 1:1000

x = randi([0, 1], 2, 1);

z = [1; x; y];

y = f(w*z);

if y(3) >= 0.5

if t == 1

count = count+1;

endelse

if t == 0

count = count+1;

endend

t = xor(x(1), x(2));

endcount

乙個神經網路

機器學習三要素 資料 演算法 算力 1 機器學習,就是在任務 t 上,隨經驗 e 的增加,效果 p 隨之增加。2 機器學習的過程是通過大量資料的輸入,生成乙個模型,再利用這個生成的 模型,實現對結果的 3 龐大的神經網路是基於神經元結構的,是輸入乘以權重,再求和,再過非線 性函式的過程。檔案讀操作 ...

動手實現乙個簡單神經網路

import numpy as np 定義乙個啟用函式 defsigmoid x,deriv false if deriv true return x 1 x return 1 1 np.exp x 構造樣本 x np.array 1,0,1,0,1,1 1,1,1,0,1,1 1,0,1,0,0,...

實現乙個最簡單的神經網路

這次實現乙個最簡單的神經網路,這個神經網路能判斷輸入的是奇數還是偶數通常咱們寫程式 就要寫成這樣了 if inputnumber 2 else 但是神經網路不是這樣的 首先來想一下,嬰兒時怎麼學習的。嬰兒要學習乙個東西,比如漢語 嬰兒在剛出生的時候是不會任何和漢語相關的知識的 是嬰兒在後來逐漸的學習...