MATLAB 拟合神经网络—— fitnet

建立神经网络

  • 语法:net = fitnet(hiddenSizes,trainFcn)

  • hiddenSize 为隐藏层数,是一个行向量,分别表示从左到右的隐藏层神经元数。
  • trainFcn 为训练函数,如下表所示
名称 函数
‘trainlm’ Levenberg-Marquardt
‘trainbr’ Bayesian Regularization
‘trainscg’ Scaled Conjugate Gradient
‘trainbfg’ BFGS Quasi-Newton
‘trainrp’ Resilient Backpropagation
‘traincgb’ Conjugate Gradient with Powell/Beale Restarts
‘traincgf’ Fletcher-Powell Conjugate Gradient
‘traincgp’ Polak-Ribiére Conjugate Gradient
‘trainoss’ One Step Secant
‘traingdx’ Variable Learning Rate Gradient Descent
‘traingdm’ Gradient Descent with Momentum
‘traingd’ Gradient Descent
  • 黄色标出的是常用方法,也是工具箱中提供的三种方法

参数设置

  • 以下参数通常不修改,采用默认值
名称 说明 默认值
net.trainParam.epochs 最大训练次数 1000
net.trainParam.goal 训练要求精度 0
net.trainParam.time 最大训练时间 inf
net.trainParam.max_fail 最大不下降步数 6
net.trainParam.show 显示训练过程 false
net.trainParam.showWindow 显示训练窗口 true
  • 设置训练样本数据、验证样本数据、测试样本数据比例
名称 说明 默认值
net.divideParam.trainRatio 训练样本比例 0.7
net.divideParam.valRatio 验证样本比例 0.15
net.divideParam.testRatio 测试样本比例 0.15

训练网络

  • 语法:[net,tr] = train(net,x,y);

  • 用已知数据训练网络 net ,返回训练好的网络 net ,训练的相关数据在结构体 tr 中。
  • 注意 x、y 和习惯上方向是相反的,每一行表示一个指标,每一列是一个样本。
  • y 可以是多个预测数据

预测数据

  • 语法:y = sim(net,x)

  • 和训练网络一样,注意 x、y 每一行是指标,每一列是样本。

模型评价

  • tr 结构中记录了模型的相关数据,主要数据如下表所示
  • 总体特征数据
名称 说明
num_epochs 训练次数
best_epoch 最佳训练次数
best_perf 最佳均方误差(MSE)
best_vperf 验证样本最佳均方误差
best_tperf 测试样本最佳均方误差
trainInd 选取训练样本序号
valInd 选取验证样本序号
testInd 选取测试样本序号
  • 记录每次训练数据
名称 说明
epoch 行向量,训练步数标号,0~(步数-1)
time 训练时间
perf 训练样本均方误差
vperf 验证样本均方误差
tperf 测试样本均方误差
  • 计算总体均方误差
    • 语法:performance = perform(net, origin_y, predict_y)
    • 其中 predict_y = sim(net,x)

程序

% 转置
x = X'; y = Y';

% 一个隐藏层,神经元数为5
hiddenLayerSize = 5;

% 训练函数为 trainlm
trainFcn = 'trainlm';

% 初始化网络
net = fitnet(hiddenLayerSize,trainFcn);

% 设置比例
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;

% 训练网络
[net,tr] = train(net,x,y);

% 计算所有训练样本预测值
yp = sim(net,x);

% 计算总体均方误差
performance = perform(net,y,yp);

% 查看网络结构
view(net)

你可能感兴趣的:(数学建模,神经网络预测,fitnet)