From fdc8a272dd6dc2d73999201895e4e9d8ebe16609 Mon Sep 17 00:00:00 2001 From: fractalmanifold Date: Tue, 27 Aug 2024 18:30:29 +0200 Subject: [PATCH] dummy --- CMakeLists_files.cmake | 11 ++++- opm/ml/ml_tools/__init__.py | 0 opm/ml/ml_tools/models/test_dense_10x1.model | Bin 68 -> 0 bytes opm/ml/ml_tools/models/test_dense_10x10.model | Bin 528 -> 0 bytes .../ml_tools/models/test_dense_10x10x10.model | Bin 924 -> 0 bytes opm/ml/ml_tools/models/test_dense_1x1.model | Bin 32 -> 0 bytes opm/ml/ml_tools/models/test_dense_2x2.model | Bin 80 -> 0 bytes .../ml_tools/models/test_dense_relu_10.model | Bin 1384 -> 0 bytes .../ml_tools/models/test_dense_tanh_10.model | Bin 1384 -> 0 bytes opm/ml/ml_tools/models/test_relu_10.model | Bin 472 -> 0 bytes .../models/test_scalingdense_1x1.model | Bin 1884 -> 0 bytes opm/ml/ml_tools/scalertest.py | 46 ------------------ {opm => tests}/ml/keras_model_test.cpp | 24 ++++----- .../ml/ml_tools/generateunittests.py | 21 ++++---- .../ml/ml_tools/include/test_dense_10x1.hpp | 8 +-- .../ml/ml_tools/include/test_dense_10x10.hpp | 8 +-- .../ml_tools/include/test_dense_10x10x10.hpp | 10 ++-- .../ml/ml_tools/include/test_dense_1x1.hpp | 2 +- .../ml/ml_tools/include/test_dense_2x2.hpp | 6 +-- .../ml_tools/include/test_dense_relu_10.hpp | 10 ++-- .../ml_tools/include/test_dense_tanh_10.hpp | 10 ++-- .../ml/ml_tools/include/test_relu_10.hpp | 10 ++-- .../include/test_scalingdense_10x1.hpp | 14 +++--- .../ml/ml_tools/models/test_dense_10x1.model | Bin 0 -> 68 bytes .../ml/ml_tools/models/test_dense_10x10.model | Bin 0 -> 528 bytes .../ml_tools/models/test_dense_10x10x10.model | Bin 0 -> 924 bytes tests/ml/ml_tools/models/test_dense_1x1.model | Bin 0 -> 32 bytes tests/ml/ml_tools/models/test_dense_2x2.model | Bin 0 -> 80 bytes .../ml_tools/models/test_dense_relu_10.model | Bin 0 -> 1384 bytes .../ml_tools/models/test_dense_tanh_10.model | Bin 0 -> 1384 bytes tests/ml/ml_tools/models/test_relu_10.model | Bin 0 -> 472 bytes .../models/test_scalingdense_10x1.model | Bin 0 -> 1884 bytes 32 files changed, 70 insertions(+), 110 deletions(-) create mode 100644 opm/ml/ml_tools/__init__.py delete mode 100644 opm/ml/ml_tools/models/test_dense_10x1.model delete mode 100644 opm/ml/ml_tools/models/test_dense_10x10.model delete mode 100644 opm/ml/ml_tools/models/test_dense_10x10x10.model delete mode 100644 opm/ml/ml_tools/models/test_dense_1x1.model delete mode 100644 opm/ml/ml_tools/models/test_dense_2x2.model delete mode 100644 opm/ml/ml_tools/models/test_dense_relu_10.model delete mode 100644 opm/ml/ml_tools/models/test_dense_tanh_10.model delete mode 100644 opm/ml/ml_tools/models/test_relu_10.model delete mode 100644 opm/ml/ml_tools/models/test_scalingdense_1x1.model rename {opm => tests}/ml/keras_model_test.cpp (88%) rename {opm => tests}/ml/ml_tools/generateunittests.py (95%) rename opm/ml/ml_tools/include/test_dense_10x1.h => tests/ml/ml_tools/include/test_dense_10x1.hpp (85%) rename opm/ml/ml_tools/include/test_dense_10x10.h => tests/ml/ml_tools/include/test_dense_10x10.hpp (85%) rename opm/ml/ml_tools/include/test_dense_10x10x10.h => tests/ml/ml_tools/include/test_dense_10x10x10.hpp (81%) rename opm/ml/ml_tools/include/test_dense_1x1.h => tests/ml/ml_tools/include/test_dense_1x1.hpp (93%) rename opm/ml/ml_tools/include/test_dense_2x2.h => tests/ml/ml_tools/include/test_dense_2x2.hpp (89%) rename opm/ml/ml_tools/include/test_dense_relu_10.h => tests/ml/ml_tools/include/test_dense_relu_10.hpp (83%) rename opm/ml/ml_tools/include/test_dense_tanh_10.h => tests/ml/ml_tools/include/test_dense_tanh_10.hpp (81%) rename opm/ml/ml_tools/include/test_relu_10.h => tests/ml/ml_tools/include/test_relu_10.hpp (83%) rename opm/ml/ml_tools/include/test_scalingdense_1x1.h => tests/ml/ml_tools/include/test_scalingdense_10x1.hpp (76%) create mode 100644 tests/ml/ml_tools/models/test_dense_10x1.model create mode 100644 tests/ml/ml_tools/models/test_dense_10x10.model create mode 100644 tests/ml/ml_tools/models/test_dense_10x10x10.model create mode 100644 tests/ml/ml_tools/models/test_dense_1x1.model create mode 100644 tests/ml/ml_tools/models/test_dense_2x2.model create mode 100644 tests/ml/ml_tools/models/test_dense_relu_10.model create mode 100644 tests/ml/ml_tools/models/test_dense_tanh_10.model create mode 100644 tests/ml/ml_tools/models/test_relu_10.model create mode 100644 tests/ml/ml_tools/models/test_scalingdense_10x1.model diff --git a/CMakeLists_files.cmake b/CMakeLists_files.cmake index 85a790dfb2c..877962a2a76 100644 --- a/CMakeLists_files.cmake +++ b/CMakeLists_files.cmake @@ -475,7 +475,7 @@ list (APPEND TEST_SOURCE_FILES tests/material/test_spline.cpp tests/material/test_tabulation.cpp tests/test_Visitor.cpp - opm/ml/keras_model_test.cpp + tests/ml/keras_model_test.cpp ) # tests that need to be linked to dune-common @@ -648,6 +648,15 @@ list (APPEND TEST_DATA_FILES tests/material/co2_unittest_below_sat.json tests/material/h2o_unittest.json tests/material/h2_unittest.json + tests/ml/ml_tools/models/test_dense_1x1.model + tests/ml/ml_tools/models/test_dense_2x2.model + tests/ml/ml_tools/models/test_dense_10x1.model + tests/ml/ml_tools/models/test_dense_10x10.model + tests/ml/ml_tools/models/test_dense_10x10x10.model + tests/ml/ml_tools/models/test_dense_relu_10.model + tests/ml/ml_tools/models/test_dense_tanh_10.model + tests/ml/ml_tools/models/test_relu_10.model + tests/ml/ml_tools/models/test_scalingdense_10x1.model ) if(ENABLE_ECL_OUTPUT) list (APPEND TEST_DATA_FILES diff --git a/opm/ml/ml_tools/__init__.py b/opm/ml/ml_tools/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/opm/ml/ml_tools/models/test_dense_10x1.model b/opm/ml/ml_tools/models/test_dense_10x1.model deleted file mode 100644 index f1086a32d645e7db0e4c78ee1c3bc3761e6f5aaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmZQ%U|?VYVlE(NgyKI+U+nb08{4~gCGV41zT56Glic3y>cD+73>WS*XF6`XQELC* OdrlJeX+q7rKzaZq%M>vH diff --git a/opm/ml/ml_tools/models/test_dense_10x10.model b/opm/ml/ml_tools/models/test_dense_10x10.model deleted file mode 100644 index 17472786855e0845e195ba85191f6fd3403c4a0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 528 zcmZQ#U|?VYVlE^s%FSh8X((yObaVT@$14l>1wH?`?|F;9-RwRkyAR$o_Z2(b-p8!C zaj)l&+I_)qbZx)x+r97SWc7Vof4c00_7msC%F9WiI>FpDK0_^Em7~g(vUZx_aF{)elDdWcq&Yn|%6(9b-6~{aM#` z+jsR$_UrDhvYofEf8T@ux9x-`Fzw$Ic*ZU~NXO18ceh=I%ej4zXP>q!_u7f=`L5lSdx!V6PWigeGwY@y~|IYP}=SwK1iNCVls(t#Mn2Z_%RY_Zbqz diff --git a/opm/ml/ml_tools/models/test_dense_10x10x10.model b/opm/ml/ml_tools/models/test_dense_10x10x10.model deleted file mode 100644 index a934f334710574e08d7f7cbde499ce00a4fc61c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 924 zcmZwEe^AqP9LMot_+v8;;j)b%lBQ4r*7ZX;X`lDk)M27gcy@RPr4}f%pdWOcW-vL9 z0z40-#sC@JL|~nF4iV6{eP6=?-jW}(LJUDg=H{ISb&cCV#QN^~r$74Raj*CL@8=?s zNaQb&{KreqCjM8Y8@IP!qO|jJbVan|Nvemg82gzqV1a*-f7TTLg_YS72R53uO3G8k zBj!K~EhI)^EO$31)|{ru0}>3zR8iS7G3PaDS^Hml>My=U+OvLKxN8g%6&}jJYh|w- zIz%NN8HIJcNH0(ham#H;OCRZl#`!4vL=+#Lac1)EW3AS`2w~?70;b z7w6{hN6jJEbCvcFiMdeqggjvT5=+I%6w>2rsA0X0I+v;`rQDx0J-;4@W4mar?G)HPELjKJxdQD#;=l&v26?+?fCELw= zf{TqQ!Nm!=!e$FngDi!JNKL;U5$Hh$HY zD_}^j$Dae=^BRSQFQ1BHw*B|`nl0T-I;kL4<#`Hv*v1?7oq~K^Yks4r3FGoUDmYre zr+jn;eV6wlWMw41ysLrQ%{Qp%;tWF33i}^^-0IJ&aaA{rGi}%Cu_c6NTn>b`YVjyw zl8WBusLrh)8e{>-~Jv*If6rmek8gwx>>hB~+lM}^3<&cyL5s4V9AT#5zQrMwrrie~>eE2rs1m6f znY2uHLD(M~M>%o1IB`uX+`Z3)c3V_XRQrqC{7{7%oBh<1>P@8LX(i}_&ysm>GpP9o zv}(e?fKt7P0Op$vvCD};MAjt;x9TEOo0)W=dpeR#jxbkoAD13Zhlei7(9+oqxQUNf zd0)c1iatbfD$LS(A@?sSsVN_#w9y=#w=f2FKi&_rfmAdMOoE4B25B8ph7;|}p})8e zRtm;I(>_nlKAeCRB0H3YzDwEis&M4USseW)6W?2Km8|gO;nFmFsQldxX0Ggo5{gA> zl+U1JXA*e)^okt3kxe@2XVCZ3J_R>rnc91BC2R1rFaCXiad4han z016#bYAkq&&C@#N!yQuuftGp6bawIOK>@>(|CePBClT6HveBP^g5u4L$6zltb=HwB z=F1CEX1c7F9<-s`xEEnlr2!kqpJURP23}{`(yd$;Ejc}#EaX1JMUgH*`1~eX)xe<@ zqwQGHbRXnid<>f#kM=t_;>BY&;>dYy+)8I*85sxFbtdese}p5dZ_((Oi}E>jRQH8G z^|E?7N;>-0$8WWOETIieiQe#JNjb!3ou;~r21GcE1|lF%73hVMU1<#-skko1MK#FuhgZpL%4u%T*7(>H&exASCVl4y$|yV9h&hdSrAP?(Vw- znWIrK>+x&kYFVh1JCl+fGQ8L7fd&IZ+$OjU#>6NrQG251@(Wn8eg=?_t>6H-&`LM+VIOmmC0X!Nw7+Wk}i$1=E{BQD(I zO%<7kP$80m?_vU##?c8T72?=8Ou+mirn*cWO?j!Sa+3+p34}d@?@#u=yg`m-8h$QuB}16yEC3&Ek~#Mm+;JZ6!JtH;MOW%(%tGc z=vO)5>V(6hb&HH>-71HdUA0&`+ysdPo3=bN@Vt@g?sJ9}4Nt(hhoD=!x=5*WB?u0v z;ET=-2xpzgRB1MK#I6_uhXI|wY6mStNLtGaVd*DnWM+0Abad6jIK$p8QV diff --git a/opm/ml/ml_tools/models/test_dense_tanh_10.model b/opm/ml/ml_tools/models/test_dense_tanh_10.model deleted file mode 100644 index 0462aa5b59150e38a9bef9c0dfdfcf0aeb6781bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1384 zcmZwEYdF+t7{~E3l4+zZk!p27wGNx8B+PUFh0+n()JAMkjZ>FHr9xL_P?KX3$xwBNj8}n+AWeAO{QyOvCBw@{cGRsi(Y)L`}aI=zv?U&YXXD&KOtG!uxM!x zj(O?h*g&%=K_UbTA7^|M_Xetx_n`9ADpYz;qFJ5m&|jS`4maL_xgINNozcG9St?CR z7C?x_j|E^;U;+!~sZ*~)nsI&KH8?r52ieUd7~Nz59yUcVzabVDMJ0l(@+|DoQKOzr zpCC3a@`Wsc0bGj=1jD=CICxzRJ@;~{?YD|i>v=mimZ~sQcnN2#U*svyUnFmfGw6M8 z(Ij)^DOCSZ2nnx?csCzwith_X@XG3~kahbq@pH=gr)ejL*{qH37_9HdSC3$ZUcLCwPOHQo%GI5O$eY&- zEOR|9=2+A9Q>@S^r5%k;9l+M2nOLV!gMs{WSaseCPa7@~HP1K>;5`gC?A=gVs7~2k zu7x7=2e{vVK7Kx+0rD4X@Q7&-Zane~*dF`wPu^SmawjELN(Feqs|t03YKd?71Kh;l z#Je+@L(PcPMEj>)v2#=zW*lyTxJnfkz77HBC>33O! zniw zeo#Ff*DObid!^8}!WIvPXi-D%7O?baB5J$HF!S>eq^+~TWJ`{Cutp9G9<@Smt{+`^ zp+Q7{tinxkT2%b6TVcP>R$`bRg9^{%5SnfcrAZ&LRlgNNO=3`9=Y)NF8sZ%eF7UE~ zOSu=;W7;6;Hc2(wJRdM=H;aVYpC@nh-h>g<-~+S||%P=g2-6(-r$H3cl`h<~+QwWJ<4H!F%3)c}aimcHI47oAUnJ-s-b% zcApfM?u$shwvVCHVeb;hvOS-!a_ndD-DR`j&6RyEk5}(IpTBtD?*p6mj%#ImIu7o%`!}L7?v`a~p-WOiZVjnQ&+P*W{v-h?;Fx#tDH0@2h%&~vZvV?ss zNj&yW{Zs51PE_yO+^V|w)#fdBz^Gy95^T205Nfspu|eRIK(ke diff --git a/opm/ml/ml_tools/models/test_scalingdense_1x1.model b/opm/ml/ml_tools/models/test_scalingdense_1x1.model deleted file mode 100644 index 943461caa6e585d1fe924658bf1d07be492df8ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1884 zcmaKtc~q3=6~KxrD!@uWF@&w1Xv{rNl3z0>sc z^aN9KIZfXSmp@-Ql}^1wtl`ve{EEi1#>t?18gv(v;lD!56>s60(4z&UnR(bFakne{ zBti7O;rr+)5%ErrnKaia3p*zqF_3J@oYpsi^no$o*R!5`a`hkdZK9ALxoLtU(=DmX zB z?5@r`a1i|lTAy)D%dDgzGkyL~N(XX{7{}0zb@V7xMxNCnXc#WU$nhkS^`_8p=sJex zl;Qs8vE+X%4Wo)Ix)kPuOKx9a<2rLne)k&9$ytKVyy@)pG$}o8&A<$sRa~rKIVTki z;Q9GV&dNcbFEJXT&YpV|dg*TYdR-GvT&?3OE*DVM9U<@aT^v(iRYg|E9>cl4fJ-$Zxpf31eZZt;jLv_$ob3v@2{BxSDZ`vco%#0J>2)YxxK zDsc?CN^hWhs0kfGt#rR>7qp>rX7B5(qIs35bw%kA(drQM_o9S`47Y$#B1E(6^Rb07ec z)wAjJG7+D(tD7`QnM$!rjR&HK)E_uV7K(HPmh_UV`W&OGGv@h70l(?Zv-nXHL<0gq z)i^;-Vb>w8EN70}SRmC|pO-O#O1l9bw>RfNY#NJNiI`RBPomZR66&l!@W{|_qxGBR z@Twcf+2RMZ@P0UjI(C+SsLP`5JIpxES5Y{`ltE;3$D`89nB8!pfC)A|#rZRR6r9_| znC?qt7W?He(%C$+lIJpwEv^vAx;Ue0PMEc%m2Minz$+Yo$@4$;%igcDtZ$MdpiM=8 zW~}j6%>eQgMr<#hA^7!nra7e$OEw8ujdU9&^qirOysbzZI6{ImPq}w=7io`tl(N02 zkEE+vXE98eM*jbBi)fFzndJ%K*0%79FS<-zLi&2{f}J< zf3C;9Au&I4v|U*)EubD32@-$*Ced&idCsy$P*Fb3I(dTpL<``Q=19I@YROgd3?p8K z?6o2tSwv;P#jlGTy7l>x6(`95w>9Jv-p&Piehg;Vmfn^+fT@VYof9H9EVqe7y+@T+ zbMkQcz%#1PDJ0p-et0P+QLT+a-EbaFXbTy$a2W~jy++=VecZ%;9rjiAV0M)nf`67$ z{KE~j)VB_YFSc{Z{c0?}puMG=kiZd2XrO-!adm0?)U_BSXHMvZBMepLzYn?WG4_?Y-pr zYrbsxv{>o8shGk8+_<={h162I8j2-@DDzBFs_liW*t-!?tQq%S^D;_LP4_S_<;iOL zEw~z1F^QalC+(<1d#>Vv@ON3eMJYq%$B(PT4-FYF_*u+5B$o$^qxiAUZJOOh)JkmVe~ zxi*XWl*S08ytNkvIafG4hiv@rb`chBnTh1hDe&H&LV|ylK-N6pBgShOG1nhL_9P7< z#pg*^`vY_jN@=aJ7vjXX@RfKFYtGkTI5mLg%}l_?*1uxUKnFx)*-E3*eY9SwBrEq` zSRGH}p1WqFaPc|#RqTRKk{#6AC<=~NbKl%}LHi0M9=4wvWA7Ca%y&nS{T2h(e5lD| zY}pzzjWAb^I(5Q)-bs>$Jw=zvb<8;M0X%tk>i$H_Rkdj0!>;61A$64B)j?w;3+PpD Y|A*yIzBHKHvoCLG?d{#)P2Eub-_JF3hX4Qo diff --git a/opm/ml/ml_tools/scalertest.py b/opm/ml/ml_tools/scalertest.py index 3834683f111..ef5a819a686 100644 --- a/opm/ml/ml_tools/scalertest.py +++ b/opm/ml/ml_tools/scalertest.py @@ -16,8 +16,6 @@ # You should have received a copy of the GNU General Public License # along with OPM. If not, see . - - from __future__ import annotations import pathlib @@ -39,58 +37,14 @@ data: np.ndarray = np.random.uniform(-500, 500, (5, 1)) -# model: keras.Model = keras.Sequential( -# -# [ -# -# keras.layers.Input([10]), -# -# MinMaxScalerLayer(feature_range=feature_ranges[0]), -# -# keras.layers.Dense(units=10), -# -# MinMaxUnScalerLayer(feature_range=feature_ranges[1]), -# -# ] -# -# ) - model = Sequential() model.add(keras.layers.Input([1])) model.add(MinMaxScalerLayer(feature_range=(0.0, 1.0))) -# model.add(Flatten()) model.add(Dense(1, input_dim=1)) model.add(Dense(1, input_dim=1)) model.add(Dense(1, input_dim=1)) model.add(Dense(1, input_dim=1)) model.add(MinMaxUnScalerLayer(feature_range=(-3.7, -1.0))) -# -# model.get_layer(model.layers[0].name).adapt(data=data) -# model.get_layer(model.layers[-1].name).adapt(data=data) - -# model.add(Dense(1, input_dim=1)) - -# model: keras.Model = keras.Sequential( -# -# [ -# -# keras.layers.Input([1]), -# -# MinMaxScalerLayer(feature_range=(0.0, 1.0)), -# -# # keras.layers.Dense(1, input_dim=1), -# -# # MinMaxUnScalerLayer(feature_range=(0.0, 1.0)), -# -# ] -# -# ) - - -# -# model.get_layer(model.layers[0].name).adapt(data=data) -# # -# model.get_layer(model.layers[-1].name).adapt(data=data) export_model(model, str(savepath)) diff --git a/opm/ml/keras_model_test.cpp b/tests/ml/keras_model_test.cpp similarity index 88% rename from opm/ml/keras_model_test.cpp rename to tests/ml/keras_model_test.cpp index cb597208fbb..2eef0a75c01 100644 --- a/opm/ml/keras_model_test.cpp +++ b/tests/ml/keras_model_test.cpp @@ -24,18 +24,18 @@ along with OPM. If not, see . */ -#include "keras_model.hpp" +#include #include #include -#include "ml_tools/include/test_dense_10x1.h" -#include "ml_tools/include/test_dense_10x10.h" -#include "ml_tools/include/test_dense_10x10x10.h" -#include "ml_tools/include/test_dense_1x1.h" -#include "ml_tools/include/test_dense_2x2.h" -#include "ml_tools/include/test_relu_10.h" -#include "ml_tools/include/test_dense_relu_10.h" -#include "ml_tools/include/test_dense_tanh_10.h" -#include "ml_tools/include/test_scalingdense_1x1.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace Opm { @@ -148,9 +148,9 @@ bool tensor_test() { return true; } - } + int main() { typedef Opm::DenseAd::Evaluation Evaluation; @@ -193,7 +193,7 @@ int main() { return 1; } - if (!test_scalingdense_1x1(&load_time, &apply_time)) { + if (!test_scalingdense_10x1(&load_time, &apply_time)) { return 1; } diff --git a/opm/ml/ml_tools/generateunittests.py b/tests/ml/ml_tools/generateunittests.py similarity index 95% rename from opm/ml/ml_tools/generateunittests.py rename to tests/ml/ml_tools/generateunittests.py index 1f4ed36dc03..60804b89e4c 100644 --- a/opm/ml/ml_tools/generateunittests.py +++ b/tests/ml/ml_tools/generateunittests.py @@ -14,14 +14,16 @@ # You should have received a copy of the GNU General Public License # along with OPM. If not, see . - import numpy as np import pprint -import os +import os, sys from tensorflow import keras from keras.models import Sequential from keras.layers import Conv2D, Dense, Flatten, Activation, MaxPooling2D, Dropout, BatchNormalization, ELU, Embedding, LSTM + +sys.path.append('../../../opm/ml/ml_tools') + from kerasify import export_model from scaler_layers import MinMaxScalerLayer, MinMaxUnScalerLayer @@ -110,12 +112,10 @@ def to_cpp(ndarray): } ''' - directory = os.getcwd() directory1 = "models" directory2 = "include" -# path1=os.path.abspath(directory) if os.path.isdir(directory1): print(f"{directory1} exists.") else: @@ -123,7 +123,6 @@ def to_cpp(ndarray): path1 = os.path.join(directory, directory1) os.makedirs(path1) - if os.path.isdir(directory2): print(f"{directory2} exists.") else: @@ -139,17 +138,16 @@ def output_testcase(model, test_x, test_y, name, eps): print(model.summary()) export_model(model, 'models/test_%s.model' % name) - path = os.path.abspath(f'../../opm-common/opm/ml/ml_tools/models/test_{name}.model') + path = os.path.abspath(f'tests/ml/ml_tools/models/test_{name}.model') relative_path = os.path.relpath(path) - with open('include/test_%s.h' % name, 'w') as f: + with open('include/test_%s.hpp' % name, 'w') as f: x_shape, x_data = c_array(test_x[0]) y_shape, y_data = c_array(predict_y[0]) f.write(TEST_CASE % (name, name, x_shape, x_data, y_shape, y_data, relative_path, eps)) - -# scaling 1x1 +# scaling 10x1 data: np.ndarray = np.random.uniform(-500, 500, (5, 1)) feature_ranges: list[tuple[float, float]] = [(0.0, 1.0), (-3.7, 0.0)] test_x = np.random.rand(10, 10).astype('f') @@ -166,7 +164,7 @@ def output_testcase(model, test_x, test_y, name, eps): # # model.get_layer(model.layers[0].name).adapt(data=data) model.get_layer(model.layers[-1].name).adapt(data=data) -output_testcase(model, test_x, test_y, 'scalingdense_1x1', '1e-3') +output_testcase(model, test_x, test_y, 'scalingdense_10x1', '1e-3') # Dense 1x1 test_x = np.arange(10) @@ -230,5 +228,4 @@ def output_testcase(model, test_x, test_y, name, eps): model.add(Dense(10, input_dim=10, activation='tanh')) model.add(Dense(10, input_dim=10, activation='tanh')) model.add(Dense(10, input_dim=10, activation='tanh')) -output_testcase(model, test_x, test_y, 'dense_tanh_10', '1e-6') - +output_testcase(model, test_x, test_y, 'dense_tanh_10', '1e-6') \ No newline at end of file diff --git a/opm/ml/ml_tools/include/test_dense_10x1.h b/tests/ml/ml_tools/include/test_dense_10x1.hpp similarity index 85% rename from opm/ml/ml_tools/include/test_dense_10x1.h rename to tests/ml/ml_tools/include/test_dense_10x1.hpp index 9d75acaee2b..6e0c497debb 100644 --- a/opm/ml/ml_tools/include/test_dense_10x1.h +++ b/tests/ml/ml_tools/include/test_dense_10x1.hpp @@ -39,17 +39,17 @@ bool test_dense_10x1(Evaluation* load_time, Evaluation* apply_time) KASSERT(apply_time, "Invalid Evaluation"); Opm::Tensor in{10}; - in.data_ = {0.74998796,0.21858868,0.23070294,0.070500664,0.46532258,0.49146336, -0.3717498,0.45293888,0.6332608,0.43785256}; + in.data_ = {0.17291813,0.55951893,0.55021375,0.8738541,0.2227031,0.90520567, +0.32658377,0.9591912,0.81037205,0.9161704}; Opm::Tensor out{1}; - out.data_ = {0.49467176}; + out.data_ = {-0.19687384}; KerasTimer load_timer; load_timer.Start(); KerasModel model; - KASSERT(model.LoadModel("../../opm-common/opm/ml/ml_tools/models/test_dense_10x1.model"), "Failed to load model"); + KASSERT(model.LoadModel("tests/ml/ml_tools/models/test_dense_10x1.model"), "Failed to load model"); *load_time = load_timer.Stop(); diff --git a/opm/ml/ml_tools/include/test_dense_10x10.h b/tests/ml/ml_tools/include/test_dense_10x10.hpp similarity index 85% rename from opm/ml/ml_tools/include/test_dense_10x10.h rename to tests/ml/ml_tools/include/test_dense_10x10.hpp index 6068ad9e363..b16c683a105 100644 --- a/opm/ml/ml_tools/include/test_dense_10x10.h +++ b/tests/ml/ml_tools/include/test_dense_10x10.hpp @@ -39,17 +39,17 @@ bool test_dense_10x10(Evaluation* load_time, Evaluation* apply_time) KASSERT(apply_time, "Invalid Evaluation"); Opm::Tensor in{10}; - in.data_ = {0.46586692,0.9036544,0.5005982,0.5969117,0.09755054,0.60282475, -0.9040883,0.6297268,0.12081735,0.42354217}; + in.data_ = {0.7425694,0.8231955,0.43356442,0.1050322,0.68590504,0.004866237, +0.2682057,0.2863745,0.51028156,0.4160977}; Opm::Tensor out{1}; - out.data_ = {0.04306573}; + out.data_ = {0.42263064}; KerasTimer load_timer; load_timer.Start(); KerasModel model; - KASSERT(model.LoadModel("../../opm-common/opm/ml/ml_tools/models/test_dense_10x10.model"), "Failed to load model"); + KASSERT(model.LoadModel("tests/ml/ml_tools/models/test_dense_10x10.model"), "Failed to load model"); *load_time = load_timer.Stop(); diff --git a/opm/ml/ml_tools/include/test_dense_10x10x10.h b/tests/ml/ml_tools/include/test_dense_10x10x10.hpp similarity index 81% rename from opm/ml/ml_tools/include/test_dense_10x10x10.h rename to tests/ml/ml_tools/include/test_dense_10x10x10.hpp index 8bd8659d171..7d8e75c93df 100644 --- a/opm/ml/ml_tools/include/test_dense_10x10x10.h +++ b/tests/ml/ml_tools/include/test_dense_10x10x10.hpp @@ -39,18 +39,18 @@ bool test_dense_10x10x10(Evaluation* load_time, Evaluation* apply_time) KASSERT(apply_time, "Invalid Evaluation"); Opm::Tensor in{10}; - in.data_ = {0.5250269,0.20885888,0.2868855,0.11718734,0.56410795,0.3253708, -0.63131493,0.44084042,0.6677203,0.29525173}; + in.data_ = {0.19410305,0.7003953,0.8654097,0.52044004,0.56675416,0.3896138, +0.39529598,0.28999075,0.8540118,0.2849137}; Opm::Tensor out{10}; - out.data_ = {0.054961562,-0.45561615,-0.2112424,0.0062360223,0.3164827, -0.746866,-0.41519523,0.004653876,0.58843577,-0.3870317}; + out.data_ = {0.17738305,0.66652817,-0.06525068,0.71002805,0.044267435, +0.5738672,0.44073245,-0.22361669,0.49488887,-0.064859115}; KerasTimer load_timer; load_timer.Start(); KerasModel model; - KASSERT(model.LoadModel("../../opm-common/opm/ml/ml_tools/models/test_dense_10x10x10.model"), "Failed to load model"); + KASSERT(model.LoadModel("tests/ml/ml_tools/models/test_dense_10x10x10.model"), "Failed to load model"); *load_time = load_timer.Stop(); diff --git a/opm/ml/ml_tools/include/test_dense_1x1.h b/tests/ml/ml_tools/include/test_dense_1x1.hpp similarity index 93% rename from opm/ml/ml_tools/include/test_dense_1x1.h rename to tests/ml/ml_tools/include/test_dense_1x1.hpp index 668dbf54f16..f955f7ac157 100644 --- a/opm/ml/ml_tools/include/test_dense_1x1.h +++ b/tests/ml/ml_tools/include/test_dense_1x1.hpp @@ -48,7 +48,7 @@ bool test_dense_1x1(Evaluation* load_time, Evaluation* apply_time) load_timer.Start(); KerasModel model; - KASSERT(model.LoadModel("../../opm-common/opm/ml/ml_tools/models/test_dense_1x1.model"), "Failed to load model"); + KASSERT(model.LoadModel("tests/ml/ml_tools/models/test_dense_1x1.model"), "Failed to load model"); *load_time = load_timer.Stop(); diff --git a/opm/ml/ml_tools/include/test_dense_2x2.h b/tests/ml/ml_tools/include/test_dense_2x2.hpp similarity index 89% rename from opm/ml/ml_tools/include/test_dense_2x2.h rename to tests/ml/ml_tools/include/test_dense_2x2.hpp index 10ea423b013..f75cb3fe152 100644 --- a/opm/ml/ml_tools/include/test_dense_2x2.h +++ b/tests/ml/ml_tools/include/test_dense_2x2.hpp @@ -39,16 +39,16 @@ bool test_dense_2x2(Evaluation* load_time, Evaluation* apply_time) KASSERT(apply_time, "Invalid Evaluation"); Opm::Tensor in{2}; - in.data_ = {0.31118634,0.7765746}; + in.data_ = {0.401759,0.21791744}; Opm::Tensor out{1}; - out.data_ = {-0.18889335}; + out.data_ = {0.40147796}; KerasTimer load_timer; load_timer.Start(); KerasModel model; - KASSERT(model.LoadModel("../../opm-common/opm/ml/ml_tools/models/test_dense_2x2.model"), "Failed to load model"); + KASSERT(model.LoadModel("tests/ml/ml_tools/models/test_dense_2x2.model"), "Failed to load model"); *load_time = load_timer.Stop(); diff --git a/opm/ml/ml_tools/include/test_dense_relu_10.h b/tests/ml/ml_tools/include/test_dense_relu_10.hpp similarity index 83% rename from opm/ml/ml_tools/include/test_dense_relu_10.h rename to tests/ml/ml_tools/include/test_dense_relu_10.hpp index 2c71b73ca58..190627483ae 100644 --- a/opm/ml/ml_tools/include/test_dense_relu_10.h +++ b/tests/ml/ml_tools/include/test_dense_relu_10.hpp @@ -39,18 +39,18 @@ bool test_dense_relu_10(Evaluation* load_time, Evaluation* apply_time) KASSERT(apply_time, "Invalid Evaluation"); Opm::Tensor in{10}; - in.data_ = {0.8129924,0.75172913,0.5933609,0.15881199,0.6235366,0.87480235, -0.7488489,0.11598817,0.17794482,0.53804207}; + in.data_ = {0.26160437,0.12646836,0.738134,0.21118933,0.8889372,0.5010538, +0.9388751,0.34989306,0.13648356,0.076768965}; Opm::Tensor out{10}; - out.data_ = {0.13795315,0.,0.074093476,0.3255115,0.64427626,0., -0.014938377,0.,0.,0.}; + out.data_ = {0.4369418,1.300816,0.7456924,0.,0.,0.21714777, +0.062389035,0.,0.,0.}; KerasTimer load_timer; load_timer.Start(); KerasModel model; - KASSERT(model.LoadModel("../../opm-common/opm/ml/ml_tools/models/test_dense_relu_10.model"), "Failed to load model"); + KASSERT(model.LoadModel("tests/ml/ml_tools/models/test_dense_relu_10.model"), "Failed to load model"); *load_time = load_timer.Stop(); diff --git a/opm/ml/ml_tools/include/test_dense_tanh_10.h b/tests/ml/ml_tools/include/test_dense_tanh_10.hpp similarity index 81% rename from opm/ml/ml_tools/include/test_dense_tanh_10.h rename to tests/ml/ml_tools/include/test_dense_tanh_10.hpp index 8d4b47f2275..8d43dac9b5c 100644 --- a/opm/ml/ml_tools/include/test_dense_tanh_10.h +++ b/tests/ml/ml_tools/include/test_dense_tanh_10.hpp @@ -39,18 +39,18 @@ bool test_dense_tanh_10(Evaluation* load_time, Evaluation* apply_time) KASSERT(apply_time, "Invalid Evaluation"); Opm::Tensor in{10}; - in.data_ = {0.31477565,0.54144824,0.679132,0.85510814,0.96523064,0.32442212, -0.25378492,0.45629957,0.75501525,0.3410805}; + in.data_ = {0.94085747,0.1746581,0.09927705,0.012826765,0.040825576,0.14897323, +0.6822367,0.91748506,0.67433727,0.5048738}; Opm::Tensor out{10}; - out.data_ = {-0.24370436,-0.15176499,-0.48301288,-0.071210645,0.31381485, -0.20028076,-0.4273302,0.20151882,0.26926264,-0.2015895}; + out.data_ = {-0.08283218,0.022714693,-0.15881601,-0.31616235,-0.20223989, +0.4720518,-0.13530512,-0.18132511,-0.51301044,0.8691121}; KerasTimer load_timer; load_timer.Start(); KerasModel model; - KASSERT(model.LoadModel("../../opm-common/opm/ml/ml_tools/models/test_dense_tanh_10.model"), "Failed to load model"); + KASSERT(model.LoadModel("tests/ml/ml_tools/models/test_dense_tanh_10.model"), "Failed to load model"); *load_time = load_timer.Stop(); diff --git a/opm/ml/ml_tools/include/test_relu_10.h b/tests/ml/ml_tools/include/test_relu_10.hpp similarity index 83% rename from opm/ml/ml_tools/include/test_relu_10.h rename to tests/ml/ml_tools/include/test_relu_10.hpp index f23fabb03f2..2fee95237c1 100644 --- a/opm/ml/ml_tools/include/test_relu_10.h +++ b/tests/ml/ml_tools/include/test_relu_10.hpp @@ -39,18 +39,18 @@ bool test_relu_10(Evaluation* load_time, Evaluation* apply_time) KASSERT(apply_time, "Invalid Evaluation"); Opm::Tensor in{10}; - in.data_ = {0.52176595,0.39513543,0.9489158,0.8337155,0.21538404,0.9417168, -0.20235209,0.06845642,0.97452354,0.67260426}; + in.data_ = {0.9424436,0.8319943,0.91191685,0.74209344,0.40372875,0.7391152, +0.02710398,0.4579188,0.45213553,0.97500265}; Opm::Tensor out{10}; - out.data_ = {0.,0.38307053,0.27412605,0.,0.,0.8103977, -0.6584701,0.,0.62901723,0.}; + out.data_ = {0.255042,0.303974,0.32974565,0.,0.,0.18417864, +0.,0.,0.,0.}; KerasTimer load_timer; load_timer.Start(); KerasModel model; - KASSERT(model.LoadModel("../../opm-common/opm/ml/ml_tools/models/test_relu_10.model"), "Failed to load model"); + KASSERT(model.LoadModel("tests/ml/ml_tools/models/test_relu_10.model"), "Failed to load model"); *load_time = load_timer.Stop(); diff --git a/opm/ml/ml_tools/include/test_scalingdense_1x1.h b/tests/ml/ml_tools/include/test_scalingdense_10x1.hpp similarity index 76% rename from opm/ml/ml_tools/include/test_scalingdense_1x1.h rename to tests/ml/ml_tools/include/test_scalingdense_10x1.hpp index 76996206bc4..8463ff46b18 100644 --- a/opm/ml/ml_tools/include/test_scalingdense_1x1.h +++ b/tests/ml/ml_tools/include/test_scalingdense_10x1.hpp @@ -31,26 +31,26 @@ namespace fs = std::filesystem; using namespace Opm; template -bool test_scalingdense_1x1(Evaluation* load_time, Evaluation* apply_time) +bool test_scalingdense_10x1(Evaluation* load_time, Evaluation* apply_time) { - printf("TEST scalingdense_1x1\n"); + printf("TEST scalingdense_10x1\n"); KASSERT(load_time, "Invalid Evaluation"); KASSERT(apply_time, "Invalid Evaluation"); Opm::Tensor in{10}; - in.data_ = {0.161407,0.72550833,0.4622064,0.80872875,0.05957263,0.8114737, -0.32151324,0.01842946,0.6790393,0.3875095}; + in.data_ = {0.45817488,0.87123257,0.6282355,0.16400898,0.39261428,0.13538247, +0.5285741,0.30424508,0.61181897,0.6430354}; Opm::Tensor out{10}; - out.data_ = {766.7601,773.2369,872.55963,992.1235,788.6806,626.64465,848.05, -780.4677,833.5528,857.95953}; + out.data_ = {872.89734,761.6704,888.3346,868.27075,816.02026,729.1017,874.694, +818.0736,787.7666,792.5879}; KerasTimer load_timer; load_timer.Start(); KerasModel model; - KASSERT(model.LoadModel("../../opm-common/opm/ml/ml_tools/models/test_scalingdense_1x1.model"), "Failed to load model"); + KASSERT(model.LoadModel("tests/ml/ml_tools/models/test_scalingdense_10x1.model"), "Failed to load model"); *load_time = load_timer.Stop(); diff --git a/tests/ml/ml_tools/models/test_dense_10x1.model b/tests/ml/ml_tools/models/test_dense_10x1.model new file mode 100644 index 0000000000000000000000000000000000000000..1ddd4e447323f85dfb6acc51140d5b4a610ad51f GIT binary patch literal 68 zcmZQ%U|?VYVlE(NgyMwb5AD|NKD{rh*1%pw@Zi3>WW)VC?d9x#Z%W)3d*9WL<9UnS O?2@PZ@`ReLKzaa6t`&s< literal 0 HcmV?d00001 diff --git a/tests/ml/ml_tools/models/test_dense_10x10.model b/tests/ml/ml_tools/models/test_dense_10x10.model new file mode 100644 index 0000000000000000000000000000000000000000..6dc2cc8beb84e331cf1aea1ff39a99b3aeaa783a GIT binary patch literal 528 zcmZQ#U|?VYVlE`CJ9Eaqw5Q#6GU1o(lIJ+s1`D6qchacRI>+ncKG{>P`}&rP?>W1a zZGU9?5gQ(Z9d>2Ax7zj9oY;5k;pTmR*jC%sJU+K??s|UPgt?FGSd#FoOpSJWRsD8Mn>X(}e3Ef*iq%#-srlRYIX`f={q&bGaq zOZ&o@nf9}19@zJ;ZuP$6Tjn;WSXp;#b7$K<+yCC~(3Qvgo}KKn)!4Ab?#KPfc6x^< z*qLAD*l!#iV$=Tg=DrT))pq|jeBM_Vd}?1((0)6yMN{nN=ylq;+ZNa*z1wbAZ>eOL zC={_z%<7R{;m3@9!uxq_HTZh%#Csz4`R`S*6L)3ZUo`RPzULj2tV2aT_uAjrw^Mw; zv`;~7;l6e9EcP3$ixR@oH^eX#xA{mbs%&3k)6W`ooN0CnKuMgRZ+ literal 0 HcmV?d00001 diff --git a/tests/ml/ml_tools/models/test_dense_10x10x10.model b/tests/ml/ml_tools/models/test_dense_10x10x10.model new file mode 100644 index 0000000000000000000000000000000000000000..240260edd2d413f5e55e454baded53164191c4de GIT binary patch literal 924 zcmZwEe^AqP9LMo761F+zSBp!yi^%+yNk3*1+xPXAa}mL1goL^UOobr4j!wg(SB(6D`EQ5}MfEMt5e_eHvPLA6i~Xb6Y!dO) zL%)$M!iuGB{=Nw1>uAUf;*%$eP@2++?cHBPAI0O)LMs*{KEe3TVWjZ4@j`qv6XMu} zY5QX|CHGVA=|(!YcMs_g^4KEjLsGdPE>4R`=eMwzS7Jk*jjHoF?);A)iZfSHOmhp? zoLj;~mlt}fvnFI$j2$uain$-lUJiibW%Y%{fE$$cnyDerl?)t$vyH)Iqko=M3Hxk z`Sh4z{%Dd44=r|c>-KY)J7$0+!%HjNV}1EXE90sT@0EPt2~CuP?o(^&nV=>rHLoJp zpds1YJQvV9%hmbD&}N)OVoN1`c*#a}mQHMy+#vUjzmdJV7gbr4bgC#7BH>+o!wm@q z;f5ZqAYa%@!5d+Qo;!EB!rm>M+XMms)3Vqb$d0p>7<<_?c$P^HJC3aP z8o3J^Jt(i5n!Tx9%(4OU>|w;_-p{1YyxUi+Uxez69QIiUrRcgSwdp5#3QM>LI+RTO z`!)nrnJ8#_H&xs^O>&DH))zmA?$#>GFAioUgC9d_b>ZPH?euE%4s>7kA=!SJ%$e)C znl>lhGpwWWO)UNX_y{Fg#C(pT1nG0FWFB~ve4Fdl14To?=+C4*;6(PPR&}O)7^W{I z?Ce_#n7?$wU*M(q`URS2g88)bX)ukf9VLvS>6s!;kT@&uK{0BTFsRRH3 literal 0 HcmV?d00001 diff --git a/tests/ml/ml_tools/models/test_dense_1x1.model b/tests/ml/ml_tools/models/test_dense_1x1.model new file mode 100644 index 0000000000000000000000000000000000000000..f645586f640d79bbc184553b1803526901dbde03 GIT binary patch literal 32 acmZQ%U|?VYVn!rv^}fqKU#Qs%BnAK-vI9B* literal 0 HcmV?d00001 diff --git a/tests/ml/ml_tools/models/test_dense_2x2.model b/tests/ml/ml_tools/models/test_dense_2x2.model new file mode 100644 index 0000000000000000000000000000000000000000..79fbcc625a0cfde5c16a600b98c338b985072677 GIT binary patch literal 80 zcmZQ#U|?VYVkRUU#=LqTlYfW(-cFbOjJ%Wf=Lt3M0%9vhB()$m2zzf8-T&{>JbRct E01#piQ2+n{ literal 0 HcmV?d00001 diff --git a/tests/ml/ml_tools/models/test_dense_relu_10.model b/tests/ml/ml_tools/models/test_dense_relu_10.model new file mode 100644 index 0000000000000000000000000000000000000000..8291c43ee61eb6b87ad55baa037de5884d51ca0c GIT binary patch literal 1384 zcmZwEdrVUY6bA6}E&`LsLYU~RkAWxwCj%9^=b}-D3WCTKu{c3w)yZS^fdVEK5E-K4 zih$!GBDi9zQF%@5{Vrt;!NG=(8AV{Ysi8`RF(1_;4i-(!vXgwt`Of+CXCx2^jK?zJ zos3M0r>1BFc9?#lJBnj8Z&Znd)C1^jJd25`CVa-^?c7eS5lRD2`1spDBA1vV&T8gD zB)b{#30HF%k&A~E!qoakChA%+$SnSk0WG%KQl`XVAIxZqFB5hl`{ zT{Yx&#E1`@Dna+1&Ez0-CrQE$xNhyGjoLCYh%o1uueV^=RDX!`ZbII=d>`qbg_H4V zj+R_iQ`gnk)RbhvcjN? zrrq%Xs@vK~w6s$-+p`znN@7(RnqoAX)gdzZXYN$2Az!~{01X8t^M5%}H8l z{W6#Z2j%2%WzJVSs?l3H1Cmx5&9kxOdy@MR9DSTi@o0lC!Geu*`jP4zTj_D=r!+?M z?|fmKR)5GQt^RF)ZIk9bzDL@od4D$cGaTFhYZ%*knHx;K755ZY(%1*DjNp6OtP}zy$J3F5-o0W!Z_eZJXqygLTmkXB} zU&_qiYeBL*`>91#MMd75DY`in=K{M>nJ(bP8XYbi`xqTjm&ty;oH8wwX&cOWaeoep zBELbwy`PwSf?;ZunzCwj2V@O-s)Sq<>ekwl9*0mWO=2<<2jQ^WlWI6~-gx$RkT}^P zdRZW`GtMyqck8%GA7$Xi#Y=Q+ttW=OtvSJ_+st)I9mE}5@uVb>4uqNUpLDE(-v>Q7 zb4-u!N3*c)K@B$QhzZuSl>KWp`BpjO;o)$E$@I*U%3HMYFhSXFN`1diV~Pij*z}e6 zNb7bRs+L9siOks$k0Ltjsi%QmoAA~yX3T5dnA_VvZaeO{`OWSBESrY1$!pSHOdnA} zHxNbNM{VIcFKi(}O0TM|@G&VKaaiiVnyh`^V=S8y?34smxjcG%v>%oS$H*nNZP2)Rb_ z_Mg*H*B7{Mq{hY533R5UpZZ+qb32Q($S%Jh{xTaHw*8ufBkrWoO@l*R7kA!O$fn0V zL1u_4tu zWfWdMO1C^G(#n!9aJ>@JmFeI|AYE1pHxg^XTeL63`>RVSFgYLHJ1RJ7Vg()EvCgM4 zx0R$D9z(v+gzr!F=j<l#@&=MEe#N|;vIN$p zLe99y3WY;L-hMz1k+mVh{tlyoxucZ(DhXv#RWy<%$A&Sps5g1X(OdG4>-c@#@*mY6 BY8?Oo literal 0 HcmV?d00001 diff --git a/tests/ml/ml_tools/models/test_dense_tanh_10.model b/tests/ml/ml_tools/models/test_dense_tanh_10.model new file mode 100644 index 0000000000000000000000000000000000000000..321b8c77b10dd246e08ee059baa1b3a369a6f2ac GIT binary patch literal 1384 zcmZvbeK?hO7{^bCQ=AjIEKO3|92cwQWm#+EdG5y&B@Vrv(woYPNTr&TSvAK?NQ%*m zT;7saOA9AD=lR{wAzMftPNT7|N-ylJBr~FP?D5C0Yk%~|=lXuX_rIU(HWCN~#ysNx zA(x~Qb5~Pre$t6kPna^2^)0mP&f{=a9BZ|86r00E+^u6TNuF0DW^WNP(u-}7 zY~u$>b=~k)&<^68BIMTeh;ff)IPU)Y6gK3RVsn@uea~ta$fp%T;KcFV(B*3NS=vAi zq^n?knG_Z4|HMGuCZZm7#$PX0!ZqpwY=7E|_TL2HJy9Wqg-e*F%Y~Hs=rTy;B;0B5 z+YoD(LRUT8j@MEvz-7)!$}J_8ih9-tS4M{EgZtFDQd9>Hnn3(A!JTBSa{~SS0*va} zO?TN(!BCS9n3wUF#}o?#%Ge3qMNJK|Ay47(%LF)5_6RyWSqQ*$XxpJhSLb_BoY;cu zv`Uoiv?9|3Qt{e+HEnoV3euy2FgLXljg8W=H71u#()pvO+YH$7-4Rr1((!7h4&Ey7 z61%L65EmB94n&t@WTP_%VJox@jAxpxmQc@=2gtEq)%261TG(3Bi$Awnk|F#N4w;+5 zgwc5S4=fe#p*(YVym%H`DpZ?zzTo>(9^kv^9WITHH0WPtMx6}KKx?~94?*p9sA=lM zo68nqkdF++dj;4ZEd@>)1zNR%%ou9Gk9sy@0;feeZNkKNt1!fF5biG)b4E`rur%!; z)XuF$^0*1leInp8@}Nsfzmq~-k)fNjc>}(Cb5ckO`kzp zvy-rIS{2Ib{7@_{!ktr%Aah(E?6v0L*nLy3k$FHql#1#6c@k#I;2k)z;|KIJ@ufy@ z1cQV%WqNJ7Fd*-)Be5$U7Cf=c&k;m78PwWxaIz*@LI+IREC7N(EooZ-b#~k|2>Vs%(cntjyUJ=h7zky?~ znnZ+j!z5KRwjbCDBT5Yh463ldFB^wGYk?fWUF;h70$uIeU{9S89pbFj`)eJ5_vaqY XGv+jcXUyqx-r-pPk6HX4`^$d;xY3Hd literal 0 HcmV?d00001 diff --git a/tests/ml/ml_tools/models/test_relu_10.model b/tests/ml/ml_tools/models/test_relu_10.model new file mode 100644 index 0000000000000000000000000000000000000000..03968204ed5187fa2e9d5221e208a0f707ddac3f GIT binary patch literal 472 zcmYk(Ur1AN90l;ZnXX(9Ly91Yl~1BJw0{q_-`5g_5+5eTT7e3owpi|^Tn>#*t^*aq zEhBZ{AH>*8n5(sg_&awXB@Cq7$|X`maD`xoj8F;7E`s2J4;;?xQ44}_K#{%Ams^Fn zyPZMB+fmpf8p-k9M_CU;)Ls~X_oa@mxV&V}y@0BsugIC%VWx9COg6N0Yu7adi;a*= zJF%X(L_+m%rW?pcZCg1Voz0~pkyFSuOn>!p=xuJq508-B7Q-m-U`;2tFr8Q?Pjel- z=X;nn@e9e%9;z6g#6Zg?##0<)C4QKP25CutP38|G+3UvmXyP57b*8X3U&1e4zGt+2 zdqC0tN37MUk+{Br2acb`5m}Kg7W+uPZh^@Wz^CT|`)IEwf9xre w_9RSeT500;A8MOe#$4qf#B=~E^+Bm2M=Z4}4k?tIcGI}8?`%m#8!YxsUhxg(z_-Dg;Qnm|TvOP+$^Nv@U{1f`l#_ zhlpGQyLh0)0{cEIEQe!>V331}2Z!JyBu87QVT+S9)-=5{-}imyJM;eadA`r1#bUA8 zYNeg(Q=A>1_EeYZBVaVux86%yGa$n3@iWLxUxBs{N%P=gd2)34Y;J2^nsl9`Z zib7NLcPOS@-U^iR6nND~gE7f#!urG>cgwHO(i+!OfVl-U;rm_Ww&r<^Rg{qudkv=I z?j?*EYQmlnAKdJ<9}Jcz%Gm4~a27S=zN%gru3U|l(_JJqR_yMWa01`1`G_AC`ban2_ujht;>|>Hi9bc01WE4qGM2`NdN^n*An z9eIOl6oLgZ$mU-`lhuD>jZ-Hr@iK?x4-}ZR<%WBf?nzi}s3Z3bjUi4(8}PdD9x7rw z@S^-7+D6*LX17$Z-LndkPT4}~o0%|r-x+po4uaAyF<6PB=;61kQA^QDlDb;(e%m3K zc}17ezyBGgZSBYGsRkSjpD(YO%_M@B4jg?q2zw*O+=YpiH0JO%SgQX7mzYKY`W{26 zb`5xsw1C860v{CF!5*Uk zv0M8(4Mx8g(7{iWVK2H(G&b0yvh_F-=Sy*M>kY6@-Gidgcvxsvk2=mBpfxxS*H0;5zgp20T>3839)wxNtrS`YvGk%0-Yjjv zJHs}(oBb{>u?)mnemC^*{DGYQq={~PRgVm0e1k4F-R^Hx2clta8dBLNddN?K8I$`# zOEN)nQY)~1vJVB}6{t%24Ud}Z$m5GAp#%<~W$+ZR>+^8iHCq_r9fQsVS(vx}7g%pB zK<)1v+_MAHVa!Z|C$;{hz035`b1#?qZh0S0PZU9x>vbBqb1`|iu^UF_-Fu$Px!k?P z?jPBF;r~}IZ}tgc&0cHwGj0Pk_INWajWvO+?eEDJI4~H|>q~bT_+#cRN3z~47%%Um zm<92&WltrI+&DJcUT4V-&OIgxl_oUrSRoo(uZ5rPY$2xRk0JWIyHtQu6su=sOi~~C znwEh@MIZPqV>9;;mw}U8IyOHXA!lyn;Id(|Y~l(tZ1(KFca zMF|)Me~qVk7s(n*JERWkd16_M_Yw5`*^HR_DX7h-7Y7!50hO#I?^xG?lJy4`a67TO+7aw{sc2ML zg>W?&nxTzael!koM3V_OE+HPl`dA(^M3VWbn0KK9#zY20%VH4sKU4qBjKKaW5lni` j;DzlzFIfH;zvtfH^S5D+rG{EBcIed~Kf0veq4K`~UV3e6 literal 0 HcmV?d00001