tree 7e53538cbe39ca448b6ee324aecc7297343388e6
parent 5d33cf645c57fa1c0d5e4fd78b49975c16a4fe09
author Ekta Khanna <ekhanna@pivotal.io> 1594169050 -0700
committer Ekta Khanna <ekhanna@pivotal.io> 1595351224 -0700

DL: Add custom loss function support for DL module

This commit adds support for custom loss function to DL fit, evaluate,
fit_multiple. Following are the changes:

1. fit: A new optional param for passing in the object_table name
object_table (optional) VARCHAR: Name of the table containing Python
objects in the case that custom loss functions or custom metrics are
specified in the parameter `compile_params`
```
madlib_keras_fit(
    source_table,
    model,
    model_arch_table,
    model_id,
    compile_params,
    fit_params,
    num_iterations,
    use_gpus,
    validation_table,
    metrics_compute_frequency,
    warm_start,
    name,
    description,
    object_table  -- new parameter
    )
```

This new param is also outputed in the output summary table.

2. Adding helper functions to parse custom loss functions, query their
definitions from the object_table and create an object of a dictionary
of {'fn_name': 'fn_object'} to be passed to the fit functions, where it
is read and passed as a python object to keras.

3. Evaluate: No change to the madlib_keras_evaluate() function. Reads object_table
information from the fit/fit_multiple output model table.
Output table adds a new column:
loss_type: Type of loss used that was used in the training step
	   If a custom loss or metric is used, we should give the name of it.
	   Otherwise list the built-in one used

4. fit_multiple: No change to the madlib_keras_fit_multiple_model() function. Reads
object_table information from the model_selection table.  The mst keys
having  are populated by None object_map by default. If the object_table
exists, the helper function to parse custom loss functions from the
compile_params is called to get all the custom_function names. Once we
get all the custom function names, we query their definitions from the
object_table and create a single dictionary of {{'fn_name1':
'fn_object1'}, {'fn_name2': 'fn_object2'}...} and pass it to the fit
multiple functions, where it is read and the corresponding function
definition is passed as a python object to keras.

A summary table named <model>_summary is also created, which has the
following new columns:
model_selection_table: 	Name of the table containing model selection
			parameters to be tried.
object_table:  	        Name of the object table containing the serialized
			Python objects for custom loss functions and custom metrics (read from
			the mst_summary table).

5. Adding corresponding unit tests and dev-check tests
