手算以及使用線性神經網路和感知器

2021-07-29 23:42:02 字數 2245 閱讀 6926

% and_hand.m  

手算實現與邏輯

%% 清理

close all

clear,clc

%% 定義變數

p=[0,0,1,1;0,1,0,1]  

% 輸入向量

p=[ones(1,4);p]  

% 包含偏置的輸入向量

d=[0,0,0,1]  

% 期望輸出向量

% 初始化

w=[0,0,0]  

% 權值向量初始化為零向量

lr=maxlinlr(p)  

% 根據輸入矩陣求解最大學習率

max=200;  

% 最大迭代次數,根據經驗確定

%% 迴圈迭代

for i=1:max...

fprintf('第%d次迭代\n', i);

v=w*p;  

% 求出輸出

y=v;

disp('線性網路的二值輸出:');

yy=y>=0.5  

% 將模擬輸出轉化為二值輸出,以0.5為閾值

e=d-y;

m(i)=mse(e);  

% 均方誤差

fprintf('均方誤差: %f\n',m(i));

dw=lr*e*p';  

% 權值向量的調整量

fprintf('權值向量:\n');

w=w+dw  

% 調整權值向量

end

%% 顯示

plot([0,0,1],[0,1,0],'o');hold on;

plot(1,1,'d');

x=-2:.2:2;

y=1.5-x;

plot(x,y)

axis([-0.5,2,-0.5,2])

xlabel('x');  

ylabel('ylabel');

title('線性神經網路用於求解與邏輯')

legend('0','1','分類面');

% and_linearlayer.m  

用線性神經網路和感知器來實現與邏輯, 對比其結果, 理解線性神經網路和感知器的區別

%% 清理

close all

clear,clc

%% 定義變數

p=[0,0,1,1;0,1,0,1] % 輸入向量

d=[0,0,0,1] % 期望輸出向量

lr=maxlinlr(p,'bias') % 根據輸入矩陣求解最大學習率

%% 線性網路實現

net1=linearlayer(0,lr); % 建立線性網路

net1=train(net1,p,d);   % 線性網路訓練

%% 感知器實現

net2=newp([-1,1;-1,1],1,'hardlim');  

% 建立感知器

net2=train(net2,p,d);   % 感知器學習

%% 顯示

disp('線性網路輸出')  

% 命令列輸出

y1=sim(net1,p)

disp('線性網路二值輸出');

yy1=y1>=0.5

disp('線性網路最終權值:')

w1=[net1.iw, net1.b]

disp('感知器輸出')

y2=sim(net2,p)

disp('感知器二值輸出');

yy2=y2>=0.5

disp('感知器最終權值:')

w2=[net2.iw, net2.b]

plot([0,0,1],[0,1,0],'o');  

% 圖形視窗輸出

hold on;

plot(1,1,'d');

x=-2:.2:2;

y1=1/2/w1(2)-w1(1)/w1(2)*x-w1(3)/w1(2);   % 1/2是區分0和1的閾值

plot(x,y1,'-');

y2=-w2(1)/w2(2)*x-w2(3)/w2(2);  

% hardlim函式以0為閾值,分別輸出0或1

plot(x,y2,'--');

axis([-0.5,2,-0.5,2])

xlabel('x');  

ylabel('ylabel');

title('線性神經網路與感知器用於求解與邏輯')

legend('0','1','線性神經網路分類面','感知器分類面');

3 使用Keras 神經網路來擬合非線性模型

import keras import numpy as np import matplotlib.pyplot as plt sequential按順序構成的模型 from keras.models import sequential dense全連線層 from keras.layers imp...

感知器和神經網路訓練(公式推導及C 實現)

感知器是乙個二元線性分類器,其目標是找到乙個超平面將訓練樣本進行分隔 分類 其表示為 一般使用的啟用函式不是階躍函式,常用的有sigmoid函式 其導數 在1個樣本的訓練集上代價函式 最小均方誤差 通常為 c 12 a y 2 訓練過程中步長 學習速率 為 的 w 和b的新值為 w ib wi wi...

bp神經網路的簡單理解和使用

這裡構建的網路實際就是建立x到y的對映函式 a 1 1 10 輸入矩陣其實就是x t 1 1 5 6 1 2 期望矩陣就是y plot a,t net newff minmax a 5,1 trainlm 設定網路相關引數 net.trainparam.goal 0.001 net.trainpar...