当前位置:   article > 正文

Matlab的神经网络(一)BP网络_matlab中bp神经网络

matlab中bp神经网络

最近刚开始学习神经网络,感觉一开始接触浅浅的理解是没问题的,但是深层次理解还是需要不断地实践。BP是一种前馈的运行,但是可以将误差反馈回去;根据梯度下降法来不断的调整权值(容易陷入局部最小值),直到最后得到的数据可以满足需求;大家可以看一下newff函数的用法matlab详解newff(前馈反向传播网络)_xiaotao_1的博客-CSDN博客_matlab newffz

感觉这个讲解的很好,要把里面的参数弄明白;

BP神经网络的matlab写法:

1.导入数据(导入.mat数据,用load函数导入)

2.随机产生训练集和测试集(用randperm函数打乱数据顺序,然后将总的数据分为训练集和测试集)

3.数据归一化(用mapminmax函数进行数据归一化,mapminmax('apply',n,x),n是测试数据,x为训练集的数据特征)

4.进行BP神经网络的创建(newff函数,newff(p_train,t_train,9),9为隐含层的个数)

5.设置训练参数

6.训练网络(用train函数来进行训练)

7.仿真测试(用sim函数进行仿真测试)

8.数据反归一化(mapminmax('reverse',t_sim,ps_output)进行反归一化)

然后进行性能评价

9.相对误差

10.决定系数

11.结果对比

然后可以进行运算

  1. % 1. 导入数据
  2. load spectra_data.mat%用load函数
  3. % 2. 随机产生训练集和测试集
  4. temp = randperm(size(NIR,1));%randperm函数为打乱总体数据的顺序
  5. % 训练集——50个样本
  6. P_train = NIR(temp(1:50),:)';%根据newff函数里面的参数要求,所以要让训练集和测试集的输入数据和输出数据的列相同,所以用’
  7. T_train = octane(temp(1:50),:)';%因为要让训练集和测试集的输入数据和输出数据的列相同,所以用’
  8. % 测试集——10个样本
  9. P_test = NIR(temp(51:end),:)';
  10. T_test = octane(temp(51:end),:)';
  11. N = size(P_test,2);
  12. %% III. 数据归一化
  13. [p_train, ps_input] = mapminmax(P_train,0,1);%用mapminmax函数进行归一化
  14. p_test = mapminmax('apply',P_test,ps_input);%用P_train归一化得到的数据特征将P_test的数据进行相同性质的归一化;
  15. [t_train, ps_output] = mapminmax(T_train,0,1);%对训练集的输出数据进行归一化
  16. %% IV. BP神经网络创建、训练及仿真测试
  17. % 1. 创建网络
  18. net = newff(p_train,t_train,9);%创建BP网络
  19. % 2. 设置训练参数
  20. net.trainParam.epochs = 1000;
  21. net.trainParam.goal = 1e-3;
  22. net.trainParam.lr = 0.01;
  23. % 3. 训练网络
  24. net = train(net,p_train,t_train);
  25. % 4. 仿真测试
  26. t_sim = sim(net,p_test);%用sim函数进行仿真测试
  27. % 5. 数据反归一化
  28. T_sim = mapminmax('reverse',t_sim,ps_output);%ps_output是T_train的归一化数据特征

BP神经网络的优缺点:

优点:

1.自学习和自适应能力

2.非线性映射能力

3.有一定的容错能力

4.将学习成果能应用在新的知识

缺点:

1.容易陷入局部最小

2.算法收敛速度慢

3.网络结构的选择,过大容易过拟合,过小容易不收敛

4.太依赖典型样本,需要大量的典型样本

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号