Compute output shapes for some kernels (#2356)

@tensorflow/micro

Update the output tensor shape during prepare phase when the computed shape does not match the shape in the flatbuffer.

Kernels:
- BATCH_TO_SPACE_ND
- SPACE_TO_BATCH_ND
- CONV
- RESHAPE
- EXPAND_DIMS
- DEPTHWISE_CONV

Update CMSIS_NN and ARC_MLI optimized kernels.
Add additional tests from TfLite for BATCH_TO_SPACE_ND and SPACE_TO_BATCH_ND.
Update existing tests.
Add tests for Keras model using convolution with dilation > 1.

Update memory_arena_threshold_test to increase total, tail, and persistent allocation sizes:
- Add 20 bytes for CONV output shape
- Add 15 bytes for arena allocation alignment
- x2 convolution layers

Update micro_speech_test arena size as per description in C++ code.

See #2319 for additional details.

Resolves [b/317362237](https://issuetracker.google.com/317362237)

bug=fixes #2368 #1646 #1629 #1231 #2338 #2319
27 files changed
tree: f40ba94c74db1538a7b42b0c9f2156f081d815ab
  1. .github/
  2. ci/
  3. codegen/
  4. data/
  5. docs/
  6. python/
  7. signal/
  8. tensorflow/
  9. third_party/
  10. tools/
  11. .bazelrc
  12. .clang-format
  13. .editorconfig
  14. .gitignore
  15. AUTHORS
  16. BUILD
  17. CODEOWNERS
  18. CONTRIBUTING.md
  19. debugging_output.md
  20. LICENSE
  21. README.md
  22. SECURITY.md
  23. WORKSPACE
README.md

TensorFlow Lite for Microcontrollers

TensorFlow Lite for Microcontrollers is a port of TensorFlow Lite designed to run machine learning models on DSPs, microcontrollers and other devices with limited memory.

Additional Links:

Build Status

Official Builds

Build TypeStatus
CI (Linux)CI
Code SyncSync from Upstream TF

Community Supported TFLM Examples

This table captures platforms that TFLM has been ported to. Please see New Platform Support for additional documentation.

PlatformStatus
ArduinoArduino Antmicro
Coral Dev Board MicroTFLM + EdgeTPU Examples for Coral Dev Board Micro
Espressif Systems Dev BoardsESP Dev Boards
Renesas BoardsTFLM Examples for Renesas Boards
Silicon Labs Dev KitsTFLM Examples for Silicon Labs Dev Kits
Sparkfun EdgeSparkfun Edge
Texas Instruments Dev BoardsTexas Instruments Dev Boards

Community Supported Kernels and Unit Tests

This is a list of targets that have optimized kernel implementations and/or run the TFLM unit tests using software emulation or instruction set simulators.

Build TypeStatus
Cortex-MCortex-M
HexagonHexagon
RISC-VRISC-V
XtensaXtensa
Generate Integration TestGenerate Integration Test

Contributing

See our contribution documentation.

Getting Help

A Github issue should be the primary method of getting in touch with the TensorFlow Lite Micro (TFLM) team.

The following resources may also be useful:

  1. SIG Micro email group and monthly meetings.

  2. SIG Micro gitter chat room.

  3. For questions that are not specific to TFLM, please consult the broader TensorFlow project, e.g.:

Additional Documentation

RFCs

  1. Pre-allocated tensors
  2. TensorFlow Lite for Microcontrollers Port of 16x8 Quantized Operators