matlab提供的结果与参数相同的自定义神经网络的结果不同?

matlab提供的结果与参数相同的自定义神经网络的结果不同?,matlab,neural-network,Matlab,Neural Network,我通过matlab神经网络工具箱训练了一个神经网络 在我保存了训练过的神经网络的权重和偏差后,我通过一些自定义代码计算了神经网络的结果,比如'out=poslin(W1*input+b1)' 然后,我根据神经网络工具箱提供的命令计算结果,如“out=net(input)” 但当权重、偏差、传递函数都相同时,结果不同。matlab的输出为“0.0221260335094049-0.60000000000000”;我的网络输出为“0.998704466284076-1” m文件是: load net

我通过matlab神经网络工具箱训练了一个神经网络

在我保存了训练过的神经网络的权重和偏差后,我通过一些自定义代码计算了神经网络的结果,比如'out=poslin(W1*input+b1)'

然后,我根据神经网络工具箱提供的命令计算结果,如“out=net(input)”

但当权重、偏差、传递函数都相同时,结果不同。matlab的输出为“0.0221260335094049-0.60000000000000”;我的网络输出为“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);
神经网络的结构是:

经过培训的网络可在以下位置找到:

此外,在训练网络时,我对两个隐藏层使用了“poslin”传递函数,对输出层使用了“tansig”传递函数

命令是:

net.layers{1}.transferFcn = 'poslin';
net.layers{2}.transferFcn = 'poslin';
net.layers{3}.transferFcn = 'tansig';

提前谢谢你

matlab神经工具箱网络的poslin激活函数是否存在于隐藏单元和输出上?谢谢您的回复!是的,我对两个隐藏层使用poslin传递函数,对输出层使用tansig传递函数。命令是'net.layers{1}.transferFcn='poslin';net.layers{2}.transferFcn='poslin';net.layers{3}.transferFcn='tansig';'从数学角度来看,不可能用相同的参数得到不同的结果。我同意你的部分代码,也许从神经工具箱中提取结果有问题?对不起,“从神经工具箱中提取结果”是什么意思?你是指定义b1、b2、b3、w1、w2、w3的方法吗?:)NN工具箱具有内置的规范化功能。很可能您的输入和输出将被线性转换。