You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@madlib.apache.org by "Frank McQuillan (JIRA)" <ji...@apache.org> on 2019/05/02 00:39:01 UTC

[jira] [Created] (MADLIB-1336) Compile and fit parameters not being passed properly to Keras

Frank McQuillan created MADLIB-1336:
---------------------------------------

             Summary: Compile and fit parameters not being passed properly to Keras 
                 Key: MADLIB-1336
                 URL: https://issues.apache.org/jira/browse/MADLIB-1336
             Project: Apache MADlib
          Issue Type: Bug
          Components: Module: Neural Networks
            Reporter: Frank McQuillan
             Fix For: v1.16


I suggest that we support the optional / mandatory rules of the underlying Keras compile and fit parameters.

(1) I did not use a metrics parameter and it failed:
{code}
SELECT madlib.madlib_keras_fit('mnist_train_packed',  -- source_table
                               'model1', -- model
                               'dependent_var',  -- dependent_varname
                               'independent_var',  -- independent_varname
                               'model_arch_library',  -- model_arch_table
                               2,  -- model_arch_id
                               $$ loss='categorical_crossentropy', optimizer='adam' $$,  -- compile_params
                               $$ batch_size=128, epochs=4 $$,  -- fit_params
                               1,  -- num_iterations
                               FALSE,  -- use_gpu
                               NULL,  -- validation_table
                               'Frank',  -- name
                               'A test model'  -- description
                              );
{code}
produces
{code}
InternalError: (psycopg2.InternalError) plpy.SPIError: KeyError: 'metrics' (plpython.c:5038)  (seg0 slice1 10.128.0.41:40000 pid=31836) (plpython.c:5038)
DETAIL:  
Traceback (most recent call last):
  PL/Python function "fit_transition", line 6, in <module>
    return madlib_keras.fit_transition(**globals())
  PL/Python function "fit_transition", line 388, in fit_transition
  PL/Python function "fit_transition", line 71, in compile_and_set_weights
  PL/Python function "fit_transition", line 241, in compile_model
  PL/Python function "fit_transition", line 144, in parse_and_validate_compile_params
  PL/Python function "fit_transition", line 247, in validate_compile_param_types
PL/Python function "fit_transition"
CONTEXT:  Traceback (most recent call last):
  PL/Python function "madlib_keras_fit", line 21, in <module>
    madlib_keras.fit(**globals())
  PL/Python function "madlib_keras_fit", line 157, in fit
PL/Python function "madlib_keras_fit"
 [SQL: "SELECT madlib.madlib_keras_fit('mnist_train_packed',  -- source_table\n                               'model1', -- model\n                               'dependent_var',  -- dependent_varname\n                               'independent_var',  -- independent_varname\n                               'model_arch_library',  -- model_arch_table\n                               2,  -- model_arch_id\n                               $$ loss='categorical_crossentropy', optimizer='adam' $$,  -- compile_params\n                               $$ batch_size=128, epochs=4 $$,  -- fit_params\n                               1,  -- num_iterations\n                               FALSE,  -- use_gpu\n                               NULL,  -- validation_table\n                               'Frank',  -- name\n                               'A test model'  -- description\n                              );"]
{code}

(2)  Errors on loss parameter which is optional:
{code}
madlib=# SELECT madlib.madlib_keras_fit('mnist_train_packed',  -- source_table
madlib(#                                'model1', -- model
madlib(#                                'dependent_var',  -- dependent_varname
madlib(#                                'independent_var',  -- independent_varname
madlib(#                                'model_arch_library',  -- model_arch_table
madlib(#                                2,  -- model_arch_id
madlib(#                                $$ optimizer='adam' $$,  -- compile_params
madlib(#                                $$ $$,  -- fit_params
madlib(#                                1,  -- num_iterations
madlib(#                                FALSE,  -- use_gpu
madlib(#                                NULL,  -- validation_table
madlib(#                                'Frank',  -- name
madlib(#                                'A test model'  -- description
madlib(#                               );
INFO:  Model architecture size: 1KB
CONTEXT:  PL/Python function "madlib_keras_fit"
INFO:  Model state (serialized) size: 2MB
CONTEXT:  PL/Python function "madlib_keras_fit"
ERROR:  plpy.SPIError: KeyError: 'loss' (plpython.c:5038)  (seg0 slice1 10.128.0.41:40000 pid=1039) (plpython.c:5038)
DETAIL:  
Traceback (most recent call last):
  PL/Python function "fit_transition", line 6, in <module>
    return madlib_keras.fit_transition(**globals())
  PL/Python function "fit_transition", line 388, in fit_transition
  PL/Python function "fit_transition", line 71, in compile_and_set_weights
  PL/Python function "fit_transition", line 241, in compile_model
  PL/Python function "fit_transition", line 136, in parse_and_validate_compile_params
  PL/Python function "fit_transition", line 187, in parse_loss
PL/Python function "fit_transition"
CONTEXT:  Traceback (most recent call last):
  PL/Python function "madlib_keras_fit", line 21, in <module>
{code}

(3)  All fit params are optional so should be able to pass NULL
{code}
madlib=# SELECT madlib.madlib_keras_fit('mnist_train_packed',  -- source_table
madlib(#                                'model1', -- model
madlib(#                                'dependent_var',  -- dependent_varname
madlib(#                                'independent_var',  -- independent_varname
madlib(#                                'model_arch_library',  -- model_arch_table
madlib(#                                2,  -- model_arch_id
madlib(#                                $$ optimizer='adam' $$,  -- compile_params
madlib(#                                NULL,  -- fit_params
madlib(#                                1,  -- num_iterations
madlib(#                                FALSE,  -- use_gpu
madlib(#                                NULL,  -- validation_table
madlib(#                                'Frank',  -- name
madlib(#                                'A test model'  -- description
madlib(#                               );
ERROR:  TypeError: cannot concatenate 'str' and 'NoneType' objects (plpython.c:5038)
CONTEXT:  Traceback (most recent call last):
  PL/Python function "madlib_keras_fit", line 21, in <module>
    madlib_keras.fit(**globals())
  PL/Python function "madlib_keras_fit", line 127, in fit
PL/Python function "madlib_keras_fit"
{code}




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)