多輸入多輸出 | Matlab實現WOA-CNN鯨魚算法優化卷積神經網絡多輸入多輸出預測
目錄
- 多輸入多輸出 | Matlab實現WOA-CNN鯨魚算法優化卷積神經網絡多輸入多輸出預測
- 預測效果
- 基本介紹
- 模型背景
- 程序設計
- 參考資料
預測效果
基本介紹
Matlab實現WOA-CNN鯨魚算法優化卷積神經網絡多輸入多輸出預測(完整源碼和數據)
1.data為數據集,輸入10個特征,輸出3個變量。
2.main.m為程序主文件,其他為函數文件無需運行。
3.命令窗口輸出MBE、MAE、RMSE、R^2和MAPE,可在下載區獲取數據和程序內容。
4.優化參數為學習率、批處理樣本大小和、正則化參數。
注意程序和數據放在一個文件夾,運行環境為Matlab2018及以上。
模型背景
卷積神經網絡是1989 年由紐約大學Lecun 提出的一種專門用來處理具有類似網格結構的數據的神經網絡,例如時間序列數據和圖像數據等。卷積神經網絡可以看作是傳統神經網絡的改進,都采用了層級網絡結構。其本質是一種從輸入到輸出的映射,能夠學習大量的映射關系。CNN 網絡主要由輸入層、卷積層、池化層和輸出層構成,其中輸入層主要是對原始數據進行預處理,包括去均值、歸一化。卷積計算層有兩個重要的操作: 局部關聯和窗口滑動。池化層位于兩個卷積層中間,用于壓縮數據,減小過擬合。全連接層在CNN 網絡的尾部,將池化層的輸出數據進行拼接。CNN 網絡最主要的優勢在于權值共享的特殊結構,降低了網絡的復雜性,對高維數據的處理無壓力。同時CNN 也避免了傳統神經網絡反向傳播梯度損失過快的缺點。
程序設計
- 完整源碼和數據獲取方式:私信博主回復Matlab實現WOA-CNN鯨魚算法優化卷積神經網絡多輸入多輸出預測。
%% 數據平鋪
% 將數據平鋪成1維數據只是一種處理方式
% 也可以平鋪成2維數據,以及3維數據,需要修改對應模型結構
% 但是應該始終和輸入層數據結構保持一致
p_train = double(reshape(P_train, 10, 1, 1, M));
p_test = double(reshape(P_test , 10, 1, 1, N));
t_train = double(T_train)';
t_test = double(T_test )';
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%% 構造網絡結構
layers = [imageInputLayer([10, 1, 1]) % 輸入層 輸入數據規模[10, 1, 1]convolution2dLayer([3, 1], 16) % 卷積核大小 3*1 生成16張特征圖batchNormalizationLayer % 批歸一化層reluLayer % Relu激活層convolution2dLayer([3, 1], 32) % 卷積核大小 3*1 生成32張特征圖batchNormalizationLayer % 批歸一化層reluLayer % Relu激活層dropoutLayer(0.2) % Dropout層fullyConnectedLayer(3) % 全連接層regressionLayer]; % 回歸層%% 參數設置
options = trainingOptions('adam', ... % ADAM 梯度下降算法'MiniBatchSize', 30, ... % 批大小,每次訓練樣本個數30'MaxEpochs', 100, ... % 最大訓練次數 100'InitialLearnRate', 1e-2, ... % 初始學習率為0.01'LearnRateSchedule', 'piecewise', ... % 學習率下降'LearnRateDropFactor', 0.5, ... % 學習率下降因子'LearnRateDropPeriod', 50, ... % 經過100次訓練后 學習率為 0.01 * 0.5'Shuffle', 'every-epoch', ... % 每次訓練打亂數據集'Plots', 'training-progress', ... % 畫出曲線'Verbose', false);
參考資料
[1] https://blog.csdn.net/kjm13182345320/category_11003178.html?spm=1001.2014.3001.5482
[2] https://blog.csdn.net/kjm13182345320/article/details/117378431
[3] https://blog.csdn.net/kjm13182345320/article/details/118253644