Bootstrap

matlab中input输入多个数_BP神经网络 Matlab

cc4c123710f38d3997134c305804b8ad.png

一个月前为准备比赛写的,有需要可自取。代码可能还有诸多不足之处,如能指出感激不尽。关于代码的几点说明:

  • 依旧是用matlab写的。
  • 调用了newff函数生成网络。
  • 隐含层神经元节点数的选取:先根据经验法则确定大致范围,然后在范围内选择使误差和最小的节点数(27-51行)。
  • 为避免过拟合,调用了dropout layer函数丢弃部分节点,代码中设置的丢弃比例是0.25。
  • 初始权值阈值是随机生成的,可以用其他智能算法进行优化。这里未优化,所以测试集的预测效果有一定随机性。
  • 其实自己搭建网络也不算复杂,就是把误差反向传递的求导过程完整写出来。但如果只是拿来用一下的话就没必要了,自己搭建的差不多也就是这个模式。最关键的还是节点数和初始权值阈值的设置。

代码:

  1. clear
  2. clc
  3. %%导入数据
  4. load data_Octane.mat
  5. %%数据说明:X为自变量,Y为因变量,new_X为待预测样本的自变量
  6. %%将样本随机分为训练集和测试集
  7. %将50个数字随机排列
  8. rand=randperm(size(X,1));
  9. %划分出训练集,共35个样本
  10. X_train=X(rand(1:35),:)';
;