This is an automated email from the ASF dual-hosted git repository.
fmcquillan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/madlib.git
The following commit(s) were added to refs/heads/master by this push:
new 515dc25 misc user doc clarifications
515dc25 is described below
commit 515dc2574f2800c0459ec2f0b10d17071f456186
Author: Frank McQuillan <[email protected]>
AuthorDate: Wed Jan 15 16:41:10 2020 -0800
misc user doc clarifications
---
.../madlib_keras_fit_multiple_model.sql_in | 97 ++++++++++++----------
.../madlib_keras_model_selection.sql_in | 10 +++
2 files changed, 64 insertions(+), 43 deletions(-)
diff --git
a/src/ports/postgres/modules/deep_learning/madlib_keras_fit_multiple_model.sql_in
b/src/ports/postgres/modules/deep_learning/madlib_keras_fit_multiple_model.sql_in
index 0468942..33699a4 100644
---
a/src/ports/postgres/modules/deep_learning/madlib_keras_fit_multiple_model.sql_in
+++
b/src/ports/postgres/modules/deep_learning/madlib_keras_fit_multiple_model.sql_in
@@ -130,6 +130,13 @@ madlib_keras_fit_multiple_model(
<DT>num_iterations</DT>
<DD>INTEGER. Number of iterations to train.
+
+ @note
+ This parameter is different than the number of passes over the dataset,
+ which is commonly referred to as the number of epochs. Since MADlib
operates
+ in a distributed system, the number of
+ epochs is actually equal to this parameter 'num_iterations' X 'epochs' as
+ specified in the Keras fit parameter.
</DD>
<DT>use_gpus (optional)</DT>
@@ -1016,18 +1023,18 @@ SELECT * FROM iris_multi_model_info ORDER BY
training_metrics_final DESC, traini
<pre class="result">
mst_key | model_id | compile_params
| fit_params | model_type | model_size |
metrics_elapsed_time | metrics_type | training_metrics_final |
training_loss_final | training_metrics | training_loss |
validation_metrics_final | validation_loss_final | validation_metrics |
validation_loss
---------+----------+---------------------------------------------------------------------------------+-----------------------+--------------+--------------+----------------------+--------------+------------------------+---------------------+---------------------+---------------------+--------------------------+-----------------------+--------------------+-----------------
- 9 | 2 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=4,epochs=1 |
madlib_keras | 1.2197265625 | {0.189763069152832} | {accuracy} |
0.983333349228 | 0.102392569184 | {0.983333349227905} |
{0.102392569184303} | | |
|
- 4 | 1 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=8,epochs=1 |
madlib_keras | 0.7900390625 | {0.170287847518921} | {accuracy} |
0.975000023842 | 0.159002527595 | {0.975000023841858} |
{0.159002527594566} | | |
|
- 3 | 1 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=4,epochs=1 |
madlib_keras | 0.7900390625 | {0.165465116500854} | {accuracy} |
0.966666638851 | 0.10245500505 | {0.966666638851166} |
{0.102455005049706} | | |
|
- 10 | 2 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=8,epochs=1 |
madlib_keras | 1.2197265625 | {0.199872970581055} | {accuracy} |
0.941666662693 | 0.12242924422 | {0.941666662693024} |
{0.122429244220257} | | |
|
- 5 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 0.7900390625 | {0.16815185546875} |
{accuracy} | 0.883333325386 | 0.437314987183 |
{0.883333325386047} | {0.437314987182617} | |
| |
- 11 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 1.2197265625 | {0.430488109588623} |
{accuracy} | 0.858333349228 | 0.400548309088 |
{0.858333349227905} | {0.400548309087753} | |
| |
- 6 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 0.7900390625 | {0.154508113861084} |
{accuracy} | 0.683333337307 | 0.634458899498 |
{0.683333337306976} | {0.634458899497986} | |
| |
- 12 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 1.2197265625 | {0.192011833190918} |
{accuracy} | 0.683333337307 | 0.792817175388 |
{0.683333337306976} | {0.792817175388336} | |
| |
- 2 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 0.7900390625 | {0.241909980773926} |
{accuracy} | 0.641666650772 | 0.736794412136 |
{0.641666650772095} | {0.736794412136078} | |
| |
- 7 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 1.2197265625 | {0.186789035797119} |
{accuracy} | 0.358333319426 | 1.09771859646 |
{0.358333319425583} | {1.09771859645844} | |
| |
- 8 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 1.2197265625 | {0.186538934707642} |
{accuracy} | 0.358333319426 | 1.1002266407 |
{0.358333319425583} | {1.10022664070129} | |
| |
- 1 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 0.7900390625 | {0.159209012985229} |
{accuracy} | 0.324999988079 | 10.8797140121 |
{0.324999988079071} | {10.879714012146} | |
| |
+ 9 | 2 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=4,epochs=1 |
madlib_keras | 1.2197265625 | {119.42963886261} | {accuracy} |
0.983333349228 | 0.07286978513 | {0.983333349227905} |
{0.072869785130024} | | |
|
+ 10 | 2 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=8,epochs=1 |
madlib_keras | 1.2197265625 | {118.485460996628} | {accuracy} |
0.975000023842 | 0.0798489004374 | {0.975000023841858} |
{0.079848900437355} | | |
|
+ 4 | 1 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=8,epochs=1 |
madlib_keras | 0.7900390625 | {118.707404851913} | {accuracy} |
0.975000023842 | 0.143356323242 | {0.975000023841858} |
{0.143356323242188} | | |
|
+ 11 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 1.2197265625 | {118.224883794785} |
{accuracy} | 0.958333313465 | 0.636615753174 |
{0.958333313465118} | {0.636615753173828} | |
| |
+ 2 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 0.7900390625 | {117.732690811157} |
{accuracy} | 0.925000011921 | 0.161811202765 |
{0.925000011920929} | {0.161811202764511} | |
| |
+ 5 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 0.7900390625 | {120.357484817505} |
{accuracy} | 0.833333313465 | 0.5542948246 |
{0.833333313465118} | {0.55429482460022} | |
| |
+ 3 | 1 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=4,epochs=1 |
madlib_keras | 0.7900390625 | {118.928852796555} | {accuracy} |
0.824999988079 | 0.301002770662 | {0.824999988079071} |
{0.301002770662308} | | |
|
+ 6 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 0.7900390625 | {120.566634893417} |
{accuracy} | 0.816666662693 | 0.875298440456 |
{0.816666662693024} | {0.87529844045639} | |
| |
+ 12 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 1.2197265625 | {119.182703018188} |
{accuracy} | 0.774999976158 | 0.785651266575 |
{0.774999976158142} | {0.78565126657486} | |
| |
+ 1 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 0.7900390625 | {119.643137931824} |
{accuracy} | 0.508333325386 | 0.762569189072 |
{0.508333325386047} | {0.762569189071655} | |
| |
+ 7 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 1.2197265625 | {120.15305685997} |
{accuracy} | 0.333333343267 | 1.09794270992 |
{0.333333343267441} | {1.09794270992279} | |
| |
+ 8 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 1.2197265625 | {119.911739826202} |
{accuracy} | 0.333333343267 | 1.10344016552 |
{0.333333343267441} | {1.10344016551971} | |
| |
(12 rows)
</pre>
@@ -1175,20 +1182,20 @@ View results for each model:
SELECT * FROM iris_multi_model_info ORDER BY training_metrics_final DESC,
training_loss_final;
</pre>
<pre class="result">
- mst_key | model_id | compile_params
| fit_params | model_type | model_size |
metrics_elapsed_time |
metrics_type | training_metrics_final | training_loss_final |
training_metrics |
training_loss | validation_metrics_final
| validation_loss_ [...]
----------+----------+---------------------------------------------------------------------------------+-----------------------+--------------+--------------+---------------------------------------------------------------------------+--------------+------------------------+---------------------+---------------------------------------------------------------------------+----------------------------------------------------------------------------+--------------------------+-----------------
[...]
- 10 | 2 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=8,epochs=1 |
madlib_keras | 1.2197265625 |
{0.19480299949646,0.184041976928711,0.191921949386597,0.24904990196228} |
{accuracy} | 0.975000023842 | 0.107221193612 |
{0.975000023841858,0.883333325386047,0.858333349227905,0.975000023841858} |
{0.348870366811752,0.250929206609726,0.251643180847168,0.107221193611622} |
1 | 0.07454025 [...]
- 3 | 1 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=4,epochs=1 |
madlib_keras | 0.7900390625 |
{0.168098926544189,0.157669067382812,0.196551084518433,0.159118890762329} |
{accuracy} | 0.925000011921 | 0.15261271596 |
{0.883333325386047,0.808333337306976,0.958333313465118,0.925000011920929} |
{0.323819071054459,0.359202563762665,0.145684525370598,0.152612715959549} |
0.966666638851 | 0.09096869 [...]
- 11 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 1.2197265625 |
{0.196630954742432,0.182199001312256,0.186440944671631,0.203809022903442} |
{accuracy} | 0.933333337307 | 0.50553715229 |
{0.725000023841858,0.758333325386047,0.858333349227905,0.933333337306976} |
{0.884528338909149,0.746422350406647,0.588649451732635,0.505537152290344} |
0.933333337307 | 0.5527370 [...]
- 9 | 2 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=4,epochs=1 |
madlib_keras | 1.2197265625 |
{0.243091106414795,0.183151960372925,0.201867818832397,0.182805061340332} |
{accuracy} | 0.891666650772 | 0.208901122212 |
{0.850000023841858,0.958333313465118,0.975000023841858,0.891666650772095} |
{0.408110946416855,0.144096985459328,0.0838083922863007,0.20890112221241} |
0.866666674614 | 0.2708076 [...]
- 5 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 0.7900390625 |
{0.15792989730835,0.171962976455688,0.226946830749512,0.161045074462891} |
{accuracy} | 0.850000023842 | 0.480257481337 |
{0.616666674613953,0.683333337306976,0.75,0.850000023841858} |
{0.948418378829956,0.743716657161713,0.534102499485016,0.480257481336594} |
0.800000011921 | 0.5156010 [...]
- 8 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 1.2197265625 |
{0.184230089187622,0.20333194732666,0.191611051559448,0.187481880187988} |
{accuracy} | 0.883333325386 | 0.341951817274 |
{0.658333361148834,0.941666662693024,0.958333313465118,0.883333325386047} |
{0.442611187696457,0.403654724359512,0.0869002863764763,0.341951817274094} |
0.800000011921 | 0.4072133 [...]
- 2 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 0.7900390625 |
{0.169033050537109,0.160851001739502,0.172677993774414,0.166024923324585} |
{accuracy} | 0.641666650772 | 0.474238961935 |
{0.899999976158142,0.949999988079071,0.783333361148834,0.641666650772095} |
{0.255419433116913,0.1908118724823,0.767927944660187,0.474238961935043} |
0.766666650772 | 0.4262402 [...]
- 4 | 1 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=8,epochs=1 |
madlib_keras | 0.7900390625 |
{0.163635015487671,0.217028856277466,0.412152051925659,0.163925886154175} |
{accuracy} | 0.841666638851 | 0.351104289293 |
{0.866666674613953,0.916666686534882,0.941666662693024,0.841666638851166} |
{0.341254085302353,0.210138097405434,0.152032792568207,0.351104289293289} |
0.733333349228 | 0.4624978 [...]
- 1 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 0.7900390625 |
{0.160864114761353,0.515794038772583,0.170866966247559,0.162554025650024} |
{accuracy} | 0.774999976158 | 0.372270941734 |
{0.608333349227905,0.941666662693024,0.774999976158142,0.774999976158142} |
{0.541361212730408,0.23515048623085,0.341034829616547,0.372270941734314} |
0.699999988079 | 0.4999965 [...]
- 12 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 1.2197265625 |
{0.184638977050781,0.180385828018188,0.206297159194946,0.186070919036865} |
{accuracy} | 0.691666662693 | 0.721061587334 |
{0.25,0.675000011920929,0.733333349227905,0.691666662693024} |
{0.992778599262238,0.875843703746796,0.761732041835785,0.721061587333679} |
0.600000023842 | 0.7364071 [...]
- 6 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 0.7900390625 |
{0.154546976089478,0.16751503944397,0.162903070449829,0.158049821853638} |
{accuracy} | 0.683333337307 | 0.7804261446 |
{0.358333319425583,0.358333319425583,0.675000011920929,0.683333337306976} |
{1.20112609863281,0.947584271430969,0.819790959358215,0.780426144599915} |
0.600000023842 | 0.8485705 [...]
- 7 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 1.2197265625 |
{0.19166898727417,0.202822923660278,0.192266941070557,0.188740015029907} |
{accuracy} | 0.358333319426 | 1.11373853683 |
{0.358333319425583,0.358333319425583,0.358333319425583,0.358333319425583} |
{1.10469853878021,1.10379803180695,1.1021580696106,1.11373853683472} |
0.233333334327 | 1.165892 [...]
+ mst_key | model_id | compile_params
| fit_params | model_type | model_size |
metrics_elapsed_time |
metrics_type | training_metrics_final | training_loss_final |
training_metrics |
training_loss | validation_metrics_final
| validation_loss_final [...]
+---------+----------+---------------------------------------------------------------------------------+-----------------------+--------------+--------------+-----------------------------------------------------------------------+--------------+------------------------+---------------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+--------------------------+----------------------
[...]
+ 4 | 1 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=8,epochs=1 |
madlib_keras | 0.7900390625 |
{37.0420558452606,78.2046208381653,116.242669820786,134.287139892578} |
{accuracy} | 0.975000023842 | 0.165132269263 |
{0.75,0.958333313465118,0.958333313465118,0.975000023841858} |
{0.618549585342407,0.319452553987503,0.223872095346451,0.165132269263268} |
0.966666638851 | 0.213689729571 [...]
+ 2 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 0.7900390625 |
{36.3931469917297,77.5780539512634,115.430645942688,133.599857807159} |
{accuracy} | 0.966666638851 | 0.277698725462 |
{0.591666638851166,0.966666638851166,0.666666686534882,0.966666638851166} |
{0.634598553180695,0.334936827421188,0.615665555000305,0.27769872546196} |
0.966666638851 | 0.34405490756 [...]
+ 10 | 2 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=8,epochs=1 |
madlib_keras | 1.2197265625 |
{36.8482949733734,78.0155048370361,115.83317399025,134.079672813416} |
{accuracy} | 0.958333313465 | 0.122385449708 |
{0.883333325386047,0.941666662693024,0.858333349227905,0.958333313465118} |
{0.291894346475601,0.146935686469078,0.270052850246429,0.122385449707508} |
0.933333337307 | 0.181496843696 [...]
+ 3 | 1 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=4,epochs=1 |
madlib_keras | 0.7900390625 |
{37.2318170070648,78.3925468921661,116.45490694046,134.491376876831} |
{accuracy} | 0.941666662693 | 0.193545326591 |
{0.966666638851166,0.941666662693024,0.941666662693024,0.941666662693024} |
{0.39665362238884,0.213271111249924,0.190151125192642,0.193545326590538} |
0.933333337307 | 0.151459023356 [...]
+ 9 | 2 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=4,epochs=1 |
madlib_keras | 1.2197265625 |
{37.6678929328918,78.820240020752,116.939878940582,134.959810972214} |
{accuracy} | 0.925000011921 | 0.192344605923 |
{0.824999988079071,0.774999976158142,0.966666638851166,0.925000011920929} |
{0.434513121843338,0.326292037963867,0.131333693861961,0.192344605922699} |
0.899999976158 | 0.209528595209 [...]
+ 8 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 1.2197265625 |
{38.0689258575439,79.4995639324188,117.36315202713,135.380483865738} |
{accuracy} | 0.866666674614 | 0.390509605408 |
{0.691666662693024,0.691666662693024,0.633333325386047,0.866666674613953} |
{0.490214675664902,0.444783747196198,0.627961099147797,0.390509605407715} |
0.933333337307 | 0.376114845276 [...]
+ 5 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 0.7900390625 |
{38.474328994751,79.9709329605103,117.766183853149,135.803887844086} |
{accuracy} | 0.841666638851 | 0.576696753502 |
{0.616666674613953,0.699999988079071,0.758333325386047,0.841666638851166} |
{0.90448260307312,0.750164151191711,0.616493880748749,0.576696753501892} |
0.899999976158 | 0.631914675236 [...]
+ 11 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 1.2197265625 |
{36.6214678287506,77.7987759113312,115.631717920303,133.83836388588} |
{accuracy} | 0.758333325386 | 0.881635427475 |
{0.308333337306976,0.316666662693024,0.75,0.758333325386047} |
{1.12997460365295,1.02749967575073,0.923768699169159,0.881635427474976} |
0.766666650772 | 0.878168046474 [...]
+ 7 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 1.2197265625 |
{38.2849600315094,79.7524738311768,117.580325841904,135.606695890427} |
{accuracy} | 0.691666662693 | 0.444524824619 |
{0.908333361148834,0.391666680574417,0.691666662693024,0.691666662693024} |
{0.335082054138184,2.02327847480774,0.444351017475128,0.444524824619293} |
0.566666662693 | 0.539750337601 [...]
+ 6 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 0.7900390625 |
{38.6593668460846,80.1789360046387,117.957875013351,135.995815992355} |
{accuracy} | 0.683333337307 | 0.841839790344 |
{0.316666662693024,0.366666674613953,0.666666686534882,0.683333337306976} |
{1.07646071910858,0.963329672813416,0.87216705083847,0.841839790344238} |
0.666666686535 | 0.840192914009 [...]
+ 1 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 0.7900390625 |
{37.8553328514099,79.2480089664459,117.139881849289,135.155915975571} |
{accuracy} | 0.358333319426 | 1.11013436317 |
{0.358333319425583,0.333333343267441,0.333333343267441,0.358333319425583} |
{1.10554325580597,1.11694586277008,1.09756696224213,1.11013436317444} |
0.233333334327 | 1.17629003525 [...]
+ 12 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 1.2197265625 |
{37.4500079154968,78.6058378219604,116.700626850128,134.72905087471} |
{accuracy} | 0.308333337307 | 1.06241953373 |
{0.150000005960464,0.333333343267441,0.333333343267441,0.308333337306976} |
{1.13338851928711,1.09694564342499,1.07030868530273,1.06241953372955} |
0.433333337307 | 1.03659796715 [...]
(12 rows)
</pre>
@@ -1287,20 +1294,20 @@ View results for each model:
SELECT * FROM iris_multi_model_info ORDER BY training_metrics_final DESC,
training_loss_final;
</pre>
<pre class="result">
- mst_key | model_id | compile_params
| fit_params | model_type | model_size |
metrics_elapsed_time | metrics_type |
training_metrics_final | training_loss_final |
training_metrics | training_loss
| validation_metrics_final | validation_loss_final |
validation_metrics [...]
----------+----------+---------------------------------------------------------------------------------+-----------------------+--------------+--------------+---------------------------------------------------------+--------------+------------------------+---------------------+---------------------------------------------------------+-----------------------------------------------------------+--------------------------+-----------------------+----------------------------------------------
[...]
- 3 | 1 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=4,epochs=1 |
madlib_keras | 0.7900390625 |
{0.164853096008301,0.264705181121826,0.157214879989624} | {accuracy} |
0.966666638851 | 0.0860336050391 |
{0.966666638851166,0.875,0.966666638851166} |
{0.10731378942728,0.237401679158211,0.0860336050391197} |
1 | 0.0690980628133 | {1,0.933333337306976,1}
[...]
- 9 | 2 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=4,epochs=1 |
madlib_keras | 1.2197265625 |
{0.182960987091064,0.192347049713135,0.185945987701416} | {accuracy} |
0.941666662693 | 0.16336736083 |
{0.966666638851166,0.975000023841858,0.941666662693024} |
{0.0924900621175766,0.0709503665566444,0.163367360830307} |
0.933333337307 | 0.196538448334 |
{0.933333337306976,1,0.933333337306976} [...]
- 11 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 1.2197265625 |
{0.187994003295898,0.181873798370361,0.188920021057129} | {accuracy} |
0.899999976158 | 0.329349696636 |
{0.908333361148834,0.883333325386047,0.899999976158142} |
{0.373963922262192,0.349062085151672,0.3293496966362} |
0.933333337307 | 0.333393543959 |
{0.933333337306976,0.899999976158142,0.933333 [...]
- 10 | 2 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=8,epochs=1 |
madlib_keras | 1.2197265625 |
{0.184596061706543,0.379925012588501,0.186527013778687} | {accuracy} |
0.908333361149 | 0.202177524567 |
{0.866666674613953,0.966666638851166,0.908333361148834} |
{0.250507324934006,0.127185359597206,0.20217752456665} |
0.866666674614 | 0.268144398928 |
{0.800000011920929,1,0.866666674613953} [...]
- 12 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 1.2197265625 |
{0.187471866607666,0.19880199432373,0.180361032485962} | {accuracy} |
0.908333361149 | 0.408491075039 |
{0.833333313465118,0.925000011920929,0.908333361148834} |
{0.492850959300995,0.451007574796677,0.40849107503891} |
0.833333313465 | 0.449156552553 |
{0.800000011920929,0.866666674613953,0.833333 [...]
- 8 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 1.2197265625 |
{0.187476873397827,0.190106868743896,0.183273077011108} | {accuracy} |
0.916666686535 | 0.204672813416 |
{0.925000011920929,0.725000023841858,0.916666686534882} |
{0.224613606929779,0.507380962371826,0.204672813415527} |
0.833333313465 | 0.253615111113 |
{0.833333313465118,0.666666686534882,0.833333 [...]
- 4 | 1 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=8,epochs=1 |
madlib_keras | 0.7900390625 |
{0.158944129943848,0.190206050872803,0.162253141403198} | {accuracy} |
0.875 | 0.289537638426 |
{0.908333361148834,0.949999988079071,0.875} |
{0.177524402737617,0.134268626570702,0.289537638425827} |
0.800000011921 | 0.416592538357 |
{0.933333337306976,0.933333337306976,0.800000 [...]
- 6 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 0.7900390625 |
{0.17385196685791,0.167200088500977,0.15508508682251} | {accuracy} |
0.850000023842 | 0.874475240707 |
{0.683333337306976,0.683333337306976,0.850000023841858} |
{0.942066073417664,0.909405112266541,0.874475240707397} |
0.800000011921 | 0.901099026203 |
{0.600000023841858,0.600000023841858,0.800000 [...]
- 5 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 0.7900390625 |
{0.175297975540161,0.166980028152466,0.157662153244019} | {accuracy} |
0.791666686535 | 0.473440766335 |
{0.691666662693024,0.758333325386047,0.791666686534882} |
{0.555641710758209,0.510370552539825,0.473440766334534} |
0.699999988079 | 0.532045960426 |
{0.600000023841858,0.666666686534882,0.699999 [...]
- 7 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 1.2197265625 |
{0.370399951934814,0.185209989547729,0.184471845626831} | {accuracy} |
0.683333337307 | 0.467345923185 |
{0.683333337306976,0.683333337306976,0.683333337306976} |
{0.476419776678085,0.466614902019501,0.467345923185349} |
0.600000023842 | 0.441450744867 |
{0.600000023841858,0.600000023841858,0.600000 [...]
- 1 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 0.7900390625 |
{0.161419153213501,0.168106079101562,0.156718969345093} | {accuracy} |
0.358333319426 | 1.11533606052 |
{0.358333319425583,0.358333319425583,0.358333319425583} |
{1.1051013469696,1.11064600944519,1.11533606052399} |
0.233333334327 | 1.15986251831 |
{0.233333334326744,0.233333334326744,0.233333 [...]
- 2 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 0.7900390625 |
{0.1615891456604,0.159286975860596,0.165864944458008} | {accuracy} |
0.358333319426 | 1.11393201351 |
{0.358333319425583,0.358333319425583,0.358333319425583} |
{1.11442768573761,1.10136640071869,1.11393201351166} |
0.233333334327 | 1.17370998859 |
{0.233333334326744,0.233333334326744,0.233333 [...]
+ mst_key | model_id | compile_params
| fit_params | model_type | model_size |
metrics_elapsed_time | metrics_type |
training_metrics_final | training_loss_final |
training_metrics | training_loss
| validation_metrics_final | validation_loss_final |
validation_metrics [...]
+---------+----------+---------------------------------------------------------------------------------+-----------------------+--------------+--------------+------------------------------------------------------+--------------+------------------------+---------------------+---------------------------------------------------------+----------------------------------------------------------+--------------------------+-----------------------+--------------------------------------------------
[...]
+ 5 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 0.7900390625 |
{19.451014995575,37.2563629150391,54.7182998657227} | {accuracy} |
0.975000023842 | 0.490673750639 |
{0.958333313465118,0.691666662693024,0.975000023841858} |
{0.541427075862885,0.517450392246246,0.490673750638962} |
0.933333337307 | 0.557333409786 |
{0.933333337306976,0.666666686534882,0.9333333373 [...]
+ 9 | 2 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=4,epochs=1 |
madlib_keras | 0.7900390625 |
{18.2973220348358,36.3793680667877,54.0178129673004} | {accuracy} |
0.966666638851 | 0.0894369781017 |
{0.966666638851166,0.966666638851166,0.966666638851166} |
{0.133233144879341,0.111788973212242,0.0894369781017303} |
0.899999976158 | 0.195293620229 |
{0.933333337306976,0.966666638851166,0.8999999761 [...]
+ 4 | 1 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=8,epochs=1 |
madlib_keras | 1.2197265625 |
{17.6080539226532,35.6788699626923,53.3836889266968} | {accuracy} |
0.966666638851 | 0.147051945329 |
{0.908333361148834,0.958333313465118,0.966666638851166} |
{0.225205257534981,0.168186634778976,0.147051945328712} |
0.866666674614 | 0.250319689512 |
{0.899999976158142,0.933333337306976,0.8666666746 [...]
+ 8 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 1.2197265625 |
{18.7529940605164,36.8255958557129,54.3704080581665} | {accuracy} |
0.966666638851 | 0.244641214609 |
{0.691666662693024,0.891666650772095,0.966666638851166} |
{0.939713299274445,0.462556451559067,0.244641214609146} |
0.966666638851 | 0.298279434443 |
{0.566666662693024,0.966666638851166,0.9666666388 [...]
+ 10 | 2 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=8,epochs=1 |
madlib_keras | 0.7900390625 |
{17.4004180431366,35.4556438922882,53.1877279281616} | {accuracy} |
0.958333313465 | 0.123381219804 |
{0.949999988079071,0.766666650772095,0.958333313465118} |
{0.0919980704784393,0.576169073581696,0.123381219804287} |
0.933333337307 | 0.203262642026 |
{0.866666674613953,0.766666650772095,0.9333333373 [...]
+ 3 | 1 | loss='categorical_crossentropy',
optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=4,epochs=1 |
madlib_keras | 1.2197265625 |
{17.81547498703,35.8978669643402,53.5737180709839} | {accuracy} |
0.933333337307 | 0.150664463639 |
{0.941666662693024,0.925000011920929,0.933333337306976} |
{0.117781177163124,0.163000836968422,0.150664463639259} |
0.833333313465 | 0.365329563618 |
{0.866666674613953,0.833333313465118,0.8333333134 [...]
+ 6 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 1.2197265625 |
{19.686233997345,37.4543249607086,54.8708770275116} | {accuracy} |
0.858333349228 | 0.743227303028 |
{0.675000011920929,0.708333313465118,0.858333349227905} |
{0.808507084846497,0.774080872535706,0.743227303028107} |
0.966666638851 | 0.770158529282 |
{0.666666686534882,0.666666686534882,0.9666666388 [...]
+ 11 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 1.2197265625 |
{17.1583528518677,35.0312390327454,52.96133685112} | {accuracy} |
0.816666662693 | 0.739802956581 |
{0.774999976158142,0.816666662693024,0.816666662693024} |
{0.83727890253067,0.792884111404419,0.739802956581116} |
0.800000011921 | 0.758302807808 |
{0.766666650772095,0.800000011920929,0.8000000119 [...]
+ 2 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 1.2197265625 |
{16.9146749973297,34.794900894165,52.7328250408173} | {accuracy} |
0.808333337307 | 0.303489625454 |
{0.683333337306976,0.966666638851166,0.808333337306976} |
{1.05107569694519,0.189959138631821,0.303489625453949} |
0.866666674614 | 0.285375326872 |
{0.666666686534882,0.966666638851166,0.8666666746 [...]
+ 12 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
| batch_size=8,epochs=1 | madlib_keras | 0.7900390625 |
{18.0590150356293,36.1394078731537,53.7930529117584} | {accuracy} |
0.699999988079 | 1.02253305912 |
{0.550000011920929,0.691666662693024,0.699999988079071} |
{1.0493084192276,1.03803598880768,1.02253305912018} |
0.666666686535 | 1.02013540268 |
{0.633333325386047,0.600000023841858,0.6666666865 [...]
+ 7 | 2 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 1.2197265625 |
{19.2141709327698,37.0566499233246,54.5629329681396} | {accuracy} |
0.691666662693 | 0.448221176863 |
{0.691666662693024,0.691666662693024,0.691666662693024} |
{0.447027385234833,0.444605946540833,0.448221176862717} |
0.566666662693 | 0.555035352707 |
{0.566666662693024,0.566666662693024,0.5666666626 [...]
+ 1 | 1 |
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
| batch_size=4,epochs=1 | madlib_keras | 1.2197265625 |
{18.501914024353,36.5938439369202,54.194118976593} | {accuracy} |
0.358333319426 | 1.09730923176 |
{0.333333343267441,0.333333343267441,0.358333319425583} |
{1.09999334812164,1.10405397415161,1.09730923175812} |
0.233333334327 | 1.12532019615 |
{0.333333343267441,0.333333343267441,0.2333333343 [...]
(12 rows)
</pre>
Note that the loss and accuracy values pick up from where the previous run
left off.
@@ -1322,6 +1329,10 @@ Transfer learning uses initial model state (weights)
stored in the 'model_arch_t
4. Here are some more details on how warm start works. These details are
mostly applicable when implementing autoML algorithms on top of MADlib's model
selection. In short, the 'model_selection_table' dictates which models get
trained and output to the 'model_output_table' and associated summary and info
tables. When 'warm_start' is TRUE, models are built for each 'mst_key' in the
'model_selection_table'. If there are prior runs for an 'mst_key' then the
weights from that run will be [...]
+5. The 'num_iterations' parameter and the Keras fit parameter 'epochs' can
substantially affect accuracy and run-time.
+In general, increasing the number of 'epochs' for a fixed 'num_iterations'
will speed up training, but may result
+in lower accuracy. It's best to do some experimentation to find out what
works for your models and dataset.
+
@anchor background
@par Technical Background
@@ -1334,12 +1345,12 @@ parallelism (MOP) and has high convergence efficiency
since it does not do
model averaging [2].
On the effect of database cluster size: as the database cluster size increases,
-it will be proportionally faster to train a set of models, as long as you have
at
+it will be faster to train a set of models, as long as you have at
least as many model selection tuples as segments. This is because model state
is "hopped" from
segment to segment and training takes place in parallel [1,2]. If you have
fewer model
selection tuples to train than segments, then some
-segments may not be busy 100% of the time so speedup will not necessarily be
linear with
-database cluster size. Inference (predict) is an embarrassingly parallel
operation so
+segments may not be busy 100% of the time so speedup will not necessarily
increase
+on a larger cluster. Inference (predict) is an embarrassingly parallel
operation so
inference runtimes will be proportionally faster as the number of segments
increases.
@anchor literature
diff --git
a/src/ports/postgres/modules/deep_learning/madlib_keras_model_selection.sql_in
b/src/ports/postgres/modules/deep_learning/madlib_keras_model_selection.sql_in
index 8697ec4..c15757c 100644
---
a/src/ports/postgres/modules/deep_learning/madlib_keras_model_selection.sql_in
+++
b/src/ports/postgres/modules/deep_learning/madlib_keras_model_selection.sql_in
@@ -39,6 +39,7 @@ Interface and implementation are subject to change. </em>
<div class="toc"><b>Contents</b><ul>
<li class="level1"><a href="#load_mst_table">Load Model Selection
Table</a></li>
<li class="level1"><a href="#example">Examples</a></li>
+<li class="level1"><a href="#notes">Notes</a></li>
<li class="level1"><a href="#related">Related Topics</a></li>
</ul></div>
@@ -404,6 +405,15 @@ SELECT * FROM mst_table_auto_summary;
(1 row)
</pre>
+@anchor notes
+@par Notes
+
+1. In this method, the same compile and fit parameters are applied to all
model architectures
+when generating combinations. However, you may wish to have different compile
and fit parameters
+for each model. To do so, call 'load_model_selection_table'
+multiple times - once for each model. Then you can combine the resulting
tables using UNION or other means.
+Note that the 'mst_key' must be unique so you will need to regenerate it in
your final combined table.
+
@anchor related
@par Related Topics