Я получил вес LSTM в Керасе и установил его в CSV.И я использую веса в Matlab2016b.Как ее решить?
Я сделал m.function для использования весов:
function pred = fcn(u1, u2, u3, u4, u5,Wi,Wf, Wc, Wo,Ui, Uf, Uc, Uo, bi, bf, bc, bo,denw,denb)
%#codegen
A = [u1; u2; u3; u4; u5];
ht_1=zeros(6,1);
Ct_1=zeros(6,1);
ip = Wi*A+Ui*ht_1+bi;
fg = Wf*A+Uf*ht_1+bf;
Ch = Wc*A+Uc*ht_1+bc;
op = Wo*A+Uo*ht_1+bo;
for i=1:64
for j=1:6
i_t = 1/(1+exp(ip(j)));
f_t = 1/(1+exp(fg(j)));
C_hat = tanh(Ch(j));
o_t = 1/(1+exp(op(j)));
C_t = f_t*Ct_1+i_t*C_hat;
h_t = o_t*tanh(C_t);
end
Ct_1=C_t;
ht_1=h_t;
end
h_t=ht_1;
pred= transpose(h_t)*denw+denb;
Настройки:
- количество узлов LSTM равно 6.
- длина последовательности равна 64.
- Я установил, что количество входов равно 5. Это данные временных рядов.Поэтому я думаю, что ввод данных (5,1).
- Wi, Wf, Wc, Wo - это измерение (6,5).
- Ui, Uf, Uc, Uo - это измерение (6, 6).
- bi, bf, bc, bo - размерность (6,1).
- denw, denb - вес и смещение выходного узла.
Это правильный код?Я в замешательстве.