天天看點

matlab 神經網絡工具箱的實用

0. 其他處理

  • 計時:
    tic
    net = train(net, X, y);
    toc           

1. 一個簡單的 demo(單層感覺器)

P = [1, 1, 1, 1, 0, 0, 0, 0; 0, 0, 1, 1, 0, 1, 1, 0; 0, 1, 0, 1, 1, 0, 1, 0];
            % 每一清單示一個輸入樣本
T = [-1, 1, 1, 1, -1, -1, 1, -1];
            % 表示輸出值
p = [0, 1; 0, 1; 0, 1];
            % 每一行表示參數的取值範圍
t = 1;
            % 輸出值的個數;

% 模型的定義
net = newp(p, t, 'hardlims');
            % newp:new perceptron

net = train(net, P, T);
            % 訓練的過程;
            % 此時得到的 net 便是最終訓練好的模型;

% 測試
newP = [0, 1, 1]';
newT = sim(net, newP)
newP = [0, 1, 0]';
newT = sim(net, newP)           

2. nntool

神經網絡的可視化顯示方式。

  • 先輸入 data,再定義 network,最後 train
  • 通過 simulate 進行仿真測試;

3. BP 神經網絡的建立

  • 通過 newff
    % 樣本矩陣(trainx, testx)以每一列為一個單獨的樣本,每一個行為一個屬性,
    % target 目标值(trainy, testy)為一個行向量
    trainx, trainy
    testx, testy
    
    % 建立 BP 網絡
    net = newff(trainx, trainy);
    
    % 接口必須統一,方能識别;
    net.trainParam.epochs = 1500;       % 最大訓練次數
    net.trainParam.goal = 1e-13;        % 目标誤差
    net.trainParam.show = 1;            % 顯示級别
    
    % 接受訓練樣本,進行訓練
    net = train(net, trainx, trainy);
    
    % 在測試集上進行測試
    predicted_y = net(testx);           
  • 通過 feedforwardnet
    net = feedforwardnet([], 'trainlm');        % 第一個參數控制神經網絡隐層的拓撲結構,其實就是各個隐層的神經元數目;
    net.trainParam.epochs = ...;
    net.trainParam.goal = ...;
    tic
    net = train(net, X, y);                     % X 構成輸入層,y 構成輸出層;
    toc           

繼續閱讀