Matlab 自己根据BP网络的权值和阀值算出来的值为何和调用sim得到的不一样?

博主在Matlab中建立了一个BP神经网络,用于拟合y=sinx,网络结构为1输入,1输出,1个隐层含10个神经元。隐层使用'tansig',输出层使用'purelin'激活函数。训练网络后,博主尝试手动根据权重和阀值计算预测值,但手动计算的结果与使用sim函数得到的值不一致。问题在于不清楚手动计算的公式是否正确,还是sim函数内部实现与预期的不同。期待熟悉Matlab神经网络的读者解答。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我建立了一个有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
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值