1

I am trying to convert my custom Keras model, with two bidirectional GRU layers, to tf-lite for use on mobile devices. I converted my model to the protobuff format and tried to convert it with the given code by TensorFlow:

converter = tf.lite.TFLiteConverter.from_frozen_graph('gru.pb', input_arrays=['input_array'], output_arrays=['output_array'])
tflite_model = converter.convert()

When I execute this it runs for a bit and then I get the following error:

F tensorflow/lite/toco/tooling_util.cc:1455] Should not get here: 5

So I looked up that file and it states the following:

void MakeArrayDims(int num_dims, int batch, int height, int width, int depth,
                   std::vector<int>* out_dims) {
  CHECK(out_dims->empty());
  if (num_dims == 0) {
    return;
  } else if (num_dims == 1) {
    CHECK_EQ(batch, 1);
    *out_dims = {depth};
  } else if (num_dims == 2) {
    *out_dims = {batch, depth};
  } else if (num_dims == 3) {
    CHECK_EQ(batch, 1);
    *out_dims = {height, width, depth};
  } else if (num_dims == 4) {
    *out_dims = {batch, height, width, depth};
  } else {
    LOG(FATAL) << "Should not get here: " << num_dims;
  }
}

Which seems to be correct since I am using 5 dimensions: [Batch, Sequence, Height, Width, Channels]

Google didn't help me much with this issue, but maybe I am using the wrong search terms.

So is there any way to avoid this error, or does tf-lite simply not support sequences?

ps. I am using TensorFlow 1.14 with python3 in the given docker container.

Jelle de Fries
  • 885
  • 1
  • 11
  • 20

0 Answers0