matlab编程关于BP算法的问题

2024-05-17 13:48

1. matlab编程关于BP算法的问题

clear
P=[...]%输入
T=[...]%输出
% 创建一个新的前向神经网络
net_1=newff(minmax(P),[10,1],{'tansig','purelin'},'traingdm');
% 当前输入层权值和阈值
inputWeights=net_1.IW{1,1};
inputbias=net_1.b{1};
% 当前网络层权值和阈值
layerWeights=net_1.LW{2,1};
layerbias=net_1.b{2};
% 设置训练参数
net_1.trainParam.show = 50;
net_1.trainParam.lr = 0.05;
net_1.trainParam.mc = 0.9;
net_1.trainParam.epochs = 1000;
net_1.trainParam.goal = 1e-3;
% 调用 TRAINGDM 算法训练 BP 网络
[net_1,tr]=train(net_1,P,T);
% 对 BP 网络进行仿真
A = sim(net_1,P);
% 计算仿真误差
E = T - A;
MSE=mse(E)

x=[1 2 3]'
sim(net_1,x)

matlab编程关于BP算法的问题

2. bp神经网络股票价格预测的MATLAB编程

P=[];‘输入,开盘价,最高价,最低价,收盘价成交量依次5天的数据’
T=[];’输出,即第二日的收盘’
net=newff(minmax(P),[7,1],{'tansig','logsig'},'traingdx'); 
net.trainParam.epochs=1000; ‘最大训练次数,根据需要可自行调节’
net.trainParam.goal=0.01; ‘误差’
net.trainParam.lr=0.01; ‘学习率’
net=train(net,P,T); ‘训练网络’
test=[];‘待预测数据输入’
out=sim(net,test); ‘仿真预测’
我的这个程序没有进行初始化,你还需要先将数据进行初始化后才能算。

3. 用matlab实现bp算法,对样本进行训练

P=[5.700 3.800 0.3175 2.33; 
4.550 3.050 0.3175 2.33;
2.950 1.950 0.3175 2.33; 
1.950 1.300 0.3175 2.33; 
1.400 0.900 0.3175 2.33; 
1.200 0.800 0.3175 2.33; 
1.050 0.700 0.3175 2.33;
1.700 1.100 0.9525 2.33; 
1.700 1.100 0.1524 2.33; 
4.100 4.140 0.1524 2.50;
10.80 4.140 0.1524 2.50;
0.850 1.290 0.0170 2.22; 
2.000 2.500 0.0790 2.22; 
1.063 1.183 0.0790 2.55;
0.910 1.000 0.1270 10.2; 
1.720 1.860 0.1570 2.33;
1.270 1.350 0.1630 2.55; 
1.500 1.621 0.1630 2.55; 
1.120 1.200 0.2420 2.55; 
1.403 1.485 0.2520 2.55; 
1.530 1.630 0.3000 2.50; 
0.905 1.018 0.3000 2.50;
1.170 1.280 0.3000 2.50; 
0.776 1.080 0.3300 2.55;
0.790 1.255 0.4000 2.55; 
0.987 1.450 0.4500 2.55; 
0.814 1.440 0.4760 2.55; 
0.970 1.620 0.5500 2.55; 
1.200 1.970 0.6260 2.55;
0.783 2.300 0.8540 2.55;
0.974 2.620 0.9520 2.55;
1.020 2.640 0.9520 2.55; 
0.883 2.676 1.0000 2.55; 
0.777 2.835 1.1000 2.55;
0.920 3.130 1.2000 2.55;
1.265 3.500 1.2810 2.55;
1.080 3.400 1.2810 2.55];
%输入
T=[ 2310;
    2890;
    4240; 
 5840; 
 7700; 
 8270; 
 9140;
 4730; 
 7870; 
 2228;
 2181;
 7740; 
 3970; 
 7730;
 4600; 
 5060;
 6560; 
 5600; 
 7050; 
 5800; 
 5270; 
 7990; 
 6570; 
 8000;
 7134; 
 6070; 
 6380; 
 5990; 
 4660
 4600;
 3980;
 3900; 
 3980; 
 3900;
 3470;
 2980;
 3150];
%输出
P=P';
T=T';
%  创建一个新的前向神经网络 
net_1=newff(minmax(P),[10,1],{'tansig','purelin'},'traingdm');

%  当前输入层权值和阈值
inputWeights=net_1.IW{1,1}
inputbias=net_1.b{1}
%  当前网络层权值和阈值
layerWeights=net_1.LW{2,1}
layerbias=net_1.b{2}

%  设置训练参数
net_1.trainParam.show = NaN;
net_1.trainParam.lr = 0.05;
net_1.trainParam.mc = 0.9;
net_1.trainParam.epochs = 10000;
net_1.trainParam.goal = 1e-6;

%  调用 TRAINGDM 算法训练 BP 网络
[net_1,tr]=train(net_1,P,T)

用matlab实现bp算法,对样本进行训练

4. 用matlab实现bp算法,对样本进行预测

copy来的:
lc;

P=[110 0.807 240 0.2 15 1 18 2 1.5;
110 2.865 240 0.1 15 2 12 1 2;
110 2.59 240 0.1 12 4 24 1 1.5;
220 0.6 240 0.3 12 3 18 2 1;
220 3 240 0.3 25 3 21 1 1.5;
110 1.562 240 0.3 15 3 18 1 1.5;
110 0.547 240 0.3 15 1 9 2 1.5];
%110 1.318 300 0.1 15 2 18 1 2];

