我通过matlab神经网络工具箱训练了一个神经网络 .
在保存训练好的神经网络的权重和偏差后,我通过一些自定义的代码计算了神经网络的结果,如'out = poslin(W1 * input b1)' .
然后我计算了神经网络工具箱提供的命令的结果,比如'out = net(input)' .
但是当权重,偏差,传递函数都相同时,结果是不同的 . matlab的输出为'0.0221260335094049 -0.600000000000000';我的网络输出是'0.998704466284076 -1' .
m文件是:
load net_save;
view(net_save);
input = [-0.6000;0;0;0;0;0];
%% the result of matlab defined neural network
out_matlab = net_save(input);
% save the weights and bias of the loaded network
b1 = net_save.b{1};
b2 = net_save.b{2};
b3 = net_save.b{3};
w1 = net_save.iw{1};
w2 = net_save.lw{2,1};
w3 = net_save.lw{3,2};
%% the result of own defined neural network
in = input;
in_layer1 = poslin(w1*in + b1);
in_layer2 = poslin(w2*in_layer1+b2);
out = tansig(w3*in_layer2+b3);
神经网络的结构是:two hidden layers with 400 and 300 nodes
训练有素的网络可以在这里找到:train network
此外,在训练网络时,我使用'poslin'传递函数用于两个隐藏层,'tansig'传递函数用于输出层 .
命令是:
net.layers{1}.transferFcn = 'poslin';
net.layers{2}.transferFcn = 'poslin';
net.layers{3}.transferFcn = 'tansig';
先感谢您 !