我正在用連續3天的數據訓練我的神經網絡,並用第4天的數據測試它。這個例子中的值是隨機選擇的,與現實無關。我想要神經網絡學習電流,這取決於溫度和太陽輻射。級聯前向反向傳播網絡的多個訓練數據
%% initialize data for training
Temperature_Day1 = [25 26 27 26 25];
Temperature_Day2 = [25 24 24 23 24];
Temperature_Day3 = [21 20 22 21 20];
SolarRadiation_Day1 = [990 944 970 999 962];
SolarRadiation_Day2 = [993 947 973 996 967];
SolarRadiation_Day3 = [993 948 973 998 965];
Current_Day1 = [0.11 0.44 0.44 0.45 0.56];
Current_Day2 = [0.41 0.34 0.43 0.55 0.75];
Current_Day3 = [0.34 0.98 0.34 0.76 0.71];
Day1 = [Temperature_Day1; SolarRadiation_Day1]; % 2-by-5
Day2 = [Temperature_Day2; SolarRadiation_Day2]; % 2-by-5
Day3 = [Temperature_Day3; SolarRadiation_Day3]; % 2-by-5
%% training input and training target
Training_Input = [Day1; Day2; Day3]; % 6-by-5
Training_Target = [Current_Day1; Current_Day2; Current_Day3]; % 3-by-5
%% training the network
hiddenLayers= 2;
net = newcf(Training_Input, Training_Target, hiddenLayers);
y = sim(net, Training_Input);
net.trainParam.epochs = 100;
net = train(net, Training_Input, Training_Target);
%% initialize data for prediction
Temperature_Day4 = [45 23 22 11 24];
SolarRadiation_Day4 = [960 984 980 993 967];
Current_Day4 = [0.14 0.48 0.37 0.46 0.77];
Day4 = [Temperature_Day4; SolarRadiation_Day4]; % 2-by-5
Test_Input = [Day4; Day4; Day4]; % same dimension as Training_Input; subject to question
%% prediction
Predicted_Target = sim(net, Test_Input); % yields 3-by-5
我的問題是:我如何用3天的數據訓練,然後預測第4天的目標是什麼?由於培訓和測試輸入必須具有相同的維度,因此我如何測試僅一天?這是通過連接三個相同的測試輸入數據集來解決的。但是,這也會爲預測目標產生3個不同的數據集。
什麼是正確的做法?
順便說一句:我已經看過這種類型的問題多次,但答案永遠不會令人滿意,因爲他們總是建議改變測試輸入的尺寸而不考慮問題的性質(也就是說只有一個數據集是可用於測試)。所以請不要將其標記爲重複。
我認爲溫度,太陽輻射和電流的數據是按照預定的時間間隔進行的,並且您希望將讀數的時間作爲特徵保持正確? – beaker
是的,這是正確的。在我的原始代碼中,每天都有更多的樣本,但爲了簡單起見,我將其減少了。 –