matlab解决线性神经网络问题

xiaoxiao2021-02-28  33

博主是MATLAB和神经网络的初学者,也是首次撰写博客。

刚开始研究神经网络,出现了很多问题,但是查询了很多资料也找不到答案。这里分享我解决问题所学习到的知识。

问题很简单: excel随机生成50组,每组3个-1到1的随机数。(省的考虑归一化的问题)result是3个输入的和。

input1input2input3result0.699522-0.21806-0.117180.3642810.1072020.391985-0.61678-0.11759-0.98422-0.0810.11573-0.94949-0.156670.118392-0.58789-0.62617-0.37764-0.29995-0.62596-1.303540.29992-0.68941-0.59552-0.985010.9009280.0160550.8727961.7897780.9092560.373775-0.834050.448985 前30个做训练,20个做测试。

lc clear close all num = xlsread('D:\matlab\b.xlsx'); inputtrain = zeros(30,3); inputtrain(1:30,:) = num(1:30,1:3); resulttrain(1:30,1) = num(1:30,4); inputtest = zeros(10,3); inputtest(1:20,:) = num(31:50,1:3); inputtest=inputtest'; inputtrain=inputtrain'; resulttrain=resulttrain'; %建立相应的BP网络 net=newff(minmax(inputtrain),[3,1],{'logsig','tansig'},'traingdx');%tansig,purelin %对没有训练的网络仿真 %y1=sim(net,p); %训练网络 net.trainParam.epochs=2000; net.trainParam.lr=0.00001; net.trainParam.goal=0.00001; net=train(net,inputtrain,resulttrain); ty=sim(net,inputtest); train1=sim(net,inputtrain); ty=ty'; plot(ty(:,1),'ro') hold on plot(num(31:50,4),'k') hold off如此简单的程序,训练收敛的非常快,测试结果也不尽如人意。

后来发现

net=newff(minmax(inputtrain),[3,1],{'logsig','tansig'},'traingdx');%tansig,purelin是传递函数选择的问题,面对线性问题如果选用purelin作为传递函数效果就好得多

下面列出全部代码

clc clear close all num = xlsread('D:\matlab\b.xlsx'); inputtrain = zeros(30,3); inputtrain(1:30,:) = num(1:30,1:3); resulttrain(1:30,1) = num(1:30,4); inputtest = zeros(10,3); inputtest(1:20,:) = num(31:50,1:3); inputtest=inputtest'; inputtrain=inputtrain'; resulttrain=resulttrain'; %建立相应的BP网络 net=newff(minmax(inputtrain),[3,1],{'purelin','purelin'},'traingdx');%tansig,purelin %对没有训练的网络仿真 %y1=sim(net,p); %训练网络 net.trainParam.epochs=2000; net.trainParam.lr=0.00001; net.trainParam.goal=0.00001; net=train(net,inputtrain,resulttrain); ty=sim(net,inputtest); train1=sim(net,inputtrain); ty=ty'; plot(ty(:,1),'ro') hold on plot(num(31:50,4),'k') hold off

训练的结果:

效果明显好多了,除此之外第二层隐藏层的神经元数量不能太多,不然会产生过拟合现象。

关于不同传递函数的实质区别还需要深入研究,

转载请注明原文地址: https://www.6miu.com/read-600303.html

最新回复(0)