-
大小: 2KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-06-11
- 語言: Matlab
- 標(biāo)簽: Matlab??DeepLearning??RNN??
資源簡介
深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)之循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)Matlab實現(xiàn)循環(huán)神經(jīng)網(wǎng)絡(luò)RNN

代碼片段和文件信息
%%%使用BPTT算法完成Elman網(wǎng)絡(luò)的訓(xùn)練
%%%作者:xd.wp
%%%時間:2016.10.06?16:44
%%?程序說明
%??1、數(shù)據(jù)為7天,四個時間點的空調(diào)功耗,用前三個推測第四個訓(xùn)練,依次類推。第七天作為檢驗
%??2、Elman網(wǎng)絡(luò)輸入結(jié)點為12,輸出結(jié)點為4個,隱藏結(jié)點18個
clear?all;
clc;
%%?加載數(shù)據(jù)并進行歸一化處理
[train_datatest_data]=Elman_data_process();
data_length=size(train_data1);????????????%每個樣本的長度
data_num=size(train_data2);???????????????%樣本數(shù)目?
%%?網(wǎng)絡(luò)參數(shù)初始化
%結(jié)點數(shù)目設(shè)置
input_layer_num=data_length;
hidden_layer_num=18;
output_layer_num=size(test_data1);
%權(quán)重初始化
weight_input_hidden=rand(hidden_layer_numinput_layer_num)/1000;
weight_prehidden_hidden=rand(hidden_layer_numhidden_layer_num)/1000;
weight_hidden_output=rand(output_layer_numhidden_layer_num)/1000;
output_state=zeros(output_layer_num3);
%%?網(wǎng)絡(luò)訓(xùn)練學(xué)習(xí)部分??采用BPTT算法
yita=0.001;??????????????%每次迭代的步進
for?num=1:4000
for?t=1:3???????%%時間步,使用三推一
????%從輸入到隱層
????if?(t==1)
????????pre_hidden_state=weight_input_hidden*train_data(:t);
????else
???????pre_hidden_state=weight_input_hidden*train_data(:t)+weight_prehidden_hidden*hidden_state(:t-1);
????end
????%從隱層到輸出
????for?n=1:hidden_layer_num
????????hidden_state(nt)=1/(1+exp(-pre_hidden_state(n:)));??????????????%%通過sigmoid函數(shù)
????end
????output_state(:t)=weight_hidden_output*hidden_state(:t);
????%誤差計算
????Error=output_state(:t)-test_data(:t);
????Error_cost(1num)=sum((output_state(:t)-test_data(:t)).^2);
????if(Error_cost(1num)<1e-4)
????????break;
????end
????%權(quán)值更新
????[weight_input_hiddenweight_prehidden_hiddenweight_hidden_output]=updata_weight(tyitaErrortrain_datahidden_stateweight_input_hiddenweight_prehidden_hiddenweight_hidden_output);
end
????if(Error_cost(1num)<1e-4)
????????break;
????end
end
%%?繪制COST曲線
for?n=1:1:num
????text(nError_cost(1n)‘*‘);
????axis([0num01]);
????title(‘Error-cost曲線圖‘);
end
%%?結(jié)果檢驗
%%由1-3天=>第四天
pre_hidden_state=weight_input_hidden*train_data(:1);
for?n=1:hidden_layer_num
????hidden_state(n1)=1/(1+exp(-pre_hidden_state(n:)));??????????????%%通過sigmoid函數(shù)
end
output_state(:1)=weight_hidden_output*hidden_state(:1);
fprintf(‘前三天推測第四天的結(jié)果%d?\n真實第四天結(jié)果%d?\n‘?output_state(:1)?test_data(:1));
%?%由1-3天=>第四天
%?train_data(:3);
%?pre_hidden_state=weight_input_hidden*train_data(:3)+weight_prehidden_hidden*hidden_state(:2);
%?for?n=1:hidden_layer_num
%?????hidden_state(n3)=1/(1+exp(-pre_hidden_state(n:)));??????????????%%通過sigmoid函數(shù)
%?end
%?output_state(:3)=weight_hidden_output*hidden_state(:3);
%
%?test_data(:3)
%使用第七組檢驗
test_final=[0.4557?0.4790?0.7019?0.8211?0.4601?0.4811?0.7101?0.8298?0.4612?0.4845?0.7188?0.8312]‘;
test_final=test_final/sqrt(sum(test_final.^2));
test_output=test_data(:4);
pre_hidden_state=weight_input_hidden*test_final+weight_prehidden_hidden*hidden_state(:3);
for?n=1:hidden_layer_num
????hidden_state1(n1)=1/(1+exp(-pre_hidden_state(n:)));??????????????%%通過sigmoid函數(shù)
end
t_output=weight_hidden_output*hidden_state1(:1)
test_output
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3176??2017-11-01?10:20??MATLAB-RNN-elman\Elman_data_main.m
?????文件???????1304??2017-11-01?10:39??MATLAB-RNN-elman\Elman_data_process.m
?????文件???????1322??2017-11-01?10:18??MATLAB-RNN-elman\updata_weight.m
?????目錄??????????0??2017-11-01?11:07??MATLAB-RNN-elman
-----------?---------??----------?-----??----
?????????????????5802????????????????????4
- 上一篇:matlab 心臟血管中心線提取
- 下一篇:彎矩-曲率曲線
評論
共有 條評論