我创建了一个神经网络。 原文:
load dati.mat; inputs=dati(:,1:8) ; targets=dati(:,9) ; hiddenLayerSize = 10; net = patternnet(hiddenLayerSize); net.inputs{1}.processFcns = { removeconstantrows , mapminmax , mapstd , processpca }; net.outputs{2}.processFcns = { removeconstantrows , mapminmax , mapstd , processpca }; net = struct(net); net.inputs{1}.processParams{2}.ymin = 0; net.inputs{1}.processParams{4}.maxfrac = 0.02; net.outputs{2}.processParams{4}.maxfrac = 0.02; net.outputs{2}.processParams{2}.ymin = 0; net = network(net); net.divideFcn = divideind ; net.divideMode = sample ; % Divide up every sample net.divideParam.trainInd = 1:428; net.divideParam.valInd = 429:520; net.divideParam.testInd = 521:612; net.trainFcn = trainscg ; % Scaled conjugate gradient backpropagation net.performFcn = mse ; % Mean squared error net.plotFcns = { plotperform , plottrainstate , ploterrhist , plotregression , plotconfusion , plotroc }; net=init(net); net.trainParam.max_fail=20; [net,tr] = train(net,inputs,targets); outputs = net(inputs); errors = gsubtract(targets,outputs); performance = perform(net,targets,outputs)
Now I want to save the weights and biases of the network and write the equation. I had saved the weights and biases:
W1=net.IW{1,1}; W2=net.LW{2,1}; b1=net.b{1,1}; b2=net.b{2,1};
So, I ve done the data preprocessing and I wrote the following equation
max_range=0; [y,ps]=removeconstantrows(input, max_range); ymin=0; ymax=1; [y,ps2]=mapminmax(y,ymin,ymax); ymean=0; ystd=1; y=mapstd(x,ymean,ystd); maxfrac=0.02; y=processpca(y,maxfrac); in=y ; uscita=tansig(W2*(tansig(W1*in+b1))+b2);
But with the same input input=[1:8] I get different results. why? What s wrong? Help me please! It s important!
I use Matlab R2010B