import("lib.nas"); var activate_function= { sigmoid_func:func(x) { return 1.0/(1.0+math.exp(-x)); }, diffsigmoid_func:func(x) { var t=func(x){return 1.0/(1.0+math.exp(-x));}(x); return t*(1-t); }, tanh_func:func(x) { var t1=math.exp(x); var t2=math.exp(-x); return (t1-t2)/(t1+t2); }, difftanh_func:func(x) { var t1=math.exp(x); var t2=math.exp(-x); var t=(t1-t2)/(t1+t2); return 1-t*t; }, relu_func:func(x) { return x>0? x:0; }, diffrelu_func:func(x) { return x>0; }, leaky_relu_func:func(k,x) { return x>0? x:k*x; }, diffleaky_relu_func:func(k,x) { return x>0? 1:k; } }; var matrix= { new:func(col,row) { var new_mat= { col:col, row:row, mat:[] }; for(var i=0;i0.5) mat.mat[i][j]=-rand(); else mat.mat[i][j]=rand(); } return; }, prt_mat:func(mat) { var prt_s='[\n'; foreach(var i;mat.mat) { var s='['; foreach(var j;i) s~=(j~','); s~='],\n'; prt_s~=s; } prt_s~=']'; print(prt_s); return nil; }, mult_mat:func(mat1,mat2) { if(mat1.col!=mat2.row) { die("[error-mult] mat1\'s col does not match mat2\'s row."); return nil; } var new_mat=me.new(mat2.col,mat1.row); for(var i=0;i0.01) { error=0; for(var i=0;i<4;i+=1) { me.forward(i); error+=me.backward(i); } print(error); } return; } }; var main=func() { bp.init(); bp.set_learning_rate(0.1); bp.set_training_set(); bp.set_expect_set(); bp.training_process(); return nil; } main();