fmcquillan99 edited a comment on pull request #501:
URL: https://github.com/apache/madlib/pull/501#issuecomment-634904316


   (1)
   no custom functions but specify object table
   
   ```
   DROP TABLE IF EXISTS mst_table, mst_table_summary;
   
   SELECT madlib.load_model_selection_table('model_arch_library', -- model 
architecture table
                                            'mst_table',          -- 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=4,epochs=1$$,
                                                 $$batch_size=8,epochs=1$$
                                             ],
                                             'test_custom_function_table'
                                            );
                                     
   SELECT * FROM mst_table_summary;
   
     model_arch_table  |        object_table        
   --------------------+----------------------------
    model_arch_library | test_custom_function_table
   (1 row)
   ```
   OK
   
   
   (2)
   custom functions and right object table
   
   ```
   DROP TABLE IF EXISTS mst_table, mst_table_summary;
   
   SELECT madlib.load_model_selection_table('model_arch_library', -- model 
architecture table
                                            'mst_table',          -- model 
selection table output
                                             ARRAY[1,2],              -- model 
ids from model architecture table
                                             ARRAY[                   -- 
compile params
                                                 
$$loss=sum_fn,optimizer='Adam(lr=0.1)',metrics=['accuracy']$$,
                                                 $$loss=mult_fn, 
optimizer='Adam(lr=0.01)',metrics=['accuracy']$$,
                                                 
$$loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']$$
                                             ],
                                             ARRAY[                    -- fit 
params
                                                 $$batch_size=4,epochs=1$$,
                                                 $$batch_size=8,epochs=1$$
                                             ],
                                             'test_custom_function_table'
                                            );
   
   SELECT * FROM mst_table_summary;
   
     model_arch_table  |        object_table        
   --------------------+----------------------------
    model_arch_library | test_custom_function_table
   (1 row)
   ```
   OK
   
   
   (3)
   custom functions and wrong object table
   
   ```
   DROP TABLE IF EXISTS mst_table, mst_table_summary;
   
   SELECT madlib.load_model_selection_table('model_arch_library', -- model 
architecture table
                                            'mst_table',          -- model 
selection table output
                                             ARRAY[1,2],              -- model 
ids from model architecture table
                                             ARRAY[                   -- 
compile params
                                                 
$$loss=sum_fn,optimizer='Adam(lr=0.1)',metrics=['accuracy']$$,
                                                 $$loss=mult_fn, 
optimizer='Adam(lr=0.01)',metrics=['accuracy']$$,
                                                 
$$loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']$$
                                             ],
                                             ARRAY[                    -- fit 
params
                                                 $$batch_size=4,epochs=1$$,
                                                 $$batch_size=8,epochs=1$$
                                             ],
                                             'test_custom_function_table111'
                                            );
   
   ERROR:  plpy.Error: load_model_selection_table error: Input table 
'test_custom_function_table111' 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_model_selection.MstLoader(**globals())
     PL/Python function "load_model_selection_table", line 42, in wrapper
     PL/Python function "load_model_selection_table", line 74, in __init__
     PL/Python function "load_model_selection_table", line 459, in __init__
     PL/Python function "load_model_selection_table", line 462, in 
_validate_input_args
     PL/Python function "load_model_selection_table", line 535, in 
_validate_input_output_tables
     PL/Python function "load_model_selection_table", line 619, in 
input_tbl_valid
   PL/Python function "load_model_selection_table"
   ```
   OK
   
   
   (4)
   custom functions specified but not in object table
   
   ```
   DROP TABLE IF EXISTS mst_table, mst_table_summary;
   
   SELECT madlib.load_model_selection_table('model_arch_library', -- model 
architecture table
                                            'mst_table',          -- model 
selection table output
                                             ARRAY[1,2],              -- model 
ids from model architecture table
                                             ARRAY[                   -- 
compile params
                                                 
$$loss=sum_fn111,optimizer='Adam(lr=0.1)',metrics=['accuracy']$$,
                                                 $$loss=mult_fn, 
optimizer='Adam(lr=0.01)',metrics=['accuracy']$$,
                                                 
$$loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']$$
                                             ],
                                             ARRAY[                    -- fit 
params
                                                 $$batch_size=4,epochs=1$$,
                                                 $$batch_size=8,epochs=1$$
                                             ],
                                             'test_custom_function_table'
                                            );
   
   ERROR:  plpy.Error: Compile param check failed for: 
loss=sum_fn111,optimizer='Adam(lr=0.1)',metrics=['accuracy'] (plpython.c:5038)
   DETAIL:  
   
                       custom function 'sum_fn111' used in compile params not 
defined in object table 'test_custom_function_table'!
   CONTEXT:  Traceback (most recent call last):
     PL/Python function "load_model_selection_table", line 21, in <module>
       mst_loader = madlib_keras_model_selection.MstLoader(**globals())
     PL/Python function "load_model_selection_table", line 42, in wrapper
     PL/Python function "load_model_selection_table", line 74, in __init__
     PL/Python function "load_model_selection_table", line 459, in __init__
     PL/Python function "load_model_selection_table", line 464, in 
_validate_input_args
     PL/Python function "load_model_selection_table", line 530, in 
_validate_compile_and_fit_params
   PL/Python function "load_model_selection_table"
   ```
   OK
   
   
   (5) 
   should throw error if specify custom functions but do not specify an object 
table
   
   ```
   DROP TABLE IF EXISTS mst_table, mst_table_summary;
   
   SELECT madlib.load_model_selection_table('model_arch_library', -- model 
architecture table
                                            'mst_table',          -- model 
selection table output
                                             ARRAY[1,2],              -- model 
ids from model architecture table
                                             ARRAY[                   -- 
compile params
                                                 
$$loss=sum_fn,optimizer='Adam(lr=0.1)',metrics=['accuracy']$$,
                                                 $$loss=mult_fn, 
optimizer='Adam(lr=0.01)',metrics=['accuracy']$$,
                                                 
$$loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']$$
                                             ],
                                             ARRAY[                    -- fit 
params
                                                 $$batch_size=4,epochs=1$$,
                                                 $$batch_size=8,epochs=1$$
                                             ]
                                            );
   
    ERROR:  plpy.Error: Compile param check failed for: 
loss=sum_fn,optimizer='Adam(lr=0.1)',metrics=['accuracy'] (plpython.c:5038)
   DETAIL:  
   
                       custom function 'sum_fn' used in compile params but 
input object table missing!
   CONTEXT:  Traceback (most recent call last):
     PL/Python function "load_model_selection_table", line 21, in <module>
       mst_loader = madlib_keras_model_selection.MstLoader(**globals())
     PL/Python function "load_model_selection_table", line 42, in wrapper
     PL/Python function "load_model_selection_table", line 74, in __init__
     PL/Python function "load_model_selection_table", line 459, in __init__
     PL/Python function "load_model_selection_table", line 464, in 
_validate_input_args
     PL/Python function "load_model_selection_table", line 530, in 
_validate_compile_and_fit_params
   PL/Python function "load_model_selection_table"
   
   ```
   OK (This is the one that did not work before but seems fine now.)
   
   LGTM


----------------------------------------------------------------
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]


Reply via email to