function fitness = CostFunction(optVars)
%% 获取数据
vp_train = evalin('base', 'vp_train');
vt_train = evalin('base', 'vt_train');
%% 输入和输出特征个数
inputSize = size(vp_train{1}, 1);
numResponses = size(vt_train{1}, 1);
%% 设置网络结构
opt.layers = [ ...
sequenceInputLayer(inputSize) % 输入层
gruLayer(optVars.NumOfUnits) % GRU层
reluLayer % Relu激活层
fullyConnectedLayer(numResponses) % 回归层
regressionLayer];
%% 设置网络参数
opt.options = trainingOptions('adam', ... % 优化算法Adam
'MaxEpochs', 500, ... % 最大训练次数
'GradientThreshold', 1, ... % 梯度阈值
'InitialLearnRate', optVars.InitialLearnRate, ... % 初始学习率
'LearnRateSchedule', 'piecewise', ... % 学习率调整
'LearnRateDropPeriod', 400, ... % 训练700次后开始调整学习率
'LearnRateDropFactor', 0.1, ... % 学习率调整因子
'L2Regularization', optVars.L2Regularization, ... % 正则化参数
'ExecutionEnvironment', 'auto',... % 训练环境
'Verbose', 0, ... % 关闭优化过程
'Plots', 'none'); % 不画出曲线
%% 数据的参数
num_size = length(vt_train);
%% 交叉验证程序
indices = crossvalind('Kfold', num_size, 5);
for i = 1 : 5
% 获取第i份数据的索引逻辑值
valid_data = (indices == i);
% 取反,获取第i份训练数据的索引逻辑值
train_data = ~valid_data;
% 1份测试,4份训练
pv_train = vp_train(train_data, :);
tv_train = vt_train(train_data, :);
pv_valid = vp_train(valid_data, :);
tv_valid = vt_train(valid_data, :);
% 建立模型
model = trainNetwork(pv_train, tv_train, opt.layers, opt.options);
% 仿真测试
t_sim = predict(model, pv_valid);
% 适应度值
error(i) = sqrt(double(mse(tv_valid, t_sim)));
end
%% 获取适应度
fitness = mean(error);
end
没有合适的资源?快使用搜索试试~ 我知道了~
基于贝叶斯(bayes)优化门控循环单元(bayes-GRU)的数据回归预测,多变量输入模型 优化参数为学习率,隐藏层节点个
共3个文件
m:2个
xlsx:1个
需积分: 0 2 下载量 106 浏览量
2023-08-28
22:33:14
上传
评论
收藏 34KB ZIP 举报
温馨提示
基于贝叶斯(bayes)优化门控循环单元(bayes-GRU)的数据回归预测,多变量输入模型。 优化参数为学习率,隐藏层节点个数,正则化参数,要求2020及以上版本。 评价指标包括:R2、MAE、MSE、RMSE和MAPE等,代码质量极高,方便学习和替换数据。
资源推荐
资源详情
资源评论
收起资源包目录
7 bayes-GRU --2.zip (3个子文件)
CostFunction.m 2KB
main.m 1KB
data.xlsx 36KB
共 3 条
- 1
资源评论
智能算法及其模型预测
- 粉丝: 1834
- 资源: 788
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功