aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorjvech <jmvalenciae@unal.edu.co>2024-07-16 07:11:51 -0500
committerjvech <jmvalenciae@unal.edu.co>2024-07-16 07:11:51 -0500
commit7300f3b643a6b2fcc66d4f77c5097d263dabc554 (patch)
tree80c037fa928c33c351807faf5db9a3b1ab7e2b23 /tests
parent0baa1c1beb9c52e4541c715e04ceb17402e05e19 (diff)
add: tests scripts implemented
Diffstat (limited to 'tests')
-rw-r--r--tests/architectures/big_nn.cfg20
-rw-r--r--tests/architectures/gauss1d.cfg16
-rw-r--r--tests/architectures/xor.cfg16
-rw-r--r--tests/main.sh10
-rw-r--r--tests/plots.gpi37
5 files changed, 99 insertions, 0 deletions
diff --git a/tests/architectures/big_nn.cfg b/tests/architectures/big_nn.cfg
new file mode 100644
index 0000000..a7b90a5
--- /dev/null
+++ b/tests/architectures/big_nn.cfg
@@ -0,0 +1,20 @@
+[net]
+loss = square ; options (square)
+epochs = 1000 ; comment
+alpha = 1e-6
+weights_path = data/big_nn.bin
+inputs = x,y
+labels = z
+
+; activation options (relu, sigmoid, softplus, leaky_relu)
+
+[layer]
+neurons=20
+activation=relu
+
+[layer]
+neurons=20
+activation=relu
+
+[outlayer]
+activation = sigmoid
diff --git a/tests/architectures/gauss1d.cfg b/tests/architectures/gauss1d.cfg
new file mode 100644
index 0000000..db1601d
--- /dev/null
+++ b/tests/architectures/gauss1d.cfg
@@ -0,0 +1,16 @@
+[net]
+loss = square ; options (square)
+epochs = 1000 ; comment
+alpha = 1e-2
+weights_path = data/gauss1d.bin
+inputs = x
+labels = y
+
+; activation options (relu, sigmoid, softplus, leaky_relu)
+
+[layer]
+neurons=10
+activation=sigmoid
+
+[outlayer]
+activation = sigmoid
diff --git a/tests/architectures/xor.cfg b/tests/architectures/xor.cfg
new file mode 100644
index 0000000..e0b06d4
--- /dev/null
+++ b/tests/architectures/xor.cfg
@@ -0,0 +1,16 @@
+[net]
+loss = square ; options (square)
+epochs = 1000 ; comment
+alpha = 0.05
+weights_path = data/xor.bin
+inputs = x,y
+labels = z
+
+; activation options (relu, sigmoid, softplus, leaky_relu)
+
+[layer]
+neurons=10
+activation=relu
+
+[outlayer]
+activation = sigmoid
diff --git a/tests/main.sh b/tests/main.sh
new file mode 100644
index 0000000..7224f79
--- /dev/null
+++ b/tests/main.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/bash
+echo 'Network Accuraccy'
+echo '-----------------'
+gnuplot tests/plots.gpi
+echo ''
+
+echo 'Benchmark test'
+echo '-------------------'
+time ./ml train -c tests/architectures/big_nn.cfg data/gauss2d.json > /dev/null
+echo ''
diff --git a/tests/plots.gpi b/tests/plots.gpi
new file mode 100644
index 0000000..85fbf98
--- /dev/null
+++ b/tests/plots.gpi
@@ -0,0 +1,37 @@
+#!/usr/bin/gnuplot
+set term pngcairo size 1080,720
+set output 'tests/network_accuracy.png'
+set multiplot layout 2, 2
+set grid
+
+json2tsv = "jq -r '.[] | [.[]] | @tsv' %s"
+train_cmd = "<./ml train %s -c %s"
+predict_cmd = "<./ml predict %s -c %s | ".sprintf(json2tsv, "-")
+
+# --
+data_gauss1d = "data/gauss1d.json"
+data_xor = "data/xor.json"
+
+# --
+arch_gauss1d = "tests/architectures/gauss1d.cfg"
+arch_xor = "tests/architectures/xor.cfg"
+
+
+set ylabel arch_gauss1d
+set logscale x
+plot sprintf(train_cmd, data_gauss1d, arch_gauss1d) u 2:4 with lines title 'loss'
+unset logscale
+unset ylabel
+
+plot sprintf(predict_cmd, data_gauss1d, arch_gauss1d) with lines title 'network',\
+ "<".sprintf(json2tsv, data_gauss1d) with lines title 'original'
+
+set ylabel arch_xor
+set logscale x
+plot sprintf(train_cmd, data_xor, arch_xor) u 2:4 with lines title 'loss'
+unset logscale
+unset ylabel
+
+set table "/dev/stdout"
+plot "<".sprintf(json2tsv, data_xor) using 1:2:3 with table,\
+ sprintf(predict_cmd, data_xor, arch_xor) using 3 with table
Feel free to download, copy and edit any repo