我是靠谱客的博主 懦弱水池,最近开发中收集的这篇文章主要介绍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)
最后
以上就是懦弱水池为你收集整理的MATLAB 拟合神经网络—— fitnet建立神经网络参数设置训练网络预测数据模型评价程序的全部内容,希望文章能够帮你解决MATLAB 拟合神经网络—— fitnet建立神经网络参数设置训练网络预测数据模型评价程序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复