毕节公司做网站保定专业网站制作
毕节公司做网站,保定专业网站制作,肇庆市建设企业网站怎么样,甘肃省建设厅网站Bayes-CNN贝叶斯优化卷积神经网络多输入单输出回归预测#xff08;Matlab#xff09;1.命令窗口输出MAE、MSE、RMSEP、R^2、RPD和MAPE
2.贝叶斯优化算法优化参数为学习率、批处理样本大小和、正则化参数。
3.输入6个特征#xff0c;输出1个变量直接上干货#xff0c;今天咱…Bayes-CNN贝叶斯优化卷积神经网络多输入单输出回归预测Matlab 1.命令窗口输出MAE、MSE、RMSEP、R^2、RPD和MAPE 2.贝叶斯优化算法优化参数为学习率、批处理样本大小和、正则化参数。 3.输入6个特征输出1个变量直接上干货今天咱们来折腾一个用Matlab实现的Bayes-CNN回归预测模型。这玩意儿把贝叶斯优化和卷积神经网络揉在一起专门对付多输入单输出的预测问题。老规矩先跑通流程再调参咱们边写代码边唠嗑。数据预处理这块儿直接偷懒用MinMaxScalerMatlab里自带的mapminmax函数足够应付[input_train, ps_input] mapminmax(train_data(:, 1:6), 0, 1); [output_train, ps_output] mapminmax(train_data(:, 7), 0, 1);注意这里转置符别漏了Matlab的矩阵操作专治各种不服。6个特征输入1个变量输出数据维度得对齐不然训练时报错能让人抓狂。贝叶斯优化部分才是重头戏咱们定义个骚气的目标函数function val bayescnn_loss(optVars) layers [ imageInputLayer([6 1 1]) % 处理一维时序数据 convolution2dLayer([3 1], 16, Padding,same) reluLayer maxPooling2dLayer([2 1],Stride,2) fullyConnectedLayer(32) dropoutLayer(0.5) fullyConnectedLayer(1) regressionLayer]; options trainingOptions(adam, ... LearnRate,optVars.InitialLearnRate, ... MiniBatchSize,optVars.MiniBatchSize, ... L2Regularization,optVars.L2Regularization, ... Verbose,false); net trainNetwork(reshape(input_train,6,1,1,[]), output_train, layers, options); pred predict(net, reshape(input_val,6,1,1,[])); val sqrt(mean((pred - output_val).^2)); end这里有个坑要注意——输入数据必须reshape成四维张量第三维通道数设为1否则CNN层会报维度不匹配。贝叶斯优化的参数范围设置得讲究点params [optimizableVariable(InitialLearnRate,[1e-4, 1e-2],Transform,log),... optimizableVariable(MiniBatchSize,[16, 128],Type,integer),... optimizableVariable(L2Regularization,[1e-5, 1e-2],Transform,log)];建议先用大范围跑20轮左右再根据结果缩小范围二次优化。跑完贝叶斯优化后记得把最优参数存下来后面正式训练要用。Bayes-CNN贝叶斯优化卷积神经网络多输入单输出回归预测Matlab 1.命令窗口输出MAE、MSE、RMSEP、R^2、RPD和MAPE 2.贝叶斯优化算法优化参数为学习率、批处理样本大小和、正则化参数。 3.输入6个特征输出1个变量模型训练完成后评估指标得整全套的。咱们写个暴力计算函数function [mae, mse, rmse, r2, rpd, mape] calc_metrics(y_true, y_pred) mae mean(abs(y_true - y_pred)); mse mean((y_true - y_pred).^2); rmse sqrt(mse); sst sum((y_true - mean(y_true)).^2); ssr sum((y_pred - mean(y_true)).^2); r2 1 - (sum((y_true - y_pred).^2)/sst); rpd std(y_true)/rmse; mape mean(abs((y_true - y_pred)./y_true))*100; end注意mape遇到真实值为0时会炸数据预处理时最好做平滑处理。R²的计算别直接用corrcoef那玩意儿和回归任务的R²定义有细微差别。最后在命令窗口输出的骚操作fprintf(MAE: %.4f \nMSE: %.4f \nRMSE: %.4f \nR²: %.4f \nRPD: %.4f \nMAPE: %.2f%%\n,... mae, mse, rmse, r2, rpd, mape);这个打印格式建议用固定小数位数数据对比起来更直观。跑完程序记得检查验证集和测试集指标差距防止过拟合。模型部署时有个小技巧——把训练好的网络结构转成DAGNetwork保存加载预测时能快30%左右net assembleNetwork(layers); save(bayes_cnn.mat,net);遇到实时预测需求可以把这个mat文件封装成函数直接调用。别用传统的手动参数调优贝叶斯优化跑完的参数组合往往比人工调参更靠谱特别是学习率和L2正则化这种需要联动的参数。最终效果取决于数据质量和网络结构的适配性。如果效果不理想试试在卷积层后加BN层或者把全连接层的激活函数换成leakyrelu。不过记住贝叶斯优化不是万能的特征工程做砸了神仙也救不回来。