基于matlab的神经网络算法拟合三角函数

神经网络算法通过计算机自主学习,从而拟合曲线。其本质是通过修改权值再与参照值对比,然后反向传播再次修改权值,最终将误差控制在一定范围之内,训练完成。
神经网络含有输入层,隐藏层,输出层,在拟合过程中,通常使用非线性激活函数,如logsig,tansig。
其中logsig具体为:
logsig tansig具体为:
tansig 函数图像为:
激活函数图像 这些函数的本质是将阶跃函数变得缓和,从而使权值改变过程变得更加稳定。
下面通过matlab来观察神经网络的具体效果。
首先,设定神经网络函数nn:

function [net] = nn(var1,var2)
net =newff(minmax(var1),[8,1],{'logsig' 'purelin'},'trainlm');
net.trainparam.epochs = 9999;
net.trainparam.goal = 0.001;
net.trainparam.lr = 0.6;
net = train(net,var1,var2);
end

在用m文件调用该函数,实现具体功能,我们选择三角函数来演示:

p = unifrnd(-12,15,1,70);

t1 = sin(p)
t2 = cos(p/2);
%s = [0:0.1:7];
s1 = [-10:0.1:10];
t = t1 .* t2
p0 = linspace(-10,10,500);
t0 = sin(p0).*cos(p0/2);

figure,plot(p0,t0,'x');
%y = sim(net,s1 - 2*pi*floor(s1/(2*pi)));
nn1 = nn(p,t1);
nn2 = nn(p,t2);

y1 = sim(nn1,s1 - 2*pi*fix(s1/(2*pi)));
y2 = sim(nn2,s1 - 4*pi*fix(s1/(4*pi)));
%figure,plot(s1,y2,'x')
y = y1.*y2;
figure,plot(s1,y,'x');

运行后结果:
直接计算图:
直接计算图神经网络拟合图:
神经网络拟合图细心的读者会发现,我通过s1 - 4pifix(s1/(4pi))增加了周期扩展的功能,这样即使我们将s1 = [-10:0.1:10];改为s1 = [-20:0.1:20];在训练范围数据在外,我们依然可以得到预期结果:
周期拓展图 这也说明了 计算机是无法完全通过无监督学习达到完备水平,必须增加先验知识才能进一步提高其能力。这里的先验知识就是告诉计算机三角函数是具有周期性的。
神经网络系统是模拟人脑的结构构造的体系,在图像识别领域,卷积神经网络算法(CNN)表现了很好的效果。下图是通过CNN算法的识别效果:
CNN算法识别

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值