-
大小: 6KB文件類型: .zip金幣: 2下載: 2 次發(fā)布日期: 2021-05-28
- 語言: Matlab
- 標(biāo)簽: RNN??LSTM??深度學(xué)習(xí)??Matlab??
資源簡介
消費(fèi)者請注意,本資源是分別用RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))和LSTM(長短記憶網(wǎng)絡(luò))編寫的MATLAB的案例,內(nèi)部RNN.m和LSTM.m文件程序可以直接運(yùn)行,內(nèi)部已包含所需功能函數(shù),如過不能直接運(yùn)行請留言。

代碼片段和文件信息
%?接下來就是LSTM的Matlab代碼,我也進(jìn)行了注釋,用英文注釋的,也比較容易懂:
%?implementation?of?LSTM
clc
clear?all
close?all
%%?training?dataset?generation
binary_dim?????=?8;
largest_number?=?2^binary_dim?-?1;
binary?????????=?cell(largest_number?1);
for?i?=?1:largest_number?+?1
????binary{i}??????=?dec2bin(i-1?binary_dim);
????int2binary{i}??=?binary{i};
end
%%?input?variables
alpha??????=?0.1;
input_dim??=?2;
hidden_dim?=?32;
output_dim?=?1;
%%?initialize?neural?network?weights
%?in_gate?????=?sigmoid(X(t)?*?U_i?+?H(t-1)?*?W_i)????-------?(1)
U_i?=?2?*?rand(input_dim?hidden_dim)?-?1;
W_i?=?2?*?rand(hidden_dim?hidden_dim)?-?1;
U_i_update?=?zeros(size(U_i));
W_i_update?=?zeros(size(W_i));
%?forget_gate?=?sigmoid(X(t)?*?U_f?+?H(t-1)?*?W_f)????-------?(2)
U_f?=?2?*?rand(input_dim?hidden_dim)?-?1;
W_f?=?2?*?rand(hidden_dim?hidden_dim)?-?1;
U_f_update?=?zeros(size(U_f));
W_f_update?=?zeros(size(W_f));
%?out_gate????=?sigmoid(X(t)?*?U_o?+?H(t-1)?*?W_o)????-------?(3)
U_o?=?2?*?rand(input_dim?hidden_dim)?-?1;
W_o?=?2?*?rand(hidden_dim?hidden_dim)?-?1;
U_o_update?=?zeros(size(U_o));
W_o_update?=?zeros(size(W_o));
%?g_gate??????=?tanh(X(t)?*?U_g?+?H(t-1)?*?W_g)???????-------?(4)
U_g?=?2?*?rand(input_dim?hidden_dim)?-?1;
W_g?=?2?*?rand(hidden_dim?hidden_dim)?-?1;
U_g_update?=?zeros(size(U_g));
W_g_update?=?zeros(size(W_g));
out_para?=?2?*?rand(hidden_dim?output_dim)?-?1;
out_para_update?=?zeros(size(out_para));
%?C(t)?=?C(t-1)?.*?forget_gate?+?g_gate?.*?in_gate????-------?(5)
%?S(t)?=?tanh(C(t))?.*?out_gate???????????????????????-------?(6)
%?Out??=?sigmoid(S(t)?*?out_para)?????????????????????-------?(7)
%?Note:?Equations?(1)-(6)?are?cores?of?LSTM?in?forward?and?equation?(7)?is
%?used?to?transfer?hiddent?layer?to?predicted?output?i.e.?the?output?layer.
%?(Sometimes?you?can?use?softmax?for?equation?(7))
%%?train?
iter?=?99999;?%?training?iterations
for?j?=?1:iter
????%?generate?a?simple?addition?problem?(a?+?b?=?c)
????a_int?=?randi(round(largest_number/2));???%?int?version
????a?????=?int2binary{a_int+1};??????????????%?binary?encoding
????
????b_int?=?randi(floor(largest_number/2));???%?int?version
????b?????=?int2binary{b_int+1};??????????????%?binary?encoding
????
????%?true?answer
????c_int?=?a_int?+?b_int;????????????????????%?int?version
????c?????=?int2binary{c_int+1};??????????????%?binary?encoding
????
????%?where?we‘ll?store?our?best?guess?(binary?encoded)
????d?????=?zeros(size(c));
????if?length(d)<8
????????pause;
????end
????
????%?total?error
????overallError?=?0;
????
????%?difference?in?output?layer?i.e.?(target?-?out)
????output_deltas?=?[];
????
????%?values?of?hidden?layer?i.e.?S(t)
????hidden_layer_values?=?[];
????cell_gate_values????=?[];
????%?initialize?S(0)?as?a?zero-vector
????hidden_layer_values?=?[hidden_layer_values;?zeros(1?hidden_dim)];
????cell_gate_values????=?[cell_gate_values;?zeros(1?hidden_dim)];
????
????%?initialize?memory?gate
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????10107??2018-12-18?11:37??RNN-LSTM\LSTM.m
?????文件????????5821??2018-12-18?11:23??RNN-LSTM\RNN.m
?????文件??????????63??2018-12-18?11:25??RNN-LSTM\sigmoid.m
?????文件??????????81??2018-12-18?11:29??RNN-LSTM\sigmoid_output_to_derivative.m
?????文件??????????68??2018-12-18?12:10??RNN-LSTM\tan_h.m
?????文件??????????72??2018-12-18?12:10??RNN-LSTM\tan_h_output_to_derivative.m
?????文件?????????184??2018-12-18?12:12??RNN-LSTM\參考網(wǎng)址.txt
?????目錄???????????0??2018-12-18?13:40??RNN-LSTM\
評論
共有 條評論