-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed
Labels
Description
cols = [
tf.feature_column.numeric_column("age"),
tf.feature_column.categorical_column_with_vocabulary_list("gender", ["m", "f", "other"]),
tf.feature_column.categorical_column_with_hash_bucket("city", hash_bucket_size=15000)
]
example_spec = tf.feature_column.make_parse_example_spec
print(example_spec)
# {'gender': VarLenFeature(dtype=tf.string), 'age': FixedLenFeature(shape=(1,), dtype=tf.float32, default_value=None), 'city': VarLenFeature(dtype=tf.string)}
srv_fun = tf.estimator.export.build_parsing_serving_input_receiver_fn(example_spec)()
print(str(srv_fun))
#ServingInputReceiver(features={'city': <tensorflow.python.framework.sparse_tensor.SparseTensor object at 0x7f83c7509ad0>, 'age': <tf.Tensor 'ParseExample_7/ParseExample:6' shape=(?, 1) dtype=float32>, 'gender': <tensorflow.python.framework.sparse_tensor.SparseTensor object at 0x7f83c75093d0>}, receiver_tensors={'examples': <tf.Tensor 'input_example_tensor_8:0' shape=(?,) dtype=string>}, receiver_tensors_alternatives=None)
What format can we use to send predict requests using the Sagemaker SDK for input functions like the above?
The JSON serializer only handles arrays.. so it seems like tf_estimator.predict({"city":"Paris", "gender":"m", "age":22}) is out. I tried variations of Array input and get cryptic errors from the TF serving proxy client (that source code is not available to my knowledge)
Looking at the TF Iris DNN example notebook: it uses a syntax like iris_predictor.predict([6.4, 3.2, 4.5, 1.5]) though the FeatureSpec is like {'input': IrisArrayData}. So perhaps the feature spec needs a top level?