初学者对BP神经网络的疑惑
本人是新手,刚刚接触神经网络,看到书上有一个利用BP算法进行药物销售预测的程序,就自己试了一下,但是发现很多问题。程序如下:%药物出售情况%月份1234567891011...
本人是新手,刚刚接触神经网络,看到书上有一个利用BP算法进行药物销售预测的程序,就自己试了一下,但是发现很多问题。程序如下:
%药物出售情况
%月份 1 2 3 4 5 6 7 8 9 10 11 12
%销量 2056 2395 2600 2298 1634 1600 1873 1478 1900 1500 2046 1556
%输入层3节点,隐含层5节点,输出层1节点
clear;
clc;
P=[0.7908 0.9212 1.0000; %以每三个月的销售量归一化处理后作为输入
0.9212 1.0000 0.8838;
1.0000 0.8838 0.6285;
0.8838 0.6285 0.6154;
0.6285 0.6154 0.7204;
0.6154 0.7204 0.5685;
0.7204 0.5685 0.7308;
0.5685 0.7308 0.5769;
0.7308 0.5769 0.7869;
];
T=[0.8838 0.6285 0.6154 0.7204 0.5685 0.7308 0.5769 0.7869 0.5985]; %以第四个月的销售粮归一化处理后作为目标向量
net=newff([0 1;0 1;0 1],[10,1],{'tansig','logsig'},'traingd'); %创建一个BP神经网络,每一个输入向量的取值范围为[0,1],隐含层有5个神经元,输出层有1个神经元,隐含层的激活函数为tansig,输出层的激活函数为logsig,训练函数为梯度下降函数
net.trainParam.epochs=15000;
net.trainParam.goal=0.01;
net.trainParam.lr=0.015; %设置学习速率为0.015
net=train(net,P',T); %训练
sim(net,P') %仿真,自己加的
仿真结果为0.6823 0.7110 0.6882 0.5831 0.6717 0.7344 0.6443 0.7559 0.6459 。
我就是用输入的样本来仿真的,为什么结果与期望输出相差这么大呢?是不是我的程序有问题,还是说BP网络精度就是这样,有没有什么提高精度的方法呢?
当样本数多于一个的时候,算法到底是怎么算的啊?是不是用一个样本调整好权值之后再换下一个样本,这样的话之前调整好的权值不就又变了吗? 展开
%药物出售情况
%月份 1 2 3 4 5 6 7 8 9 10 11 12
%销量 2056 2395 2600 2298 1634 1600 1873 1478 1900 1500 2046 1556
%输入层3节点,隐含层5节点,输出层1节点
clear;
clc;
P=[0.7908 0.9212 1.0000; %以每三个月的销售量归一化处理后作为输入
0.9212 1.0000 0.8838;
1.0000 0.8838 0.6285;
0.8838 0.6285 0.6154;
0.6285 0.6154 0.7204;
0.6154 0.7204 0.5685;
0.7204 0.5685 0.7308;
0.5685 0.7308 0.5769;
0.7308 0.5769 0.7869;
];
T=[0.8838 0.6285 0.6154 0.7204 0.5685 0.7308 0.5769 0.7869 0.5985]; %以第四个月的销售粮归一化处理后作为目标向量
net=newff([0 1;0 1;0 1],[10,1],{'tansig','logsig'},'traingd'); %创建一个BP神经网络,每一个输入向量的取值范围为[0,1],隐含层有5个神经元,输出层有1个神经元,隐含层的激活函数为tansig,输出层的激活函数为logsig,训练函数为梯度下降函数
net.trainParam.epochs=15000;
net.trainParam.goal=0.01;
net.trainParam.lr=0.015; %设置学习速率为0.015
net=train(net,P',T); %训练
sim(net,P') %仿真,自己加的
仿真结果为0.6823 0.7110 0.6882 0.5831 0.6717 0.7344 0.6443 0.7559 0.6459 。
我就是用输入的样本来仿真的,为什么结果与期望输出相差这么大呢?是不是我的程序有问题,还是说BP网络精度就是这样,有没有什么提高精度的方法呢?
当样本数多于一个的时候,算法到底是怎么算的啊?是不是用一个样本调整好权值之后再换下一个样本,这样的话之前调整好的权值不就又变了吗? 展开
展开全部
程序没问题。肯定是归一化数据有问题啦,建议用matlab归一化函数试试。
[pn,maxp,minp,tn,maxt,mint]=premnmx(P',T)
也可自己编程序写很简单的
[pn,maxp,minp,tn,maxt,mint]=premnmx(P',T)
也可自己编程序写很简单的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
科普中国·科学百科:BP神经网络
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询