✨ add error report info in stl/mat
This commit is contained in:
parent
99434df819
commit
f9cbd0b426
32
stl/mat.nas
32
stl/mat.nas
|
@ -31,6 +31,9 @@ var mat_print=func(a) {
|
||||||
|
|
||||||
var add=func(a,b) {
|
var add=func(a,b) {
|
||||||
if(a.width!=b.width or a.height!=b.height) {
|
if(a.width!=b.width or a.height!=b.height) {
|
||||||
|
println("matrix a: ",a);
|
||||||
|
println("matrix b: ",b);
|
||||||
|
die("width and height must be the same");
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,6 +51,9 @@ var add=func(a,b) {
|
||||||
|
|
||||||
var sub=func(a,b) {
|
var sub=func(a,b) {
|
||||||
if(a.width!=b.width or a.height!=b.height) {
|
if(a.width!=b.width or a.height!=b.height) {
|
||||||
|
println("matrix a: ",a);
|
||||||
|
println("matrix b: ",b);
|
||||||
|
die("width and height must be the same");
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,6 +71,9 @@ var sub=func(a,b) {
|
||||||
|
|
||||||
var hardamard=func(a,b) {
|
var hardamard=func(a,b) {
|
||||||
if(a.width!=b.width or a.height!=b.height) {
|
if(a.width!=b.width or a.height!=b.height) {
|
||||||
|
println("matrix a: ",a);
|
||||||
|
println("matrix b: ",b);
|
||||||
|
die("width and height must be the same");
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,6 +140,9 @@ var activate=func(a,f) {
|
||||||
|
|
||||||
var mult=func(a,b) {
|
var mult=func(a,b) {
|
||||||
if(a.width!=b.height) {
|
if(a.width!=b.height) {
|
||||||
|
println("matrix a: ",a);
|
||||||
|
println("matrix b: ",b);
|
||||||
|
die("a.width must equal to b.height, but get a.width:"~str(a.width)~" and b.height"~str(b.height));
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -170,26 +182,6 @@ var difftanh=func(x) {
|
||||||
return 1-x*x;
|
return 1-x*x;
|
||||||
}
|
}
|
||||||
|
|
||||||
var test=func() {
|
|
||||||
for(var i=0;i<1e4;i+=1) {
|
|
||||||
var a=mat(4,20);
|
|
||||||
var b=mat(10,4);
|
|
||||||
var c=a;
|
|
||||||
rand_init(a);
|
|
||||||
rand_init(b);
|
|
||||||
mult(a,b);
|
|
||||||
add(a,c);
|
|
||||||
sub(a,c);
|
|
||||||
neg(a);
|
|
||||||
trans(a);
|
|
||||||
activate(a,sigmoid);
|
|
||||||
activate(a,tanh);
|
|
||||||
if(i-int(i/100)*100==0) {
|
|
||||||
print(i/1e4*100,"% \r");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var bp_example=func() {
|
var bp_example=func() {
|
||||||
srand();
|
srand();
|
||||||
var lr=0.01;
|
var lr=0.01;
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import.stl.mat;
|
||||||
|
|
||||||
rand(time(0));
|
rand(time(0));
|
||||||
|
|
||||||
var new_neuron=func(){
|
var new_neuron=func(){
|
||||||
|
@ -123,4 +125,6 @@ if(cnt>=3e5){
|
||||||
foreach(var v;training_set){
|
foreach(var v;training_set){
|
||||||
run(v);
|
run(v);
|
||||||
print(v,': ',output[0].out,'\n');
|
print(v,': ',output[0].out,'\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bp_example();
|
Loading…
Reference in New Issue