fmcquillan99 commented on issue #430: Add generate mst table utility.
URL: https://github.com/apache/madlib/pull/430#issuecomment-525969734
 
 
   Looks OK except for verbose output, see (2) below for example.
   
   (1)
   create 2 models:
   ```
   DROP TABLE IF EXISTS model_arch_library99;
   
   SELECT madlib.load_keras_model('model_arch_library99',  -- Output table,
   
   $$
   {"class_name": "Sequential", "keras_version": "2.1.6", "config": 
[{"class_name": "Dense", "config": {"kernel_initializer": {"class_name": 
"VarianceScaling", "config": {"distribution": "uniform", "scale": 1.0, "seed": 
null, "mode": "fan_avg"}}, "name": "dense_1", "kernel_constraint": null, 
"bias_regularizer": null, "bias_constraint": null, "dtype": "float32", 
"activation": "relu", "trainable": true, "kernel_regularizer": null, 
"bias_initializer": {"class_name": "Zeros", "config": {}}, "units": 10, 
"batch_input_shape": [null, 4], "use_bias": true, "activity_regularizer": 
null}}, {"class_name": "Dense", "config": {"kernel_initializer": {"class_name": 
"VarianceScaling", "config": {"distribution": "uniform", "scale": 1.0, "seed": 
null, "mode": "fan_avg"}}, "name": "dense_2", "kernel_constraint": null, 
"bias_regularizer": null, "bias_constraint": null, "activation": "relu", 
"trainable": true, "kernel_regularizer": null, "bias_initializer": 
{"class_name": "Zeros", "config": {}}, "units": 10, "use_bias": true, 
"activity_regularizer": null}}, {"class_name": "Dense", "config": 
{"kernel_initializer": {"class_name": "VarianceScaling", "config": 
{"distribution": "uniform", "scale": 1.0, "seed": null, "mode": "fan_avg"}}, 
"name": "dense_3", "kernel_constraint": null, "bias_regularizer": null, 
"bias_constraint": null, "activation": "softmax", "trainable": true, 
"kernel_regularizer": null, "bias_initializer": {"class_name": "Zeros", 
"config": {}}, "units": 3, "use_bias": true, "activity_regularizer": null}}], 
"backend": "tensorflow"}
   $$
   ::json,         -- JSON blob
                                  NULL,                  -- Weights
                                  'Sophie',              -- Name
                                  'MLP with 1 hidden layer'       -- Descr
   );
   
   SELECT madlib.load_keras_model('model_arch_library99',  -- Output table,
   
   $$
   {"class_name": "Sequential", "keras_version": "2.1.6", "config": 
[{"class_name": "Dense", "config": {"kernel_initializer": {"class_name": 
"VarianceScaling", "config": {"distribution": "uniform", "scale": 1.0, "seed": 
null, "mode": "fan_avg"}}, "name": "dense_4", "kernel_constraint": null, 
"bias_regularizer": null, "bias_constraint": null, "dtype": "float32", 
"activation": "relu", "trainable": true, "kernel_regularizer": null, 
"bias_initializer": {"class_name": "Zeros", "config": {}}, "units": 10, 
"batch_input_shape": [null, 4], "use_bias": true, "activity_regularizer": 
null}}, {"class_name": "Dense", "config": {"kernel_initializer": {"class_name": 
"VarianceScaling", "config": {"distribution": "uniform", "scale": 1.0, "seed": 
null, "mode": "fan_avg"}}, "name": "dense_5", "kernel_constraint": null, 
"bias_regularizer": null, "bias_constraint": null, "activation": "relu", 
"trainable": true, "kernel_regularizer": null, "bias_initializer": 
{"class_name": "Zeros", "config": {}}, "units": 10, "use_bias": true, 
"activity_regularizer": null}}, {"class_name": "Dense", "config": 
{"kernel_initializer": {"class_name": "VarianceScaling", "config": 
{"distribution": "uniform", "scale": 1.0, "seed": null, "mode": "fan_avg"}}, 
"name": "dense_6", "kernel_constraint": null, "bias_regularizer": null, 
"bias_constraint": null, "activation": "relu", "trainable": true, 
"kernel_regularizer": null, "bias_initializer": {"class_name": "Zeros", 
"config": {}}, "units": 10, "use_bias": true, "activity_regularizer": null}}, 
{"class_name": "Dense", "config": {"kernel_initializer": {"class_name": 
"VarianceScaling", "config": {"distribution": "uniform", "scale": 1.0, "seed": 
null, "mode": "fan_avg"}}, "name": "dense_7", "kernel_constraint": null, 
"bias_regularizer": null, "bias_constraint": null, "activation": "softmax", 
"trainable": true, "kernel_regularizer": null, "bias_initializer": 
{"class_name": "Zeros", "config": {}}, "units": 3, "use_bias": true, 
"activity_regularizer": null}}], "backend": "tensorflow"}
   $$
   ::json,         -- JSON blob
                                  NULL,                  -- Weights
                                  'Maria',               -- Name
                                  'MLP with 2 hidden layers'       -- Descr
   );
   
   ```
   
   
   (2)
   load mst table:
   ```
   DROP TABLE IF EXISTS mst_table99;
   
   SELECT madlib.load_model_selection_table('model_arch_library99', -- model 
architecture table
                                            'mst_table99',          -- model 
selection table output
                                             ARRAY[1,2],              -- model 
ids from model architecture table
                                             ARRAY[                   -- 
compile params
                                                 
$$loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']$$,
                                                 
$$loss='categorical_crossentropy', 
optimizer='Adam(lr=0.01)',metrics=['accuracy']$$,
                                                 
$$loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']$$
                                             ],
                                             ARRAY[                    -- fit 
params
                                                 $$batch_size=5,epochs=1$$,
                                                 $$batch_size=10,epochs=1$$
                                             ]
                                            );
   
   SELECT * FROM mst_table99 ORDER BY mst_key;
   ```
   produces
   ```
   NOTICE:  CREATE TABLE will create implicit sequence 
"mst_table99_mst_key_seq" for serial column "mst_table99.mst_key"
   CONTEXT:  SQL statement "
                           CREATE TABLE mst_table99 (
                               mst_key SERIAL,
                               model_arch_table VARCHAR,
                               model_arch_id INTEGER,
                               compile_params VARCHAR,
                               fit_params VARCHAR,
                               unique (model_arch_id, compile_params, 
fit_params)
                           );
                          "
   PL/Python function "load_model_selection_table"
   NOTICE:  CREATE TABLE / UNIQUE will create implicit index 
"mst_table99_model_arch_id_key" for table "mst_table99"
   CONTEXT:  SQL statement "
                           CREATE TABLE mst_table99 (
                               mst_key SERIAL,
                               model_arch_table VARCHAR,
                               model_arch_id INTEGER,
                               compile_params VARCHAR,
                               fit_params VARCHAR,
                               unique (model_arch_id, compile_params, 
fit_params)
                           );
                          "
   PL/Python function "load_model_selection_table"
    load_model_selection_table
   ----------------------------
   
   (1 row)
   
   Time: 289.171 ms
   madlib=#
   madlib=# SELECT * FROM mst_table99 ORDER BY mst_key;
    mst_key |   model_arch_table   | model_arch_id |                            
     compile_params                                  |       fit_params
   
---------+----------------------+---------------+---------------------------------------------------------------------------------+------------------------
          1 | model_arch_library99 |             1 | 
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']   
| batch_size=5,epochs=1
          2 | model_arch_library99 |             1 | 
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']   
| batch_size=10,epochs=1
          3 | model_arch_library99 |             1 | 
loss='categorical_crossentropy', optimizer='Adam(lr=0.01)',metrics=['accuracy'] 
| batch_size=5,epochs=1
          4 | model_arch_library99 |             1 | 
loss='categorical_crossentropy', optimizer='Adam(lr=0.01)',metrics=['accuracy'] 
| batch_size=10,epochs=1
          5 | model_arch_library99 |             1 | 
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy'] 
| batch_size=5,epochs=1
          6 | model_arch_library99 |             1 | 
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy'] 
| batch_size=10,epochs=1
          7 | model_arch_library99 |             2 | 
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']   
| batch_size=5,epochs=1
          8 | model_arch_library99 |             2 | 
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']   
| batch_size=10,epochs=1
          9 | model_arch_library99 |             2 | 
loss='categorical_crossentropy', optimizer='Adam(lr=0.01)',metrics=['accuracy'] 
| batch_size=5,epochs=1
         10 | model_arch_library99 |             2 | 
loss='categorical_crossentropy', optimizer='Adam(lr=0.01)',metrics=['accuracy'] 
| batch_size=10,epochs=1
         11 | model_arch_library99 |             2 | 
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy'] 
| batch_size=5,epochs=1
         12 | model_arch_library99 |             2 | 
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy'] 
| batch_size=10,epochs=1
   (12 rows)
   
   Time: 18.357 ms
   ```
   Table result looks OK but please remove the verbose info output.
   
   
   (3)
   missing model id:
   ```
   DROP TABLE IF EXISTS mst_table99;
   
   SELECT madlib.load_model_selection_table('model_arch_library99', -- model 
architecture table
                                            'mst_table99',          -- model 
selection table output
                                             ARRAY[1,2,3],              -- 
model ids from model architecture table
                                             ARRAY[                   -- 
compile params
                                                 
$$loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']$$,
                                                 
$$loss='categorical_crossentropy', 
optimizer='Adam(lr=0.01)',metrics=['accuracy']$$,
                                                 
$$loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']$$
                                             ],
                                             ARRAY[                    -- fit 
params
                                                 $$batch_size=5,epochs=1$$,
                                                 $$batch_size=10,epochs=1$$
                                             ]
                                            );
   
   SELECT * FROM mst_table99 ORDER BY mst_key;
   ```
   produces
   ```
   ERROR:  plpy.Error: load_model_selection_table: One or more model_id of 
(1,2,3) not found in table model_arch_library99 (plpython.c:5038)
   CONTEXT:  Traceback (most recent call last):
     PL/Python function "load_model_selection_table", line 21, in <module>
       mst_loader = madlib_keras_fit_multiple_model.MstLoader(**globals())
     PL/Python function "load_model_selection_table", line 42, in wrapper
     PL/Python function "load_model_selection_table", line 57, in __init__
     PL/Python function "load_model_selection_table", line 329, in __init__
     PL/Python function "load_model_selection_table", line 333, in 
_validate_input_args
     PL/Python function "load_model_selection_table", line 350, in 
_validate_model_arch_ids
     PL/Python function "load_model_selection_table", line 96, in _assert
   PL/Python function "load_model_selection_table"
   ```
   OK
   
   
   (4)
   missing model arch table:
   ```
   DROP TABLE IF EXISTS mst_table98;
   
   SELECT madlib.load_model_selection_table('model_arch_library98', -- model 
architecture table
                                            'mst_table99',          -- model 
selection table output
                                             ARRAY[1,2,3],              -- 
model ids from model architecture table
                                             ARRAY[                   -- 
compile params
                                                 
$$loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']$$,
                                                 
$$loss='categorical_crossentropy', 
optimizer='Adam(lr=0.01)',metrics=['accuracy']$$,
                                                 
$$loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']$$
                                             ],
                                             ARRAY[                    -- fit 
params
                                                 $$batch_size=5,epochs=1$$,
                                                 $$batch_size=10,epochs=1$$
                                             ]
                                            );
   
   SELECT * FROM mst_table98 ORDER BY mst_key;
   ```
   produces
   ```
   ERROR:  plpy.Error: load_model_selection_table error: Input table 
'model_arch_library98' does not exist. (plpython.c:5038)
   CONTEXT:  Traceback (most recent call last):
     PL/Python function "load_model_selection_table", line 21, in <module>
       mst_loader = madlib_keras_fit_multiple_model.MstLoader(**globals())
     PL/Python function "load_model_selection_table", line 42, in wrapper
     PL/Python function "load_model_selection_table", line 57, in __init__
     PL/Python function "load_model_selection_table", line 329, in __init__
     PL/Python function "load_model_selection_table", line 332, in 
_validate_input_args
     PL/Python function "load_model_selection_table", line 373, in 
_validate_input_output_tables
     PL/Python function "load_model_selection_table", line 674, in 
input_tbl_valid
   PL/Python function "load_model_selection_table"
   ```
   OK
   
   
   (4)
   dedup:
   ```
   DROP TABLE IF EXISTS mst_table99;
   
   SELECT madlib.load_model_selection_table('model_arch_library99', -- model 
architecture table
                                            'mst_table99',          -- model 
selection table output
                                             ARRAY[1,2,1,2,2,2,2,1,1,1],        
      -- model ids from model architecture table
                                             ARRAY[                   -- 
compile params
                                                 
$$loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']$$,
                                                 
$$loss='categorical_crossentropy', 
optimizer='Adam(lr=0.01)',metrics=['accuracy']$$,
                                                 
$$loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']$$,
                                                 
$$loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']$$,
                                                 
$$loss='categorical_crossentropy', 
optimizer='Adam(lr=0.01)',metrics=['accuracy']$$,
                                                 
$$loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']$$
                                             ],
                                             ARRAY[                    -- fit 
params
                                                 $$batch_size=5,epochs=1$$,
                                                 $$batch_size=10,epochs=1$$,
                                                 $$batch_size=5,epochs=1$$,
                                                 $$batch_size=10,epochs=1$$,
                                                 $$batch_size=5,epochs=1$$,
                                                 $$batch_size=10,epochs=1$$,
                                                 $$batch_size=5,epochs=1$$,
                                                 $$batch_size=10,epochs=1$$
                                             ]
                                            );
   
   SELECT * FROM mst_table99 ORDER BY mst_key;
   ```
   produces
   ```
    mst_key |   model_arch_table   | model_arch_id |                            
     compile_params                                  |       fit_params       
   
---------+----------------------+---------------+---------------------------------------------------------------------------------+------------------------
          1 | model_arch_library99 |             1 | 
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']   
| batch_size=5,epochs=1
          2 | model_arch_library99 |             1 | 
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']   
| batch_size=10,epochs=1
          3 | model_arch_library99 |             1 | 
loss='categorical_crossentropy', optimizer='Adam(lr=0.01)',metrics=['accuracy'] 
| batch_size=5,epochs=1
          4 | model_arch_library99 |             1 | 
loss='categorical_crossentropy', optimizer='Adam(lr=0.01)',metrics=['accuracy'] 
| batch_size=10,epochs=1
          5 | model_arch_library99 |             1 | 
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy'] 
| batch_size=5,epochs=1
          6 | model_arch_library99 |             1 | 
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy'] 
| batch_size=10,epochs=1
          7 | model_arch_library99 |             2 | 
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']   
| batch_size=5,epochs=1
          8 | model_arch_library99 |             2 | 
loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']   
| batch_size=10,epochs=1
          9 | model_arch_library99 |             2 | 
loss='categorical_crossentropy', optimizer='Adam(lr=0.01)',metrics=['accuracy'] 
| batch_size=5,epochs=1
         10 | model_arch_library99 |             2 | 
loss='categorical_crossentropy', optimizer='Adam(lr=0.01)',metrics=['accuracy'] 
| batch_size=10,epochs=1
         11 | model_arch_library99 |             2 | 
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy'] 
| batch_size=5,epochs=1
         12 | model_arch_library99 |             2 | 
loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy'] 
| batch_size=10,epochs=1
   (12 rows)
   ```
   OK
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to