Why I cant repeat nntool result?

1 view (last 30 days)
zmywahrheit
zmywahrheit on 21 Apr 2015
Commented: Greg Heath on 24 Apr 2015
I wanted to use codes to repeat it. All the parameters are the same and I copied all the weights from nntool to the generated m file. However, it can not give me accurate target results as nntool gave to me.
  3 Comments
zmywahrheit
zmywahrheit on 22 Apr 2015
Edited: zmywahrheit on 22 Apr 2015
function [y1] = myNeuralNetworkFunction(x1)
%MYNEURALNETWORKFUNCTION neural network simulation function.
%
% Generated by Neural Network Toolbox function genFunction, 21-Apr-2015 18:28:41.
%
% [y1] = myNeuralNetworkFunction(x1) takes these arguments:
% x = 16xQ matrix, input #1
% and returns:
% y = 1xQ matrix, output #1
% where Q is the number of samples.
%#ok<*RPMT0>
% ===== NEURAL NETWORK CONSTANTS =====
% Input 1
x1_step1_xoffset = [4.44;0;-10.2249;129.0924632;0;0;9;10;1;0;3;0;27.6414;0;0;0];
x1_step1_gain = [0.00373775883979966;0.111111111111111;0.0926822712717398;0.00151381078706761;2;0.333333333333333;0.0188679245283019;0.0208333333333333;0.0588235294117647;0.0645161290322581;0.027027027027027;0.2;0.00586066846784544;0.0555555555555556;0.4;0.666666666666667];
x1_step1_ymin = -1;
% Layer 1
b1 = [1.0187152477488607971;0.75546368634858018787;-0.74885827917346814431;0.49840389395597878286;0.40556335746536542608;0.36926239362124896326;0.21123730116657193912;-0.025373121452792912756;0.19967990101952995396;0.27041719258768764922;-0.40836152912273004922;-0.49895333981394524026;0.58280744543833351567;-0.98279507860101433803;-0.85307328904034396277];
IW1_1 = [0.021623484744762562493 -0.018729547913856961494 -0.4463095337965073961 0.11658736719799629722 0.1820883672252611718 -0.49980347081214338001 -0.004160165007411408683 -0.082218866386227537624 0.39917305997529339834 0.61907898643480729906 -0.1301702436426000753 0.14846716996946748846 0.38332367267454187099 0.1160773086298665796 0.15962567365300706079 -0.81549119765880584421;-0.10176757683786431807 -0.067082902494107324309 -0.24478093477504409003 0.14471594138371229876 -0.29774894183487810029 -0.15262040268887105965 -0.1986863270020334804 -0.26232351234069195556 0.12076020028427790487 0.23964909545605658781 -0.25164584469519668541 0.042810462694995617128 -0.0065787881505747162342 -0.32900178882780067857 0.31117611626381352918 -0.23405362834604623301;0.12642001515766773667 0.33785444088147437158 -0.35668556064442535902 0.068482427549264271449 -0.27659831693846009815 -0.05000011369585958404 -0.55287632646485118659 -0.18273422944920805766 0.36740541696062767318 -0.083338139434556784968 -0.085242419162411112166 -0.5084706279912846183 -0.24608516698393126387 0.33748127795134863494 -0.39502640692026746994 -0.73692558916202011154;-0.6024836200322895019 -0.044341517391508072921 0.77050640211124510337 0.67517290557074927104 0.10732996530031993498 -0.056070470095972400892 0.36145018684669921738 0.59180577881668994245 -0.062793441730618085317 -0.38766962046315128765 0.031648772372364131211 0.35006320617875125167 0.40827990477034670214 0.42839464093765761143 0.35428743585882521705 -0.88376568275760625237;-0.070694292106749476168 0.32371000911750785756 -0.54861817907246968051 -0.048991714583014378537 0.099183138491613601073 0.035463281719314898588 -0.17331118448100502061 -0.41584021655143516005 0.42910030147969091541 -0.11292108343009227278 -0.18113834644202786439 -0.087380999330328779084 -0.64096989986820518403 -0.98889498564086930621 0.14595010149925036202 -0.021614628789299143719;-0.054613454031374304709 0.24183805266020680369 -0.33931160461633469438 0.23508716012510333382 -0.22839672199252916696 0.40557937727428328145 0.31440148719921051645 0.062138991773293350551 -0.26859824380939545385 0.065983167140675549889 0.57995749608274271836 -0.30943415740875024333 0.14902627596684581146 -0.54694070553067097862 0.067651012378648206491 -0.48528487771831452235;0.047083020048724041895 0.12880558289986507314 -0.59400917851867540698 0.10794151475478487578 0.34986318694142370944 0.18679057874986843002 -0.23147659936162809369 0.0073143421783514392387 -0.086283885220526296278 -0.33002803393629370765 -0.024406428841466265567 -0.48965341982587790026 -0.31992183431446652442 -0.045819320894121037813 0.58283465600641481963 -0.30968005505786466713;-0.3899578417391355023 -0.3545014135780459319 0.11905622693406950341 -0.37971169719620306848 0.17049635475923849426 -0.17700412936504997252 -0.024330279753830768436 0.19511605725330882777 -0.41841029251049355331 -0.65596825287026527818 -0.24046404575081095634 0.1265011821005138648 0.043074609459639527642 0.0034185643483677996893 0.55447843109332373146 0.069441448706866457097;0.2165984661241129039 -0.03639162081514803887 -0.43480685896596982243 -0.23015794239894921125 -0.0061073632219754165479 0.13630716513286747493 -0.074504517783738150039 -0.020801561855184346611 -0.22676130995533175239 -0.26098279461622331254 -0.21400647569202768672 0.1926333324946392922 -0.45763035962025572223 -0.09621865524353988286 -0.26336989282172346138 -0.15495756018466588788;0.59226151882540312155 -0.11846113554004245039 0.1811301780101980119 0.11178390714198771505 -0.2639121408061909646 -0.23352989733955861751 -0.29149781037068411838 -0.043112544156266863205 0.0025936312271751344946 0.35163171433456030801 0.44304808428636716089 0.30308631041526185035 -0.25766484953169138672 -0.23995409434979564356 -0.64789012536203138826 -0.032048468293470910861;-0.39741292508115777515 0.033937845219689247167 0.21231650762250878217 -0.16953782105594311647 -0.40111432350039061268 0.76064845012240545064 -0.28650635121549933304 0.030500299138605389132 -0.14471965778510390011 -0.40312709703282850748 0.35751107611518712082 -0.31345831366352822078 -0.051574929318761376928 -0.16371365878678934003 -0.37979655532444256405 0.096985786826975159403;-0.10206950748650463201 0.2963128613567546088 -0.19784353761856096621 -0.3407339686979944382 0.0013000490374522467689 0.20453516605689817109 -0.072407456069634570928 0.18524576666476680331 0.34025151792148905505 0.13434184950876373876 -0.23004482630279216027 0.25951302727189096142 -0.11018146315880740505 0.18269127748774915965 -0.093677296755658653882 0.28015544786112972497;0.15804321766437562369 0.27736273470164291011 0.029885764775259726633 0.071305628812854279786 0.36335316955670526884 -0.074113555376563985955 0.37931599722472586489 0.17791751968753624635 -0.1209976805362879132 -0.3869303866517806445 0.05269103041043135538 0.00020431331478683724227 0.038762896212724287648 -0.39227080963337340735 -0.24936723713761579924 0.054042450731183008794;-0.93010226428395048615 -0.24592193293273242882 0.61063150629643236922 0.13251463249196523964 -0.37325973918559679499 0.25542482884626505069 0.35406453808947291328 0.45158322514291276972 -0.26417507175366061745 -0.76146453291028892707 0.031782236862040728897 -0.010010272582272590133 0.35527995663387901271 -0.13919861188674931274 -0.13718061928257815896 0.37830414218503993773;-0.21546932791073386548 0.26194025091142536521 0.34326841632467824939 0.052651407753684327517 0.29488725655765901656 -0.21435263996970860267 0.16487456563763155937 0.079291067227972883424 -0.07783122393518961124 -0.10225278949890470592 0.051321273549401601188 0.31206229131298474089 0.20356035099956140688 0.22621081144196322765 0.27719765247120053964 -0.18331648955562909742];
% Layer 2
b2 = -0.13483127316506471338;
IW2_1 = [0.27297526199238836275 -0.01061329768955520704 -0.017072594911850123151 -0.20712007366106333084 0.055965215774075628696 -0.40906560459621588155 0.28553803362971003077 0.2121924425974551498 0.48674934257347901578 0.092763713566969135949 -0.37525710716054566651 -0.41254929207087043252 -0.14795619655743660892 -0.22245882237440342544 -0.63015860115665145447 0.44851328525886757781];
LW2_1 = [-0.87783627413367593117 0.43448999000928678615 0.92595127483084715969 1.2425845410116103107 1.2418182495443916835 -0.73587261033737727534 -0.63558561108775402104 -0.86250864408726424237 0.37951627646893132395 -0.67129875596089905176 -0.89876237178417928142 -0.11890411404320742894 0.41562304333597371864 1.1287486653429303907 -0.20881407741400892508];
% Output 1
y1_step1_ymin = -1;
y1_step1_gain = 0.02000400080016;
y1_step1_xoffset = 0;
% ===== SIMULATION ========
% Dimensions
Q = size(x1,2); % samples
% Input 1
xp1 = mapminmax_apply(x1,x1_step1_gain,x1_step1_xoffset,x1_step1_ymin);
% Layer 1
a1 = tansig_apply(repmat(b1,1,Q) + IW1_1*xp1);
% Layer 2
a2 = repmat(b2,1,Q) + IW2_1*xp1 + LW2_1*a1;
% Output 1
y1 = mapminmax_reverse(a2,y1_step1_gain,y1_step1_xoffset,y1_step1_ymin);
end
% ===== MODULE FUNCTIONS ========
% Map Minimum and Maximum Input Processing Function
function y = mapminmax_apply(x,settings_gain,settings_xoffset,settings_ymin)
y = bsxfun(@minus,x,settings_xoffset);
y = bsxfun(@times,y,settings_gain);
y = bsxfun(@plus,y,settings_ymin);
end
% Sigmoid Symmetric Transfer Function
function a = tansig_apply(n)
a = 2 ./ (1 + exp(-2*n)) - 1;
end
% Map Minimum and Maximum Output Reverse-Processing Function
function x = mapminmax_reverse(y,settings_gain,settings_xoffset,settings_ymin)
x = bsxfun(@minus,y,settings_ymin);
x = bsxfun(@rdivide,x,settings_gain);
x = bsxfun(@plus,x,settings_xoffset);
end
zmywahrheit
zmywahrheit on 22 Apr 2015
I copied iw1_1 iw2_1 lw2_1 b1 and b2 from nntool to this code. What else do I need to repeat the work? Thank you!

Sign in to comment.

Accepted Answer

Greg Heath
Greg Heath on 22 Apr 2015
Frequently, the reason why two supposedly equivalent trainings don't yield the same result is because the initial state of the random number generator is not the same.
Frequently, the reason why testing of two supposedly equivalent nets doesn't yield the same result is because the input data normalization and output data denormalization are not the same.
Hope this helps.
Greg
  4 Comments
zmywahrheit
zmywahrheit on 23 Apr 2015
Edited: zmywahrheit on 23 Apr 2015
I just noticed that nntool forced the predicted values to a proper range. I think that is why nntool can get better result. As you can see the right figure was generated by nntool. In the left figure, the x axis is the real value(target) and the y axis is the values calculated by my function. How can I force my calculated values to a proper range? Thank you!
Greg Heath
Greg Heath on 24 Apr 2015
Maybe you need to filter the data of bad points before designing a model. I use the following the info before deciding to delete or modify data
minmax(x) = ?
minmax(t) = ?
plot(x,t)
zx = zscore(x)
zt = zscore(t)
minmax(zx) = ?
minmax(zt) = ?
plot(zx,zt)
Hope this helps. Greg

Sign in to comment.

More Answers (0)

Categories

Find more on Sequence and Numeric Feature Data Workflows in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!