我建立了一个有1个隐层(10个神经元) 输入向量11 输出向量11 隐层输出层转移函数分别**‘tansig’,‘purelin’** 的简单BP神经网络用来拟合y = sinx
为了弄清楚其拟合结果的计算公式 将这个net训练后 我根据其权值和阀值
根据 y0_by_hand = purelin( w2 * tansig(w1*x0+b1) + b2) 这个式子
得到手动求出的预测值。
然后和 y0 = sim(net,x0) 对比
发现y0和y0_by_hand的值不相同
这是为何呢?
是式子写错了 还是 库函数sim的式子不是最初定义的 y=f2(W2*f1(W1p+b1)+b2)
麻烦了解的前辈们帮忙回答一下 谢过
clc, clear
P = rand(1,50)*2*pi; %训练集
T = sin(P); %预测集
[p,ps_input] = mapminmax(P,0,1); %归一化
[t,ps_out] = mapminmax(T,0,1);
net = newff(p,t,10,{'tansig','purelin'},'trainlm'); %1个隐层 10个神经元 输入向量1*1 输出向量1*1 隐层输出层转移函数分别'tansig','purelin'
net = train(net,p,t);
%% 用工具箱函数进行预测
x0 = 0:0.01:2*pi;
x0 = mapminmax('apply',x0,ps_input);
y0 = sim(net,x0);
y0 = mapminmax('reverse',y0,ps_out