twalk4821
twalk4821

Reputation: 21

Failed Tensorflow Lite conversion: Unsupported data type in placeholder op

System information: Mac OS Mojave

TensorFlow installed from (source or binary): pip install tensorflow

TensorFlow version (or github SHA if from source): 1.12

I am trying to convert a simple convolutional tensorflow model to tensorflow lite. I already have it in SavedModel format. But when I try to run the convert util on the saved model, I get:

RuntimeError: TOCO failed see console for info. b"2018-12-30 15:40:54.449737: I tensorflow/contrib/lite/toco/import_tensorflow.cc:189] Unsupported data type in placeholder op: 2\n2018-12-30 15:40:54.450020: F tensorflow/contrib/lite/toco/import_tensorflow.cc:2137] Check failed: status.ok() Unexpected value forattribute 'T'. Expected 'DT_FLOAT'\n"

To save the model, I have:

// model is an Estimator instance def export(model): model.export_saved_model("tmp/export", serving_input_receiver_fn)

and:

def serving_input_receiver_fn(): features = { 'x': tf.placeholder(shape=[1, 100, 100, 1], dtype=tf.as_dtype(np.int32)) } return tf.estimator.export.ServingInputReceiver(features, features)

Input dtype is np.int32, so I attempt to cast that to a tf type here.

I can attach the full model def on request.

Thanks.

Upvotes: 1

Views: 1469

Answers (1)

twalk4821
twalk4821

Reputation: 21

The solution to this was not in the placeholder op itself, but in the model declaration. I was using a float64 input type. Switching to float32, and setting dtype=float32 in the placeholder, solved my issue.

Upvotes: 1

Related Questions