MATLAB BP神經(jīng)網(wǎng)絡(luò)中仿真結(jié)果與手工計(jì)算不符合的解決辦法

前言

  • 最近在學(xué)習(xí)深度學(xué)習(xí),在編寫Auto Encoder提取隱含層的輸出值時(shí)發(fā)現(xiàn),使用MATLAB中自帶的sim函數(shù)計(jì)算得到的神經(jīng)網(wǎng)絡(luò)輸出值與自己手工計(jì)算的前向傳播輸出值不符合。
  • 經(jīng)過查閱后發(fā)現(xiàn)在舊版本中的newff函數(shù),神經(jīng)網(wǎng)絡(luò)輸入值的歸一化以及輸出值的反歸一化是編程者自己寫的,而新版本的newff函數(shù) MATLAB則會(huì)自動(dòng)幫我們完成歸一化與反歸一化。這意味著,如果手工計(jì)算用新版本newff函數(shù)訓(xùn)練出來的BP神經(jīng)網(wǎng)絡(luò),則需要進(jìn)行手工的歸一化與反歸一化。
clear
clc

% 輸入數(shù)據(jù)
X = [1 2 3;2 3 4;3 4 5;4 5 6];
% X = [1 2 3;
%      2 3 4;
%      3 4 5;
%      4 5 6];
% 期望歸一化到[-1, 1]區(qū)間中,即
% normX = [-1 0 1;
%      -1 0 1;
%      -1 0 1;
%      -1 0 1];
Y = X;

% 創(chuàng)建一個(gè)4個(gè)輸入神經(jīng)元,2個(gè)隱含層神經(jīng)元,4個(gè)輸出神經(jīng)元的BP神經(jīng)網(wǎng)絡(luò)
net = newff(X, Y, 2); % 新版本newff函數(shù)
% net = newff(minmax(X), [2 4], {'tansig', 'purelin'}); % 舊版本newff函數(shù)

% 設(shè)置訓(xùn)練數(shù)據(jù)集占原有數(shù)據(jù)集的百分比
net.divideParam.trainRatio = 1;
 
% 訓(xùn)練
net = train(net, X, X);

% 仿真,看結(jié)果
net(X)

% 歸一化到[-1 1]區(qū)間,
[normX, PS] = mapminmax(X);

% 為了測(cè)試我們拿第一個(gè)數(shù)據(jù)進(jìn)行手工前向計(jì)算
x = normX(:, 1);

% 計(jì)算隱含層輸出值
z1 = netsum(net.iw{1} * x, net.b{1})
a1 = tansig(z1)

% 計(jì)算輸出層輸出值
z2 = netsum(net.lw{2} * a1, net.b{2})
a2 = purelin(z2)

% 反歸一化
y = mapminmax('reverse', a2, PS);


disp(y);

disp(Y(:, 1));
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 昨天在跟朋友聊天的時(shí)候他問了我一個(gè)問題,大意上是:「你寫作有因?yàn)槊刻鞂懚絹碓娇靻??」。這個(gè)問題讓我稍微思考了一下...
    林家弘閱讀 232評(píng)論 0 0
  • frank的關(guān)鍵詞:1·業(yè)余碼字2·專職工作3·樸實(shí)真誠(chéng)的人4·35歲擁有25歲奮斗的心5·業(yè)余寫作,從零到賺錢2...
    五彩冰峰閱讀 175評(píng)論 0 0
  • 路遙,這個(gè)四十二歲便赍志而歿的優(yōu)秀作家。 論及路遙,語含不屑甚至輕蔑的,自然大有人在。那些傲慢而淺薄的編輯,那...
    林六壬閱讀 945評(píng)論 4 13
  • 恩田 公公1元 爸爸1元 媽媽1元 悲田 1元 敬田 1元 均已完成 有收入進(jìn)來,拿出百分之10
    星光2017閱讀 227評(píng)論 0 4

友情鏈接更多精彩內(nèi)容