algorithm - ask step by step levenberg-marquardt in java -


i'm trying write levenberg marquardt in java, here's code:

    while (iter <= 10 || mse < 0.0001) {         call.calc_jacobian(ff, trainlm, input, akt1, akt2, w, x, t);         double[][] jacobian = trainlm.ret_jacob();         double[][] error = trainlm.ret_err();         mse = trainlm.ret_mse() / 4;         mse_all[iter] = mse;         test: (int m = 0; m <= 5; m++) {             upb.koreksi_w(miu, hidden, jacobian, error, w);             double[][] w_new = upb.ret_upw();             call.test_ff(ff, trainlm, input, akt1, akt2, w_new, x, t);             double mse2 = trainlm.ret_mse() / 4;             if (mse2 < mse || m == 5) {                 miu = miu / beta;                 w_skrg = w_baru;                 iter++;                 break test;             } else {                 miu = miu * beta;             }         }     } 

the function calc_jacobian function use compute feed-forward , back-propagate operation calculate value of jacobian. function koreksi_w use update new weight using jacobian, error, miu, , actual weight, give new weight , test_ff calculate feedforward mse value.

my problem when try run code, value of mse doesn't decrease, use trainlm function in matlab run same input & weight, prove input & wight isn't problem , in matlab, mse decrease.

i don't understand piece of code, sure integer division want when :

mse = trainlm.ret_mse() / 4;  //or: double mse2 = trainlm.ret_mse() / 4; 

as expect double, suggest cast or :

double mse2 = trainlm.ret_mse() / (double)4; //or: double mse2 = trainlm.ret_mse() / 4.0; 

check miu = miu / beta; (is beta double ?)

i suspect mathlab floating point division java doesn't...


Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -