天天看點

了解權值和偏差的變化程式

%了解權值和偏差的變化程式
%分類
P=[-6 -6.1 -4.1 -4 4 4.1 6 6.1];
T=[0.0 0.0 0.97 0.99 0.01 0.03 1 1];
%wv用于存儲權值
wv=[];
%bv用于存儲偏內插補點
bv=[];
err=[];
%賦權值和偏差的初值
W1=-0.0511;                              
b1=-2.4462;
wv1=W1;
bv1=b1;
lr=0.1
max_epoch=2000;
for Myi=1:max_epoch
    A1 = logsig(W1*P+b1*ones(1,8));         %計算輸出
    E = T-A1;                             %求誤差
    D1 = A1.*(1-A1).*E;                    %矩陣對應元素相乘
    dW1 = D1*P'*lr;                       %求權值增量
    db1 = D1*ones(8,1)*lr;                  %求偏差增量
    newWV = W1(1,1) + dW1(1,1);             %新的權值
    W1(1,1) = newWV; 
    wv =[wv newWV];
    newBV = b1(1)   + db1(1);               %新的偏差
    b1(1) = newBV;  
    bv =[bv newBV];
    SSE = sumsqr(E);                      %求誤差平方和
    err=[err   SSE];
    if (SSE<0.2)
        break;
    end
end
%W值的行向量、B值的行向量
Wrange=-1:0.1:1;
Brange=-3:0.2:2;            
ES=errsurf(P,T,Wrange,Brange,'logsig');       %求單神經元的誤差平面(隻用在單神經元中)
[C,h] =contour(Wrange,Brange,ES,6);      %作等高線圖,ES為高
%傳回等高線矩陣C,列向量h是線或對象的句柄,
%一條線一個句柄,這些被用作CLABEL的輸入,
%每個對象包含每個等高線的高度
clabel(C,h)                            %标上高度值
colormap cool                         %背景的顔色cool
hold on
%plot(w1,b1,'r*')
plot(wv1,bv1,'r+')
% plot([wv1 wv],[bv1 bv],'g+')                    %作權值和偏差變化曲線
plot(wv,bv,'g+');
hold off
figure(2)
plot(err)