🐛 visual changement & bug fix in test/json.nas & optimize test/bp.nas
This commit is contained in:
parent
882ecac100
commit
ab37495960
|
@ -633,10 +633,10 @@ void nasal_gc::info()
|
|||
"hash ","upval","obj ",
|
||||
"co "
|
||||
};
|
||||
std::cout<<"\ngarbage collector info:\n";
|
||||
std::cout<<"\ngarbage collector info\n";
|
||||
for(uint8_t i=vm_str;i<vm_type_size;++i)
|
||||
std::cout<<" "<<name[i]<<" | "<<count[i]<<"\n";
|
||||
std::cout<<"\nmemory allocator info(max size):\n";
|
||||
std::cout<<"\nmemory allocator info(max size)\n";
|
||||
for(uint8_t i=vm_str;i<vm_type_size;++i)
|
||||
std::cout<<" "<<name[i]<<" | "<<initialize[i]+size[i]*increment[i]<<"(+"<<size[i]<<")\n";
|
||||
}
|
||||
|
|
|
@ -363,7 +363,7 @@ void nasal_vm::opcallsort(const uint64_t* arr)
|
|||
opcall.end(),
|
||||
[](op& a,op& b){return a.second>b.second;}
|
||||
);
|
||||
std::cout<<"\noperands call info:";
|
||||
std::cout<<"\noperands call info";
|
||||
uint64_t total=0;
|
||||
for(auto& i:opcall)
|
||||
{
|
||||
|
@ -386,7 +386,7 @@ void nasal_vm::die(std::string str)
|
|||
inline bool nasal_vm::condition(nasal_ref val)
|
||||
{
|
||||
if(val.type==vm_num)
|
||||
return val.value.num;
|
||||
return val.num();
|
||||
else if(val.type==vm_str)
|
||||
{
|
||||
double num=str2num(val.str().c_str());
|
||||
|
|
26
test/bp.nas
26
test/bp.nas
|
@ -11,6 +11,16 @@ var new_neuron=func()
|
|||
};
|
||||
}
|
||||
|
||||
var tanh=func(x)
|
||||
{
|
||||
var (a,b)=(math.exp(x),math.exp(-x));
|
||||
return (a-b)/(a+b);
|
||||
}
|
||||
var difftanh=func(x)
|
||||
{
|
||||
x=tanh(x);
|
||||
return 1-x*x;
|
||||
}
|
||||
var sigmoid=func(x)
|
||||
{
|
||||
return 1/(1+math.exp(-x));
|
||||
|
@ -21,7 +31,7 @@ var diffsigmoid=func(x)
|
|||
return x*(1-x);
|
||||
}
|
||||
|
||||
var (inum,hnum,onum,lr)=(2,4,1,0.1);
|
||||
var (inum,hnum,onum)=(2,4,1);
|
||||
var training_set=[[0,0],[0,1],[1,0],[1,1]];
|
||||
var expect=[0,1,1,0];
|
||||
|
||||
|
@ -30,8 +40,8 @@ for(var i=0;i<hnum;i+=1)
|
|||
{
|
||||
append(hidden,new_neuron());
|
||||
for(var j=0;j<inum;j+=1)
|
||||
append(hidden[i].w,2*rand());
|
||||
hidden[i].bia=5*rand();
|
||||
append(hidden[i].w,rand()>0.5?-2*rand():2*rand());
|
||||
hidden[i].bia=rand()>0.5?-5*rand():5*rand();
|
||||
}
|
||||
|
||||
var output=[];
|
||||
|
@ -39,8 +49,8 @@ for(var i=0;i<onum;i+=1)
|
|||
{
|
||||
append(output,new_neuron());
|
||||
for(var j=0;j<hnum;j+=1)
|
||||
append(output[i].w,2*rand());
|
||||
output[i].bia=5*rand();
|
||||
append(output[i].w,rand()>0.5?-2*rand():2*rand());
|
||||
output[i].bia=rand()>0.5?-5*rand():5*rand();
|
||||
}
|
||||
|
||||
var forward=func(x)
|
||||
|
@ -51,7 +61,7 @@ var forward=func(x)
|
|||
hidden[i].in=hidden[i].bia;
|
||||
for(var j=0;j<inum;j+=1)
|
||||
hidden[i].in+=hidden[i].w[j]*input[j];
|
||||
hidden[i].out=sigmoid(hidden[i].in);
|
||||
hidden[i].out=tanh(hidden[i].in);
|
||||
}
|
||||
for(var i=0;i<onum;i+=1)
|
||||
{
|
||||
|
@ -70,7 +80,7 @@ var run=func(vec)
|
|||
hidden[i].in=hidden[i].bia;
|
||||
for(var j=0;j<inum;j+=1)
|
||||
hidden[i].in+=hidden[i].w[j]*input[j];
|
||||
hidden[i].out=sigmoid(hidden[i].in);
|
||||
hidden[i].out=tanh(hidden[i].in);
|
||||
}
|
||||
for(var i=0;i<onum;i+=1)
|
||||
{
|
||||
|
@ -94,7 +104,7 @@ var backward=func(x)
|
|||
hidden[i].diff=0;
|
||||
for(var j=0;j<onum;j+=1)
|
||||
hidden[i].diff+=output[j].w[i]*output[j].diff;
|
||||
hidden[i].diff*=diffsigmoid(hidden[i].in);
|
||||
hidden[i].diff*=difftanh(hidden[i].in);
|
||||
}
|
||||
for(var i=0;i<hnum;i+=1)
|
||||
{
|
||||
|
|
|
@ -226,6 +226,8 @@ var JSON=func(){
|
|||
var member=func(hash)
|
||||
{
|
||||
var name=token.content;
|
||||
if(token.type==j_rbrace)
|
||||
return;
|
||||
if(token.type==j_str)
|
||||
match(j_str);
|
||||
else
|
||||
|
@ -316,6 +318,10 @@ var ss=JSON.stringify({
|
|||
m3:[114514],
|
||||
m4:{year:1919,month:8,date:10}
|
||||
},
|
||||
emptyhash:{},
|
||||
emptyvec:[],
|
||||
empty:[{}],
|
||||
empty_an:[[[[[[{}]]]]]],
|
||||
function:func(){}
|
||||
});
|
||||
println(ss);
|
||||
|
|
Loading…
Reference in New Issue