不多說了,說多了都是淚,用矩陣寫法死活出錯。無奈只好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 但是神經網路不是這樣的 首先來想一下,嬰兒時怎麼學習的。嬰兒要學習乙個東西,比如漢語 嬰兒在剛出生的時候是不會任何和漢語相關的知識的 是嬰兒在後來逐漸的學習...