diff --git a/ethosu/regor/tflite/tflite_writer.cpp b/ethosu/regor/tflite/tflite_writer.cpp index 19eebc06ed33244fa45e468785d970f1a1211004..a0e58769f4e41f137bc95e00f032ee6b680dfad5 100644 --- a/ethosu/regor/tflite/tflite_writer.cpp +++ b/ethosu/regor/tflite/tflite_writer.cpp @@ -222,11 +222,14 @@ std::unique_ptr TfLiteWriter::SerialiseImpl(const std::vector(inputs); - auto serialised_intermediates = _flatbuffer.CreateVector(intermediates); auto serialised_outputs = _flatbuffer.CreateVector(outputs); auto serialised_options = SerialiseOptions(operation, type); auto serialised_options2 = SerialiseOptions2(operation, type); + // Flatbuffer vectors have a length prefix before the payload. If the op doesn't have any intermediates + // the field can be omitted entirely by setting below variable to 0 instead of creating an empty vector. + auto serialised_intermediates = !intermediates.empty() ? _flatbuffer.CreateVector(intermediates) : 0; + _serialised_operations.push_back(tflite::CreateOperator(_flatbuffer, opcode_index, serialised_inputs, serialised_outputs, builtin_options_type, serialised_options, custom_options, custom_options_format, mvi, serialised_intermediates, large_custom_options_offset, large_custom_options_size, builtin_options_2_type, serialised_options2));