diff --git a/src/sagemaker/amazon/hyperparameter.py b/src/sagemaker/amazon/hyperparameter.py index 06dc89e45c..15ae928810 100644 --- a/src/sagemaker/amazon/hyperparameter.py +++ b/src/sagemaker/amazon/hyperparameter.py @@ -12,6 +12,8 @@ # language governing permissions and limitations under the License. from __future__ import absolute_import +import json + class Hyperparameter(object): """An algorithm hyperparameter with optional validation. Implemented as a python @@ -67,4 +69,8 @@ def serialize_all(obj): """Return all non-None ``hyperparameter`` values on ``obj`` as a ``dict[str,str].``""" if "_hyperparameters" not in dir(obj): return {} - return {k: str(v) for k, v in obj._hyperparameters.items() if v is not None} + return { + k: json.dumps(v) if isinstance(v, list) else str(v) + for k, v in obj._hyperparameters.items() + if v is not None + } diff --git a/tests/integ/test_kmeans.py b/tests/integ/test_kmeans.py index 3323e961cd..65f2854179 100644 --- a/tests/integ/test_kmeans.py +++ b/tests/integ/test_kmeans.py @@ -13,6 +13,7 @@ from __future__ import absolute_import import gzip +import json import os import pickle import sys @@ -52,6 +53,7 @@ def test_kmeans(sagemaker_session): kmeans.half_life_time_size = 1 kmeans.epochs = 1 kmeans.center_factor = 1 + kmeans.eval_metrics = ["ssd", "msd"] assert kmeans.hyperparameters() == dict( init_method=kmeans.init_method, @@ -63,6 +65,7 @@ def test_kmeans(sagemaker_session): epochs=str(kmeans.epochs), extra_center_factor=str(kmeans.center_factor), k=str(kmeans.k), + eval_metrics=json.dumps(kmeans.eval_metrics), force_dense="True", ) diff --git a/tests/integ/test_randomcutforest.py b/tests/integ/test_randomcutforest.py index 0c74251fd1..2301cca786 100644 --- a/tests/integ/test_randomcutforest.py +++ b/tests/integ/test_randomcutforest.py @@ -34,6 +34,7 @@ def test_randomcutforest(sagemaker_session): train_instance_type="ml.c4.xlarge", num_trees=50, num_samples_per_tree=20, + eval_metrics=["accuracy", "precision_recall_fscore"], sagemaker_session=sagemaker_session, ) diff --git a/tests/unit/test_kmeans.py b/tests/unit/test_kmeans.py index 156920e787..0389f8c180 100644 --- a/tests/unit/test_kmeans.py +++ b/tests/unit/test_kmeans.py @@ -104,7 +104,7 @@ def test_all_hyperparameters(sagemaker_session): half_life_time_size="0", epochs="10", extra_center_factor="2", - eval_metrics="['msd', 'ssd']", + eval_metrics='["msd", "ssd"]', force_dense="True", ) diff --git a/tests/unit/test_randomcutforest.py b/tests/unit/test_randomcutforest.py index f182969c54..de3fda172c 100644 --- a/tests/unit/test_randomcutforest.py +++ b/tests/unit/test_randomcutforest.py @@ -100,7 +100,7 @@ def test_all_hyperparameters(sagemaker_session): assert randomcutforest.hyperparameters() == dict( num_samples_per_tree=str(NUM_SAMPLES_PER_TREE), num_trees=str(NUM_TREES), - eval_metrics="{}".format(EVAL_METRICS), + eval_metrics='["accuracy", "precision_recall_fscore"]', )