T=[54248 162787 168380 314797;
28614 63958 69637 82898;
86002 402710 644415 328084;
230802 445102 362823 335913;
60257 127892 76753 73541;
34615 93532 80762 110049;
56783 172907 164548 144040];
%40907 117437 120368 130179];
m=max(max(P));
n=max(max(T));
P=P'/m;
T=T'/n;
%-------------------------------------------------------------------------%
pr(1:9,1)=0; %输入矢量的取值范围矩阵
pr(1:9,2)=1;
bpnet=newff(pr,[12 4],, 'traingdx', 'learngdm');
%建立BP神经网络, 12个隐层神经元,4个输出神经元
%tranferFcn属性 'logsig' 隐层采用Sigmoid传输函数
%tranferFcn属性 'logsig' 输出层采用Sigmoid传输函数
%trainFcn属性 'traingdx' 自适应调整学习速率附加动量因子梯度下降反向传播算法训练函数
%learn属性 'learngdm' 附加动量因子的梯度下降学习函数 
net.trainParam.epochs=1000;%允许最大训练步数2000步
net.trainParam.goal=0.001; %训练目标最小误差0.001
net.trainParam.show=10; %每间隔100步显示一次训练结果
net.trainParam.lr=0.05; %学习速率0.05
bpnet=train(bpnet,P,T);
%-------------------------------------------------------------------------
p=[110 1.318 300 0.1 15 2 18 1 2];
p=p'/m;

r=sim(bpnet,p);
R=r'*n;
display(R);

5. 如何用MATLAB的BP神经网络做股票预测?

算法选择问题,我觉得3层够了吧,但是多少个节点看数据量了!训练过程算法选择也很重要!主要是这里个关键点吧

如何用MATLAB的BP神经网络做股票预测?

6. 用matlab解决BP神经网络算法

我给你几个例子吧
%网络输入,每列代表一个样本
P=[-1.7817 -0.2786 -0.2954 -0.2394 -0.1842 -0.1572 -0.1584 -0.1998;
   -1.8710 -0.2957 -0.3494 -0.2904 -0.1460 -0.1387 -0.1492 -0.2228;
   -1.8347 -0.2817 -0.3566 -0.3476 -0.1820 -0.1435 -0.1778 -0.1849;
   -1.8807 -0.2467 -0.2316 -0.2419 -0.1938 -0.2103 -0.2010 -0.2533;
   -1.4151 -0.2282 -0.2124 -0.2147 -0.1271 -0.0680 -0.0872 -0.1684;
   -1.2879 -0.2252 -0.2012 -0.1298 -0.0245 -0.0390 -0.0762 -0.1672;
   -1.5239 -0.1979 -0.1094 -0.1402 -0.0994 -0.1394 -0.1673 -0.2810;
   -1.6781 -0.2047 -0.1180 -0.1532 -0.1732 -0.1716 -0.1851 -0.2006;
    0.1605 -0.0920 -0.0160  0.1246  0.1802  0.2087  0.2234  0.1003;
    0.2045  0.1078  0.2246  0.2031  0.2428  0.2050  0.0704  0.0403;
   -1.0242 -0.1461 -0.1018 -0.0778 -0.0363 -0.0476 -0.0160 -0.0253;
   -0.7915 -0.1018 -0.0737 -0.0945 -0.0955  0.0044  0.0467  0.0719];
T=[0 1;0 1;0 1;0 1;1 0;1 0;1 0;1 0;1 1;1 1;1 1;1 1];  % 
P=P';
T=T';
net=newff(minmax(P),[17,2],{'tansig','logsig'},'trainlm');
net.trainParam.epochs=50;
net.trainParam.goal=0.001;
net=train(net,P,T);

P_test=[-1.4736 -0.2845 -3.0724 -0.2108 -0.1904 -0.1467 -0.1696 -0.2001;
        -1.6002 -0.2011 -0.1021 -0.1394 -0.1001 -0.1572 -0.1584 -0.2790;
        -1.0314 -0.1521 -0.1101 -0.0801 -0.0347 -0.0482 -0.0158 -0.0301]';
Y=sim(net,P_test)

7. matlab中bp算法怎么预测

预测什么?BP算法主要是在训练过程,训练数据越多,将来预测的结果越准。

matlab中bp算法怎么预测

8. BP神经网络MATLAB编程。

隐层个数及训练次数可以在定义网络时自己设定,图形的话是系统自己生成的.
题目的意思是00得到0,01得到1,10得到1,11得到0。前者为输入,后者为输出.
所以就这样构造:
%输入 一共四组,每组两个 
p=[0,0;0,1;1,0;1,1];
            
%输出:
t=[0,1,1,0];

构造神经网络:
net=newff(p',t,{10},{'tansig'},'trainlm');
%上面这句话的意思是建立新的神经网络net,newff(输入,输出,{隐层数量及该层的节点个数},{传输函数名},训练函数);{10}代表单隐层,并且该层节点为10个,如果想显示多隐层,比如双隐层,{10,15}这样就行,传输函数也要相应增加,比如{'tansig','logsig'}节点数和传输函数名可以随意调整,目的当然是让预测结果更精确

%之后,
net.trainParam.goal = 0.00001; %设置精确度

net.trainParam.epochs = 5000;  %设置训练次数,5000次
    
[net,tr] = train(net,p',t);  %训练开始

。。。。。。。。

这样就可以训练了,过几秒后图片matlab会自动生成

最后想测试训练结果的话,比如你想打00进去看它是不是也给0
p=[0 0];
a=sim(net,p')

。。。sim就是让net去预测结果

差不多就是这样,我用的是2009a版本,有段时间没用了可能格式上稍微有点出入,希望可以帮到你