xmos-ai-tools 1.3.2.dev80__py3-none-macosx_10_15_universal2.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. xmos_ai_tools/__init__.py +7 -0
  2. xmos_ai_tools/io_server/__init__.py +151 -0
  3. xmos_ai_tools/runtime/__init__.py +0 -0
  4. xmos_ai_tools/runtime/buildfiles/aitoolslib.cmake +13 -0
  5. xmos_ai_tools/runtime/buildfiles/aitoolslib.make +8 -0
  6. xmos_ai_tools/runtime/include/flash_server.h +74 -0
  7. xmos_ai_tools/runtime/include/flatbuffers/allocator.h +68 -0
  8. xmos_ai_tools/runtime/include/flatbuffers/array.h +243 -0
  9. xmos_ai_tools/runtime/include/flatbuffers/base.h +474 -0
  10. xmos_ai_tools/runtime/include/flatbuffers/bfbs_generator.h +43 -0
  11. xmos_ai_tools/runtime/include/flatbuffers/buffer.h +142 -0
  12. xmos_ai_tools/runtime/include/flatbuffers/buffer_ref.h +53 -0
  13. xmos_ai_tools/runtime/include/flatbuffers/code_generators.h +235 -0
  14. xmos_ai_tools/runtime/include/flatbuffers/default_allocator.h +64 -0
  15. xmos_ai_tools/runtime/include/flatbuffers/detached_buffer.h +114 -0
  16. xmos_ai_tools/runtime/include/flatbuffers/flatbuffer_builder.h +1197 -0
  17. xmos_ai_tools/runtime/include/flatbuffers/flatbuffers.h +270 -0
  18. xmos_ai_tools/runtime/include/flatbuffers/flatc.h +111 -0
  19. xmos_ai_tools/runtime/include/flatbuffers/flexbuffers.h +1897 -0
  20. xmos_ai_tools/runtime/include/flatbuffers/grpc.h +300 -0
  21. xmos_ai_tools/runtime/include/flatbuffers/hash.h +127 -0
  22. xmos_ai_tools/runtime/include/flatbuffers/idl.h +1232 -0
  23. xmos_ai_tools/runtime/include/flatbuffers/minireflect.h +419 -0
  24. xmos_ai_tools/runtime/include/flatbuffers/pch/flatc_pch.h +39 -0
  25. xmos_ai_tools/runtime/include/flatbuffers/pch/pch.h +38 -0
  26. xmos_ai_tools/runtime/include/flatbuffers/reflection.h +502 -0
  27. xmos_ai_tools/runtime/include/flatbuffers/reflection_generated.h +1449 -0
  28. xmos_ai_tools/runtime/include/flatbuffers/registry.h +128 -0
  29. xmos_ai_tools/runtime/include/flatbuffers/stl_emulation.h +509 -0
  30. xmos_ai_tools/runtime/include/flatbuffers/string.h +64 -0
  31. xmos_ai_tools/runtime/include/flatbuffers/struct.h +53 -0
  32. xmos_ai_tools/runtime/include/flatbuffers/table.h +168 -0
  33. xmos_ai_tools/runtime/include/flatbuffers/util.h +690 -0
  34. xmos_ai_tools/runtime/include/flatbuffers/vector.h +370 -0
  35. xmos_ai_tools/runtime/include/flatbuffers/vector_downward.h +271 -0
  36. xmos_ai_tools/runtime/include/flatbuffers/verifier.h +283 -0
  37. xmos_ai_tools/runtime/include/ioserver.h +44 -0
  38. xmos_ai_tools/runtime/include/lib_nn/api/TransposeConv.h +24 -0
  39. xmos_ai_tools/runtime/include/lib_nn/api/add_int16.h +27 -0
  40. xmos_ai_tools/runtime/include/lib_nn/api/add_int16_transform.h +42 -0
  41. xmos_ai_tools/runtime/include/lib_nn/api/dequantize_int16.h +22 -0
  42. xmos_ai_tools/runtime/include/lib_nn/api/dequantize_int16_transform.h +34 -0
  43. xmos_ai_tools/runtime/include/lib_nn/api/expand_8_to_16.h +8 -0
  44. xmos_ai_tools/runtime/include/lib_nn/api/multiply_int16.h +42 -0
  45. xmos_ai_tools/runtime/include/lib_nn/api/multiply_int16_transform.h +71 -0
  46. xmos_ai_tools/runtime/include/lib_nn/api/nn_api.h +15 -0
  47. xmos_ai_tools/runtime/include/lib_nn/api/nn_bin_types.h +14 -0
  48. xmos_ai_tools/runtime/include/lib_nn/api/nn_config.h +287 -0
  49. xmos_ai_tools/runtime/include/lib_nn/api/nn_conv2d_structs.h +72 -0
  50. xmos_ai_tools/runtime/include/lib_nn/api/nn_image.h +26 -0
  51. xmos_ai_tools/runtime/include/lib_nn/api/nn_layers.h +303 -0
  52. xmos_ai_tools/runtime/include/lib_nn/api/nn_op_helper.h +132 -0
  53. xmos_ai_tools/runtime/include/lib_nn/api/nn_op_utils.h +150 -0
  54. xmos_ai_tools/runtime/include/lib_nn/api/nn_operator.h +18 -0
  55. xmos_ai_tools/runtime/include/lib_nn/api/nn_pooling.h +551 -0
  56. xmos_ai_tools/runtime/include/lib_nn/api/nn_types.h +83 -0
  57. xmos_ai_tools/runtime/include/lib_nn/api/nn_window_params.h +55 -0
  58. xmos_ai_tools/runtime/include/lib_nn/api/output_transform_fn_int16.h +54 -0
  59. xmos_ai_tools/runtime/include/lib_nn/api/output_transform_fn_int16_kernel_transform.h +37 -0
  60. xmos_ai_tools/runtime/include/lib_nn/api/output_transform_fn_int16_mappings.h +13 -0
  61. xmos_ai_tools/runtime/include/lib_nn/api/quadratic_approximation.h +82 -0
  62. xmos_ai_tools/runtime/include/lib_nn/api/quadratic_interpolation.h +23 -0
  63. xmos_ai_tools/runtime/include/lib_nn/api/quantize_int16.h +22 -0
  64. xmos_ai_tools/runtime/include/lib_nn/api/quantize_int16_transform.h +33 -0
  65. xmos_ai_tools/runtime/include/lib_nn/api/version.h +13 -0
  66. xmos_ai_tools/runtime/include/lib_nn/api/vpu_memmove_word_aligned.h +15 -0
  67. xmos_ai_tools/runtime/include/lib_nn/api/vpu_memset_256.h +55 -0
  68. xmos_ai_tools/runtime/include/lib_nn/api/vpu_sim.h +118 -0
  69. xmos_ai_tools/runtime/include/lib_nn/api/xs3_vpu.h +216 -0
  70. xmos_ai_tools/runtime/include/lib_nn/api/xs3a_registers.h +2869 -0
  71. xmos_ai_tools/runtime/include/lib_nn/src/asm/asm_constants.h +41 -0
  72. xmos_ai_tools/runtime/include/lib_nn/src/asm/window_op_plan.h +25 -0
  73. xmos_ai_tools/runtime/include/lib_tflite_micro/api/fast_flash.h +47 -0
  74. xmos_ai_tools/runtime/include/lib_tflite_micro/api/inference_engine.h +218 -0
  75. xmos_ai_tools/runtime/include/lib_tflite_micro/api/memory_parallel_transport.h +52 -0
  76. xmos_ai_tools/runtime/include/lib_tflite_micro/api/version.h +13 -0
  77. xmos_ai_tools/runtime/include/lib_tflite_micro/api/xcore_config.h +17 -0
  78. xmos_ai_tools/runtime/include/lib_tflite_micro/api/xcore_device_memory.h +62 -0
  79. xmos_ai_tools/runtime/include/lib_tflite_micro/api/xcore_shared_config.h +31 -0
  80. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/conv2d_float.h +155 -0
  81. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_common.h +19 -0
  82. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_custom_options.h +28 -0
  83. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_error_reporter.h +32 -0
  84. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_interpreter.h +49 -0
  85. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_ops.h +71 -0
  86. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_profiler.h +49 -0
  87. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_utils.h +160 -0
  88. xmos_ai_tools/runtime/include/lib_tflite_micro/src/thread_call.h +119 -0
  89. xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/legacy/usb_defs.h +4 -0
  90. xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/legacy/usb_device.h +4 -0
  91. xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/legacy/usb_std_descriptors.h +4 -0
  92. xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/legacy/usb_std_requests.h +4 -0
  93. xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/xud.h +518 -0
  94. xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/xud_conf_default.h +11 -0
  95. xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/xud_device.h +87 -0
  96. xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/xud_std_descriptors.h +191 -0
  97. xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/xud_std_requests.h +120 -0
  98. xmos_ai_tools/runtime/include/lib_xud/lib_xud/src/user/XUD_USB_Defines.h +70 -0
  99. xmos_ai_tools/runtime/include/lib_xud/lib_xud/src/user/class/hid.h +23 -0
  100. xmos_ai_tools/runtime/include/lib_xud/lib_xud/src/user/class/usbaudio10.h +30 -0
  101. xmos_ai_tools/runtime/include/lib_xud/lib_xud/src/user/class/usbaudio20.h +357 -0
  102. xmos_ai_tools/runtime/include/lib_xud/lib_xud/src/user/class/usbaudiocommon.h +168 -0
  103. xmos_ai_tools/runtime/include/signal/micro/kernels/delay_flexbuffers_generated_data.h +25 -0
  104. xmos_ai_tools/runtime/include/signal/micro/kernels/energy_flexbuffers_generated_data.h +28 -0
  105. xmos_ai_tools/runtime/include/signal/micro/kernels/fft_flexbuffers_generated_data.h +37 -0
  106. xmos_ai_tools/runtime/include/signal/micro/kernels/filter_bank_flexbuffers_generated_data.h +25 -0
  107. xmos_ai_tools/runtime/include/signal/micro/kernels/filter_bank_log_flexbuffers_generated_data.h +27 -0
  108. xmos_ai_tools/runtime/include/signal/micro/kernels/filter_bank_spectral_subtraction_flexbuffers_generated_data.h +26 -0
  109. xmos_ai_tools/runtime/include/signal/micro/kernels/framer_flexbuffers_generated_data.h +25 -0
  110. xmos_ai_tools/runtime/include/signal/micro/kernels/irfft.h +31 -0
  111. xmos_ai_tools/runtime/include/signal/micro/kernels/overlap_add_flexbuffers_generated_data.h +25 -0
  112. xmos_ai_tools/runtime/include/signal/micro/kernels/pcan_flexbuffers_generated_data.h +7 -0
  113. xmos_ai_tools/runtime/include/signal/micro/kernels/rfft.h +31 -0
  114. xmos_ai_tools/runtime/include/signal/micro/kernels/stacker_flexbuffers_generated_data.h +25 -0
  115. xmos_ai_tools/runtime/include/signal/micro/kernels/window_flexbuffers_generated_data.h +25 -0
  116. xmos_ai_tools/runtime/include/signal/src/circular_buffer.h +118 -0
  117. xmos_ai_tools/runtime/include/signal/src/complex.h +29 -0
  118. xmos_ai_tools/runtime/include/signal/src/energy.h +38 -0
  119. xmos_ai_tools/runtime/include/signal/src/fft_auto_scale.h +35 -0
  120. xmos_ai_tools/runtime/include/signal/src/filter_bank.h +69 -0
  121. xmos_ai_tools/runtime/include/signal/src/filter_bank_log.h +38 -0
  122. xmos_ai_tools/runtime/include/signal/src/filter_bank_spectral_subtraction.h +73 -0
  123. xmos_ai_tools/runtime/include/signal/src/filter_bank_square_root.h +34 -0
  124. xmos_ai_tools/runtime/include/signal/src/irfft.h +84 -0
  125. xmos_ai_tools/runtime/include/signal/src/kiss_fft_wrappers/kiss_fft_common.h +49 -0
  126. xmos_ai_tools/runtime/include/signal/src/kiss_fft_wrappers/kiss_fft_float.h +31 -0
  127. xmos_ai_tools/runtime/include/signal/src/kiss_fft_wrappers/kiss_fft_int16.h +30 -0
  128. xmos_ai_tools/runtime/include/signal/src/kiss_fft_wrappers/kiss_fft_int32.h +31 -0
  129. xmos_ai_tools/runtime/include/signal/src/log.h +30 -0
  130. xmos_ai_tools/runtime/include/signal/src/max_abs.h +31 -0
  131. xmos_ai_tools/runtime/include/signal/src/msb.h +32 -0
  132. xmos_ai_tools/runtime/include/signal/src/overlap_add.h +46 -0
  133. xmos_ai_tools/runtime/include/signal/src/pcan_argc_fixed.h +41 -0
  134. xmos_ai_tools/runtime/include/signal/src/rfft.h +85 -0
  135. xmos_ai_tools/runtime/include/signal/src/square_root.h +32 -0
  136. xmos_ai_tools/runtime/include/signal/src/window.h +31 -0
  137. xmos_ai_tools/runtime/include/signal/testdata/fft_test_data.h +48 -0
  138. xmos_ai_tools/runtime/include/tensorflow/lite/array.h +156 -0
  139. xmos_ai_tools/runtime/include/tensorflow/lite/builtin_op_data.h +22 -0
  140. xmos_ai_tools/runtime/include/tensorflow/lite/builtin_ops.h +241 -0
  141. xmos_ai_tools/runtime/include/tensorflow/lite/c/builtin_op_data.h +20 -0
  142. xmos_ai_tools/runtime/include/tensorflow/lite/c/c_api_types.h +26 -0
  143. xmos_ai_tools/runtime/include/tensorflow/lite/c/common.h +30 -0
  144. xmos_ai_tools/runtime/include/tensorflow/lite/context_util.h +54 -0
  145. xmos_ai_tools/runtime/include/tensorflow/lite/core/api/error_reporter.h +72 -0
  146. xmos_ai_tools/runtime/include/tensorflow/lite/core/api/flatbuffer_conversions.h +440 -0
  147. xmos_ai_tools/runtime/include/tensorflow/lite/core/api/tensor_utils.h +28 -0
  148. xmos_ai_tools/runtime/include/tensorflow/lite/core/c/builtin_op_data.h +626 -0
  149. xmos_ai_tools/runtime/include/tensorflow/lite/core/c/c_api_types.h +178 -0
  150. xmos_ai_tools/runtime/include/tensorflow/lite/core/c/common.h +1496 -0
  151. xmos_ai_tools/runtime/include/tensorflow/lite/core/macros.h +78 -0
  152. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/bits.h +102 -0
  153. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/fft.h +50 -0
  154. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/fft_io.h +34 -0
  155. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/fft_util.h +34 -0
  156. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/filterbank.h +63 -0
  157. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/filterbank_io.h +35 -0
  158. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/filterbank_util.h +50 -0
  159. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/frontend.h +64 -0
  160. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/frontend_io.h +31 -0
  161. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/frontend_util.h +52 -0
  162. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/kiss_fft_common.h +48 -0
  163. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/kiss_fft_int16.h +33 -0
  164. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/log_lut.h +40 -0
  165. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/log_scale.h +39 -0
  166. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/log_scale_io.h +33 -0
  167. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/log_scale_util.h +45 -0
  168. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/noise_reduction.h +46 -0
  169. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/noise_reduction_io.h +36 -0
  170. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/noise_reduction_util.h +50 -0
  171. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/pcan_gain_control.h +47 -0
  172. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/pcan_gain_control_util.h +57 -0
  173. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/window.h +49 -0
  174. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/window_io.h +34 -0
  175. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/window_util.h +45 -0
  176. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/common.h +1358 -0
  177. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/compatibility.h +122 -0
  178. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/cppmath.h +40 -0
  179. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/max.h +35 -0
  180. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/min.h +35 -0
  181. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/optimized/neon_check.h +20 -0
  182. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/portable_tensor.h +141 -0
  183. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/portable_tensor_utils.h +623 -0
  184. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/quantization_util.h +292 -0
  185. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/add.h +561 -0
  186. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/add_n.h +86 -0
  187. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/arg_min_max.h +88 -0
  188. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/batch_matmul.h +275 -0
  189. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/batch_to_space_nd.h +101 -0
  190. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/binary_function.h +91 -0
  191. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/broadcast_args.h +56 -0
  192. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/broadcast_to.h +97 -0
  193. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/ceil.h +37 -0
  194. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/comparisons.h +271 -0
  195. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/concatenation.h +141 -0
  196. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/conv.h +289 -0
  197. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/cumsum.h +175 -0
  198. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/depth_to_space.h +79 -0
  199. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/depthwiseconv_float.h +100 -0
  200. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/depthwiseconv_uint8.h +319 -0
  201. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/dequantize.h +78 -0
  202. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/div.h +247 -0
  203. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/elu.h +37 -0
  204. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/exp.h +38 -0
  205. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/fill.h +38 -0
  206. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/floor.h +39 -0
  207. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/floor_div.h +35 -0
  208. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/floor_mod.h +44 -0
  209. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/fully_connected.h +323 -0
  210. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/hard_swish.h +168 -0
  211. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/add.h +250 -0
  212. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/conv.h +241 -0
  213. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/depthwise_conv.h +291 -0
  214. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/fully_connected.h +126 -0
  215. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/l2normalization.h +67 -0
  216. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/logistic.h +121 -0
  217. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/mean.h +18 -0
  218. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/mul.h +194 -0
  219. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/pooling.h +264 -0
  220. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/tanh.h +117 -0
  221. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/transpose_conv.h +224 -0
  222. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/l2normalization.h +90 -0
  223. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/leaky_relu.h +69 -0
  224. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/log_softmax.h +256 -0
  225. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/logistic.h +132 -0
  226. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/lstm_cell.h +422 -0
  227. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/maximum_minimum.h +64 -0
  228. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/mul.h +267 -0
  229. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/neg.h +37 -0
  230. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/pad.h +169 -0
  231. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/pooling.h +303 -0
  232. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/portable_tensor_utils.h +333 -0
  233. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/portable_tensor_utils_impl.h +244 -0
  234. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/prelu.h +111 -0
  235. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/process_broadcast_shapes.h +140 -0
  236. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/quantize.h +89 -0
  237. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/reduce.h +491 -0
  238. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/requantize.h +70 -0
  239. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/resize_bilinear.h +233 -0
  240. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/resize_nearest_neighbor.h +102 -0
  241. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/round.h +51 -0
  242. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/select.h +151 -0
  243. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/slice.h +80 -0
  244. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/softmax.h +233 -0
  245. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/space_to_batch_nd.h +109 -0
  246. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/space_to_depth.h +80 -0
  247. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/strided_slice.h +147 -0
  248. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/sub.h +465 -0
  249. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/tanh.h +129 -0
  250. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/transpose.h +203 -0
  251. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/transpose_conv.h +225 -0
  252. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/runtime_shape.h +168 -0
  253. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/strided_slice_logic.h +278 -0
  254. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/tensor_ctypes.h +42 -0
  255. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/types.h +1096 -0
  256. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/kernel_util.h +341 -0
  257. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/op_macros.h +49 -0
  258. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/padding.h +115 -0
  259. xmos_ai_tools/runtime/include/tensorflow/lite/micro/arena_allocator/ibuffer_allocator.h +100 -0
  260. xmos_ai_tools/runtime/include/tensorflow/lite/micro/arena_allocator/non_persistent_arena_buffer_allocator.h +104 -0
  261. xmos_ai_tools/runtime/include/tensorflow/lite/micro/arena_allocator/persistent_arena_buffer_allocator.h +58 -0
  262. xmos_ai_tools/runtime/include/tensorflow/lite/micro/arena_allocator/recording_single_arena_buffer_allocator.h +63 -0
  263. xmos_ai_tools/runtime/include/tensorflow/lite/micro/arena_allocator/single_arena_buffer_allocator.h +144 -0
  264. xmos_ai_tools/runtime/include/tensorflow/lite/micro/benchmarks/micro_benchmark.h +95 -0
  265. xmos_ai_tools/runtime/include/tensorflow/lite/micro/compatibility.h +32 -0
  266. xmos_ai_tools/runtime/include/tensorflow/lite/micro/cortex_m_generic/debug_log_callback.h +49 -0
  267. xmos_ai_tools/runtime/include/tensorflow/lite/micro/debug_log.h +38 -0
  268. xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/micro_speech/micro_model_settings.h +37 -0
  269. xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/network_tester/expected_output_data.h +47 -0
  270. xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/network_tester/input_data.h +108 -0
  271. xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/network_tester/network_model.h +166 -0
  272. xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/person_detection/detection_responder.h +32 -0
  273. xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/person_detection/image_provider.h +38 -0
  274. xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/person_detection/main_functions.h +37 -0
  275. xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/person_detection/model_settings.h +35 -0
  276. xmos_ai_tools/runtime/include/tensorflow/lite/micro/fake_micro_context.h +70 -0
  277. xmos_ai_tools/runtime/include/tensorflow/lite/micro/flatbuffer_utils.h +65 -0
  278. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/activation_utils.h +57 -0
  279. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/activations.h +64 -0
  280. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/add.h +78 -0
  281. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/mli_function_specializations.h +141 -0
  282. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/mli_interface.h +75 -0
  283. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/mli_slicers.h +56 -0
  284. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/mli_tf_utils.h +310 -0
  285. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/scratch_buf_mgr.h +145 -0
  286. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/scratch_buffers.h +78 -0
  287. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/ceva/ceva_common.h +24 -0
  288. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/ceva/ceva_tflm_lib.h +613 -0
  289. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/ceva/mcps_macros.h +115 -0
  290. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/ceva/types.h +1286 -0
  291. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/circular_buffer.h +45 -0
  292. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/circular_buffer_flexbuffers_generated_data.h +22 -0
  293. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/conv.h +117 -0
  294. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/conv_test.h +94 -0
  295. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/depthwise_conv.h +80 -0
  296. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/dequantize.h +38 -0
  297. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/detection_postprocess_flexbuffers_generated_data.h +25 -0
  298. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/ethosu.h +28 -0
  299. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/fully_connected.h +112 -0
  300. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/hard_swish.h +30 -0
  301. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/kernel_runner.h +86 -0
  302. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/kernel_util.h +150 -0
  303. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/leaky_relu.h +43 -0
  304. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/logical.h +35 -0
  305. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/logistic.h +42 -0
  306. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/lstm_eval.h +541 -0
  307. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/lstm_eval_test.h +817 -0
  308. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/lstm_shared.h +150 -0
  309. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/micro_ops.h +158 -0
  310. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/micro_tensor_utils.h +56 -0
  311. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/mul.h +74 -0
  312. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/pad.h +27 -0
  313. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/pooling.h +142 -0
  314. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/prelu.h +39 -0
  315. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/quantize.h +37 -0
  316. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/reduce.h +65 -0
  317. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/reshape.h +26 -0
  318. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/softmax.h +67 -0
  319. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/strided_slice.h +40 -0
  320. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/sub.h +60 -0
  321. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/svdf.h +100 -0
  322. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/testdata/conv_test_data.h +37 -0
  323. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/testdata/lstm_test_data.h +579 -0
  324. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/unidirectional_sequence_lstm.h +47 -0
  325. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/hifimini/fixedpoint_utils.h +139 -0
  326. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/lstm_eval.h +216 -0
  327. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/lstm_shared.h +78 -0
  328. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa.h +38 -0
  329. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_add.h +48 -0
  330. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_conv.h +89 -0
  331. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_depthwise_conv.h +74 -0
  332. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_fully_connected.h +78 -0
  333. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_pad.h +49 -0
  334. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_pooling.h +76 -0
  335. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_reduce.h +47 -0
  336. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_reshape.h +44 -0
  337. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_softmax.h +58 -0
  338. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_svdf.h +39 -0
  339. xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_helpers.h +64 -0
  340. xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_planner/greedy_memory_planner.h +170 -0
  341. xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_planner/linear_memory_planner.h +53 -0
  342. xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_planner/memory_plan_struct.h +73 -0
  343. xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_planner/micro_memory_planner.h +95 -0
  344. xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_planner/non_persistent_buffer_planner_shim.h +133 -0
  345. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_allocation_info.h +138 -0
  346. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_allocator.h +351 -0
  347. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_arena_constants.h +28 -0
  348. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_common.h +38 -0
  349. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_context.h +176 -0
  350. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_graph.h +79 -0
  351. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_interpreter.h +189 -0
  352. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_interpreter_context.h +125 -0
  353. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_interpreter_graph.h +110 -0
  354. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_log.h +42 -0
  355. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_mutable_op_resolver.h +708 -0
  356. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_op_resolver.h +62 -0
  357. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_profiler.h +140 -0
  358. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_profiler_interface.h +38 -0
  359. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_resource_variable.h +89 -0
  360. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_time.h +36 -0
  361. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_utils.h +162 -0
  362. xmos_ai_tools/runtime/include/tensorflow/lite/micro/mock_micro_graph.h +60 -0
  363. xmos_ai_tools/runtime/include/tensorflow/lite/micro/python/interpreter/src/python_ops_resolver.h +21 -0
  364. xmos_ai_tools/runtime/include/tensorflow/lite/micro/python/tflite_size/src/flatbuffer_size.h +30 -0
  365. xmos_ai_tools/runtime/include/tensorflow/lite/micro/python/tflite_size/src/flatbuffer_size_wrapper.h +33 -0
  366. xmos_ai_tools/runtime/include/tensorflow/lite/micro/recording_micro_allocator.h +125 -0
  367. xmos_ai_tools/runtime/include/tensorflow/lite/micro/recording_micro_interpreter.h +69 -0
  368. xmos_ai_tools/runtime/include/tensorflow/lite/micro/system_setup.h +27 -0
  369. xmos_ai_tools/runtime/include/tensorflow/lite/micro/test_helper_custom_ops.h +49 -0
  370. xmos_ai_tools/runtime/include/tensorflow/lite/micro/test_helpers.h +334 -0
  371. xmos_ai_tools/runtime/include/tensorflow/lite/micro/testing/micro_test.h +267 -0
  372. xmos_ai_tools/runtime/include/tensorflow/lite/micro/testing/test_conv_model.h +23 -0
  373. xmos_ai_tools/runtime/include/tensorflow/lite/micro/tflite_bridge/flatbuffer_conversions_bridge.h +45 -0
  374. xmos_ai_tools/runtime/include/tensorflow/lite/micro/tflite_bridge/micro_error_reporter.h +36 -0
  375. xmos_ai_tools/runtime/include/tensorflow/lite/micro/tools/benchmarking/log_utils.h +273 -0
  376. xmos_ai_tools/runtime/include/tensorflow/lite/micro/tools/benchmarking/metrics.h +41 -0
  377. xmos_ai_tools/runtime/include/tensorflow/lite/micro/tools/benchmarking/op_resolver.h +127 -0
  378. xmos_ai_tools/runtime/include/tensorflow/lite/portable_type_to_tflitetype.h +75 -0
  379. xmos_ai_tools/runtime/include/tensorflow/lite/schema/schema_generated.h +24644 -0
  380. xmos_ai_tools/runtime/include/tensorflow/lite/schema/schema_utils.h +33 -0
  381. xmos_ai_tools/runtime/include/tile_ram_server.h +38 -0
  382. xmos_ai_tools/runtime/lib/libhost_xtflitemicro.a +0 -0
  383. xmos_ai_tools/runtime/lib/libxtflitemicro.a +0 -0
  384. xmos_ai_tools/xformer/__init__.py +60 -0
  385. xmos_ai_tools/xformer/flash.py +190 -0
  386. xmos_ai_tools/xinterpreters/__init__.py +1 -0
  387. xmos_ai_tools/xinterpreters/exceptions.py +38 -0
  388. xmos_ai_tools/xinterpreters/host_interpreter.py +652 -0
  389. xmos_ai_tools/xinterpreters/libs/macos/xtflm_python.1.0.1.dylib +0 -0
  390. xmos_ai_tools/xinterpreters/libs/macos/xtflm_python.dylib +0 -0
  391. xmos_ai_tools-1.3.2.dev80.data/data/bin/xcore-opt +0 -0
  392. xmos_ai_tools-1.3.2.dev80.dist-info/METADATA +33 -0
  393. xmos_ai_tools-1.3.2.dev80.dist-info/RECORD +395 -0
  394. xmos_ai_tools-1.3.2.dev80.dist-info/WHEEL +5 -0
  395. xmos_ai_tools-1.3.2.dev80.dist-info/top_level.txt +1 -0
@@ -0,0 +1,203 @@
1
+ /* Copyright 2020 The TensorFlow Authors. All Rights Reserved.
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
14
+ ==============================================================================*/
15
+ #ifndef TENSORFLOW_LITE_KERNELS_INTERNAL_REFERENCE_TRANSPOSE_H_
16
+ #define TENSORFLOW_LITE_KERNELS_INTERNAL_REFERENCE_TRANSPOSE_H_
17
+
18
+ #include <array>
19
+
20
+ #include "tensorflow/lite/kernels/internal/types.h"
21
+
22
+ namespace tflite_micro {
23
+
24
+ namespace reference_ops {
25
+
26
+ namespace transpose_internal {
27
+
28
+ // Recursively explores all the dimensions of the output tensor and writes the
29
+ // corresponding input tensor data.
30
+ //
31
+ // - depth: the current depth of the recursion.
32
+ // - dims: tensor dimension count, also `perm` size.
33
+ // - perm: permutation array.
34
+ // - input_data: Running input data pointer. If depth == num_dims-1, this points
35
+ // to the first element of the last dimension to traverse.
36
+ // - input_stride: Reverse partial product of input shapes.
37
+ // - output_data: Running output data pointer. If depth == num_dims-1, this
38
+ // points to the first element of the last dimension to traverse.
39
+ // - output_stride: Reverse partial product of output shapes.
40
+ // - output_shape: Shape of the output tensor.
41
+ //
42
+ // ## Algorithm explanation
43
+ //
44
+ // Assume a 3D tensor T with a shape of [I, J, K] stored in row major order.
45
+ // T[i, j, k] is at position `i*J*K + j*K + k` in the tensor buffer.
46
+ //
47
+ // If we want to go through the whole tensor iteratively, we can use loops.
48
+ //
49
+ // ```
50
+ // for(i = 0; i < I; ++i) {
51
+ // for(j = 0; j < J; ++j) {
52
+ // for(k = 0; k < K; ++k) {
53
+ // T.data[i*J*K + j*K + k] = ...
54
+ // }
55
+ // }
56
+ // }
57
+ // ```
58
+ //
59
+ // We can also compute the offset as we go through the loops.
60
+ //
61
+ // ```
62
+ // stride_i = K * J;
63
+ // stride_j = K;
64
+ // stride_k = 1;
65
+ // for(i = 0; i < I; ++i) {
66
+ // offset_i = i * stride_i;
67
+ // offset_j = 0;
68
+ // for(j = 0; j < J; ++j) {
69
+ // offset_j += stride_j;
70
+ // offset_k = 0;
71
+ // for(k = 0; k < K; ++k) {
72
+ // offset_k += stride_k;
73
+ // T.data[offset_i + offset_j + offset_k] = ...
74
+ // }
75
+ // }
76
+ // }
77
+ // ```
78
+ //
79
+ // This nicely extends to a recursive version which is the base of this
80
+ // algorithm and supports any number of dimensions.
81
+ //
82
+ // ```
83
+ // shape = [I, J, K]
84
+ // strides = [K*J, K, 1]
85
+ // void recurse(T* data, shape, strides, depth = 0) {
86
+ // if(depth == shape.size) {
87
+ // *data = ...
88
+ // } else {
89
+ // for(a = 0; a < shape[depth]; ++a) {
90
+ // recurse(data, shape, strides, depth+1);
91
+ // data += strides[depth];
92
+ // }
93
+ // }
94
+ // }
95
+ // ```
96
+ template <typename T>
97
+ void TransposeImpl(const int depth, const int dims, const int32_t* perm,
98
+ const T* input_data, const int* input_stride, T* output_data,
99
+ const int* output_stride, const int32_t* output_shape) {
100
+ const int dimension_size = output_shape[depth];
101
+ if (depth == dims - 1) {
102
+ const int loop_stride = input_stride[perm[depth]];
103
+ for (int i = 0; i < dimension_size; ++i) {
104
+ output_data[i] = *input_data;
105
+ input_data += loop_stride;
106
+ }
107
+ } else {
108
+ for (int i = 0; i < dimension_size; ++i) {
109
+ TransposeImpl(depth + 1, dims, perm, input_data, input_stride,
110
+ output_data, output_stride, output_shape);
111
+
112
+ input_data += input_stride[perm[depth]];
113
+ output_data += output_stride[depth];
114
+ }
115
+ }
116
+ }
117
+
118
+ // Compile-time switch to get the storage type of the transposition.
119
+ template <int Size>
120
+ struct TransposeStorageType;
121
+
122
+ template <>
123
+ struct TransposeStorageType<1> {
124
+ using type = int8_t;
125
+ };
126
+
127
+ template <>
128
+ struct TransposeStorageType<2> {
129
+ using type = int16_t;
130
+ };
131
+
132
+ template <>
133
+ struct TransposeStorageType<4> {
134
+ using type = int32_t;
135
+ };
136
+
137
+ template <>
138
+ struct TransposeStorageType<8> {
139
+ using type = int64_t;
140
+ };
141
+
142
+ // Sets up the stride arrays for the recursive transpose algorithm.
143
+ //
144
+ // Implementation notes:
145
+ //
146
+ // This is a reverse partial product. We could use standard algorithms to
147
+ // implement this but the result is not a readable and is tricky to get right
148
+ // because the first element must be set to 1, which leads to offset
149
+ // shenanigans:
150
+ //
151
+ // ```
152
+ // stride[dims - 1] = 1;
153
+ // std::partial_sum(std::make_reverse_iterator(shape + dims),
154
+ // std::make_reverse_iterator(shape + 1),
155
+ // stride.rend() - input_rank + 1, std::multiplies());
156
+ // ```
157
+ //
158
+ // Note that Abseil isn't used in kernels implementation. That would make the
159
+ // above solution more readable.
160
+ inline void SetupTransposeStrides(
161
+ std::array<int, kTransposeMaxDimensions>& stride, const int32_t* shape,
162
+ const int dims) {
163
+ stride[dims - 1] = 1;
164
+ for (int i = dims - 2; i >= 0; --i) {
165
+ stride[i] = stride[i + 1] * shape[i + 1];
166
+ }
167
+ }
168
+
169
+ } // namespace transpose_internal
170
+
171
+ // Copies a tensor to an other buffer and permutes its dimensions.
172
+ //
173
+ // Note: template parameter N is not used anymore. It is kept for API
174
+ // compatibility with TFLite micro.
175
+ template <typename T, int N = kTransposeMaxDimensions>
176
+ void Transpose(const TransposeParams& params, const RuntimeShape& input_shape,
177
+ const T* input_data, const RuntimeShape& output_shape,
178
+ T* output_data) {
179
+ using transpose_internal::SetupTransposeStrides;
180
+ using transpose_internal::TransposeImpl;
181
+ using transpose_internal::TransposeStorageType;
182
+ // Transpose kernel only does rearranging values not numeric evaluations on
183
+ // each cell. It's safe to implement per size of scalar type and this trick
184
+ // keeps the total code size in a reasonable range.
185
+ using StorageType = typename TransposeStorageType<sizeof(T)>::type;
186
+ const StorageType* const input_data_storage =
187
+ reinterpret_cast<const StorageType*>(input_data);
188
+ StorageType* const output_data_storage =
189
+ reinterpret_cast<StorageType*>(output_data);
190
+
191
+ const int dims = input_shape.DimensionsCount();
192
+ std::array<int, kTransposeMaxDimensions> input_stride, output_stride;
193
+ SetupTransposeStrides(input_stride, input_shape.DimsData(), dims);
194
+ SetupTransposeStrides(output_stride, output_shape.DimsData(), dims);
195
+ TransposeImpl(0, dims, &params.perm[0], input_data_storage,
196
+ input_stride.data(), output_data_storage, output_stride.data(),
197
+ output_shape.DimsData());
198
+ }
199
+
200
+ } // namespace reference_ops
201
+ } // namespace tflite_micro
202
+
203
+ #endif // TENSORFLOW_LITE_KERNELS_INTERNAL_REFERENCE_TRANSPOSE_H_
@@ -0,0 +1,225 @@
1
+ /* Copyright 2020 The TensorFlow Authors. All Rights Reserved.
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
14
+ ==============================================================================*/
15
+ #ifndef TENSORFLOW_LITE_KERNELS_INTERNAL_REFERENCE_TRANSPOSE_CONV_H_
16
+ #define TENSORFLOW_LITE_KERNELS_INTERNAL_REFERENCE_TRANSPOSE_CONV_H_
17
+
18
+ #include <algorithm>
19
+
20
+ #include "tensorflow/lite/kernels/internal/common.h"
21
+ #include "tensorflow/lite/kernels/internal/types.h"
22
+
23
+ namespace tflite_micro {
24
+
25
+ namespace reference_ops {
26
+
27
+ inline void TransposeConv(
28
+ const ConvParams& params, const RuntimeShape& input_shape,
29
+ const float* input_data, const RuntimeShape& filter_shape,
30
+ const float* filter_data, const RuntimeShape& bias_shape,
31
+ const float* bias_data, const RuntimeShape& output_shape,
32
+ float* output_data, const RuntimeShape& im2col_shape, float* im2col_data) {
33
+ const int stride_width = params.stride_width;
34
+ const int stride_height = params.stride_height;
35
+ const int pad_width = params.padding_values.width;
36
+ const int pad_height = params.padding_values.height;
37
+ TFLITE_DCHECK_EQ(input_shape.DimensionsCount(), 4);
38
+ TFLITE_DCHECK_EQ(filter_shape.DimensionsCount(), 4);
39
+ TFLITE_DCHECK_EQ(output_shape.DimensionsCount(), 4);
40
+ (void)im2col_data; // only used in optimized code.
41
+ (void)im2col_shape; // only used in optimized code.
42
+
43
+ const int batches = MatchingDim(input_shape, 0, output_shape, 0);
44
+ const int input_depth = MatchingDim(input_shape, 3, filter_shape, 3);
45
+ const int output_depth = MatchingDim(filter_shape, 0, output_shape, 3);
46
+ const int input_height = input_shape.Dims(1);
47
+ const int input_width = input_shape.Dims(2);
48
+ const int filter_height = filter_shape.Dims(1);
49
+ const int filter_width = filter_shape.Dims(2);
50
+ const int output_height = output_shape.Dims(1);
51
+ const int output_width = output_shape.Dims(2);
52
+ const float output_activation_min = params.float_activation_min;
53
+ const float output_activation_max = params.float_activation_max;
54
+ if (bias_data) {
55
+ TFLITE_DCHECK_EQ(bias_shape.FlatSize(), output_depth);
56
+ }
57
+
58
+ // Although transpose convolution simplifies to convolution with transposed
59
+ // weights for strides of 1, non-unitary striding complicates matters. To
60
+ // keep this reference implementation as clear as possible, we use a
61
+ // "scatter" access pattern, where we loop through all the input elements,
62
+ // computing their influence on the output, rather than looping through the
63
+ // output elements in the typical "gather" access pattern of a conv. We
64
+ // therefore must initialize the output array to zero.
65
+ const int num_elements = output_shape.FlatSize();
66
+ for (int i = 0; i < num_elements; i++) {
67
+ output_data[i] = 0.0f;
68
+ }
69
+
70
+ // Loop through input elements one at a time.
71
+ for (int batch = 0; batch < batches; ++batch) {
72
+ for (int in_y = 0; in_y < input_height; ++in_y) {
73
+ for (int in_x = 0; in_x < input_width; ++in_x) {
74
+ for (int in_channel = 0; in_channel < input_depth; ++in_channel) {
75
+ // Loop through the output elements it will influence
76
+ const int out_x_origin = (in_x * stride_width) - pad_width;
77
+ const int out_y_origin = (in_y * stride_height) - pad_height;
78
+ for (int filter_y = 0; filter_y < filter_height; ++filter_y) {
79
+ for (int filter_x = 0; filter_x < filter_width; ++filter_x) {
80
+ for (int out_channel = 0; out_channel < output_depth;
81
+ ++out_channel) {
82
+ // Compute output element location
83
+ const int out_x = out_x_origin + filter_x;
84
+ const int out_y = out_y_origin + filter_y;
85
+ // We cannot accumulate out of bounds
86
+ if ((out_x >= 0) && (out_x < output_width) && (out_y >= 0) &&
87
+ (out_y < output_height)) {
88
+ float input_value = input_data[Offset(
89
+ input_shape, batch, in_y, in_x, in_channel)];
90
+ float filter_value =
91
+ filter_data[Offset(filter_shape, out_channel, filter_y,
92
+ filter_x, in_channel)];
93
+ output_data[Offset(output_shape, batch, out_y, out_x,
94
+ out_channel)] +=
95
+ input_value * filter_value;
96
+ }
97
+ }
98
+ }
99
+ }
100
+ }
101
+ }
102
+ }
103
+ }
104
+
105
+ for (int batch = 0; batch < batches; ++batch) {
106
+ for (int out_y = 0; out_y < output_height; ++out_y) {
107
+ for (int out_x = 0; out_x < output_width; ++out_x) {
108
+ for (int out_channel = 0; out_channel < output_depth; ++out_channel) {
109
+ float acc = output_data[Offset(output_shape, batch, out_y, out_x,
110
+ out_channel)];
111
+ if (bias_data) acc += bias_data[out_channel];
112
+
113
+ output_data[Offset(output_shape, batch, out_y, out_x, out_channel)] =
114
+ ActivationFunctionWithMinMax(acc, output_activation_min,
115
+ output_activation_max);
116
+ }
117
+ }
118
+ }
119
+ }
120
+ }
121
+
122
+ inline void TransposeConv(
123
+ const ConvParams& params, const RuntimeShape& input_shape,
124
+ const uint8_t* input_data, const RuntimeShape& filter_shape,
125
+ const uint8_t* filter_data, const RuntimeShape& bias_shape,
126
+ const int32_t* bias_data, const RuntimeShape& output_shape,
127
+ uint8_t* output_data, const RuntimeShape& im2col_shape,
128
+ uint8_t* im2col_data, int32_t* scratch_buffer) {
129
+ const int stride_width = params.stride_width;
130
+ const int stride_height = params.stride_height;
131
+ const int pad_width = params.padding_values.width;
132
+ const int pad_height = params.padding_values.height;
133
+ TFLITE_DCHECK_EQ(input_shape.DimensionsCount(), 4);
134
+ TFLITE_DCHECK_EQ(filter_shape.DimensionsCount(), 4);
135
+ TFLITE_DCHECK_EQ(output_shape.DimensionsCount(), 4);
136
+ (void)im2col_data; // only used in optimized code.
137
+ (void)im2col_shape; // only used in optimized code.
138
+
139
+ const int batches = MatchingDim(input_shape, 0, output_shape, 0);
140
+ const int input_depth = MatchingDim(input_shape, 3, filter_shape, 3);
141
+ const int output_depth = MatchingDim(filter_shape, 0, output_shape, 3);
142
+ const int input_height = input_shape.Dims(1);
143
+ const int input_width = input_shape.Dims(2);
144
+ const int filter_height = filter_shape.Dims(1);
145
+ const int filter_width = filter_shape.Dims(2);
146
+ const int output_height = output_shape.Dims(1);
147
+ const int output_width = output_shape.Dims(2);
148
+ const int32_t input_offset = params.input_offset;
149
+ const int32_t filter_offset = params.weights_offset;
150
+ const int32_t output_offset = params.output_offset;
151
+ const int32_t output_multiplier = params.output_multiplier;
152
+ const int output_shift = params.output_shift;
153
+ const int32_t output_activation_min = params.quantized_activation_min;
154
+ const int32_t output_activation_max = params.quantized_activation_max;
155
+ TFLITE_DCHECK_LE(output_activation_min, output_activation_max);
156
+ if (bias_data) {
157
+ TFLITE_DCHECK_EQ(bias_shape.FlatSize(), output_depth);
158
+ }
159
+
160
+ const int num_elements = output_shape.FlatSize();
161
+ // We need to initialize scratch_buffer to all 0s, as we apply the same
162
+ // 'scatter' based trick as in float version.
163
+ memset(scratch_buffer, 0, num_elements * sizeof(int32_t));
164
+
165
+ // Loop through input elements one at a time.
166
+ for (int batch = 0; batch < batches; ++batch) {
167
+ for (int in_y = 0; in_y < input_height; ++in_y) {
168
+ for (int in_x = 0; in_x < input_width; ++in_x) {
169
+ for (int in_channel = 0; in_channel < input_depth; ++in_channel) {
170
+ // Loop through the output elements it will influence.
171
+ const int out_x_origin = (in_x * stride_width) - pad_width;
172
+ const int out_y_origin = (in_y * stride_height) - pad_height;
173
+ for (int filter_y = 0; filter_y < filter_height; ++filter_y) {
174
+ for (int filter_x = 0; filter_x < filter_width; ++filter_x) {
175
+ for (int out_channel = 0; out_channel < output_depth;
176
+ ++out_channel) {
177
+ // Compute output element location.
178
+ const int out_x = out_x_origin + filter_x;
179
+ const int out_y = out_y_origin + filter_y;
180
+ // We cannot accumulate out of bounds.
181
+ if ((out_x >= 0) && (out_x < output_width) && (out_y >= 0) &&
182
+ (out_y < output_height)) {
183
+ uint8_t input_value = input_data[Offset(
184
+ input_shape, batch, in_y, in_x, in_channel)];
185
+ uint8_t filter_value =
186
+ filter_data[Offset(filter_shape, out_channel, filter_y,
187
+ filter_x, in_channel)];
188
+ scratch_buffer[Offset(output_shape, batch, out_y, out_x,
189
+ out_channel)] +=
190
+ (input_value + input_offset) *
191
+ (filter_value + filter_offset);
192
+ }
193
+ }
194
+ }
195
+ }
196
+ }
197
+ }
198
+ }
199
+ }
200
+ for (int batch = 0; batch < batches; ++batch) {
201
+ for (int out_y = 0; out_y < output_height; ++out_y) {
202
+ for (int out_x = 0; out_x < output_width; ++out_x) {
203
+ for (int out_channel = 0; out_channel < output_depth; ++out_channel) {
204
+ int32_t acc = scratch_buffer[Offset(output_shape, batch, out_y, out_x,
205
+ out_channel)];
206
+ if (bias_data) {
207
+ acc += bias_data[out_channel];
208
+ }
209
+ int32_t scaled_acc = MultiplyByQuantizedMultiplier(
210
+ acc, output_multiplier, output_shift);
211
+ scaled_acc += output_offset;
212
+ scaled_acc = std::max(scaled_acc, output_activation_min);
213
+ scaled_acc = std::min(scaled_acc, output_activation_max);
214
+ output_data[Offset(output_shape, batch, out_y, out_x, out_channel)] =
215
+ static_cast<uint8_t>(scaled_acc);
216
+ }
217
+ }
218
+ }
219
+ }
220
+ }
221
+
222
+ } // namespace reference_ops
223
+ } // namespace tflite_micro
224
+
225
+ #endif // TENSORFLOW_LITE_KERNELS_INTERNAL_REFERENCE_TRANSPOSE_CONV_H_
@@ -0,0 +1,168 @@
1
+ /* Copyright 2021 The TensorFlow Authors. All Rights Reserved.
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
14
+ ==============================================================================*/
15
+ #ifndef TENSORFLOW_LITE_KERNELS_INTERNAL_RUNTIME_SHAPE_H_
16
+ #define TENSORFLOW_LITE_KERNELS_INTERNAL_RUNTIME_SHAPE_H_
17
+
18
+ #include <cstring>
19
+
20
+ #include "tensorflow/lite/kernels/internal/compatibility.h"
21
+
22
+ namespace tflite_micro {
23
+
24
+ template <int N>
25
+ struct Dims {
26
+ int sizes[N];
27
+ int strides[N];
28
+ };
29
+
30
+ class RuntimeShape {
31
+ public:
32
+ RuntimeShape& operator=(RuntimeShape const&) = delete;
33
+
34
+ // RuntimeShape in TFLM supports up to 6 dimensions.
35
+ // The name kMaxSmallSize comes from the same file of the upstream
36
+ // tensorflow lite repo and need to be kept the same for max reuse.
37
+ static constexpr int kMaxSmallSize = 6;
38
+
39
+ RuntimeShape() : size_(0) {}
40
+
41
+ explicit RuntimeShape(int dimensions_count) : size_(dimensions_count) {
42
+ TFLITE_DCHECK_LE(dimensions_count, kMaxSmallSize);
43
+ }
44
+
45
+ RuntimeShape(int shape_size, int32_t value) : size_(shape_size) {
46
+ TFLITE_DCHECK_LE(shape_size, kMaxSmallSize);
47
+ for (int i = 0; i < shape_size; ++i) {
48
+ SetDim(i, value);
49
+ }
50
+ }
51
+
52
+ RuntimeShape(int dimensions_count, const int32_t* dims_data)
53
+ : size_(dimensions_count) {
54
+ // check of dimensions_count handled by ReplaceWith()
55
+ ReplaceWith(dimensions_count, dims_data);
56
+ }
57
+
58
+ bool operator==(const RuntimeShape& comp) const {
59
+ return this->size_ == comp.size_ &&
60
+ std::memcmp(DimsData(), comp.DimsData(), size_ * sizeof(int32_t)) ==
61
+ 0;
62
+ }
63
+
64
+ ~RuntimeShape() {}
65
+
66
+ int32_t DimensionsCount() const { return size_; }
67
+ int32_t Dims(int i) const {
68
+ TFLITE_DCHECK_GE(i, 0);
69
+ TFLITE_DCHECK_LT(i, size_);
70
+ return dims_[i];
71
+ }
72
+ void SetDim(int i, int32_t val) {
73
+ TFLITE_DCHECK_GE(i, 0);
74
+ TFLITE_DCHECK_LT(i, size_);
75
+ dims_[i] = val;
76
+ }
77
+
78
+ static RuntimeShape ExtendedShape(int new_shape_size,
79
+ const RuntimeShape& shape) {
80
+ TFLITE_DCHECK_LE(new_shape_size, kMaxSmallSize);
81
+ return RuntimeShape(new_shape_size, shape, 1);
82
+ }
83
+ int32_t* DimsData() { return dims_; }
84
+ const int32_t* DimsData() const { return dims_; }
85
+ const int32_t* DimsDataUpTo5D() const { return dims_; }
86
+
87
+ void ReplaceWith(int dimensions_count, const int32_t* dims_data) {
88
+ TFLITE_DCHECK_LE(dimensions_count, kMaxSmallSize);
89
+ size_ = dimensions_count;
90
+ int32_t* dst_dims = DimsData();
91
+ std::memcpy(dst_dims, dims_data, dimensions_count * sizeof(int32_t));
92
+ }
93
+
94
+ // Returns the total count of elements, that is the size when flattened into a
95
+ // vector.
96
+ int FlatSize() const {
97
+ int buffer_size = 1;
98
+ const int* dims_data = reinterpret_cast<const int*>(DimsData());
99
+ for (int i = 0; i < size_; i++) {
100
+ buffer_size *= dims_data[i];
101
+ }
102
+ return buffer_size;
103
+ }
104
+
105
+ private:
106
+ // For use only by ExtendedShape(), written to guarantee (return-value) copy
107
+ // elision in C++17.
108
+ // This creates a shape padded to the desired size with the specified value.
109
+ RuntimeShape(int new_shape_size, const RuntimeShape& shape, int pad_value)
110
+ : size_(new_shape_size) {
111
+ // If the following check fails, it is likely because a 4D-only kernel is
112
+ // being used with an array of larger dimension count.
113
+ TFLITE_CHECK_GE(new_shape_size, shape.DimensionsCount());
114
+ const int size_increase = new_shape_size - shape.DimensionsCount();
115
+ for (int i = 0; i < size_increase; ++i) {
116
+ SetDim(i, pad_value);
117
+ }
118
+ std::memcpy(DimsData() + size_increase, shape.DimsData(),
119
+ sizeof(int32_t) * shape.DimensionsCount());
120
+ }
121
+
122
+ int32_t size_;
123
+ union {
124
+ int32_t dims_[kMaxSmallSize];
125
+ };
126
+ };
127
+
128
+ // Since tensors with '0' in their shape are valid in TF, these offset functions
129
+ // allow that as long as the corresponding index is also 0. It is upto the
130
+ // calling ops to ensure that they perform verification checks on tensor shapes
131
+ // if they don't support a particular behavior.
132
+
133
+ inline int Offset(const RuntimeShape& shape, int i0, int i1, int i2, int i3) {
134
+ TFLITE_DCHECK_EQ(shape.DimensionsCount(), 4);
135
+ const int* dims_data = reinterpret_cast<const int*>(shape.DimsData());
136
+ TFLITE_DCHECK((dims_data[0] == 0 && i0 == 0) ||
137
+ (i0 >= 0 && i0 < dims_data[0]));
138
+ TFLITE_DCHECK((dims_data[1] == 0 && i1 == 0) ||
139
+ (i1 >= 0 && i1 < dims_data[1]));
140
+ TFLITE_DCHECK((dims_data[2] == 0 && i2 == 0) ||
141
+ (i2 >= 0 && i2 < dims_data[2]));
142
+ TFLITE_DCHECK((dims_data[3] == 0 && i3 == 0) ||
143
+ (i3 >= 0 && i3 < dims_data[3]));
144
+ return ((i0 * dims_data[1] + i1) * dims_data[2] + i2) * dims_data[3] + i3;
145
+ }
146
+
147
+ inline int Offset(const RuntimeShape& shape, int i0, int i1, int i2, int i3,
148
+ int i4) {
149
+ TFLITE_DCHECK_EQ(shape.DimensionsCount(), 5);
150
+ const int* dims_data = reinterpret_cast<const int*>(shape.DimsData());
151
+ TFLITE_DCHECK((dims_data[0] == 0 && i0 == 0) ||
152
+ (i0 >= 0 && i0 < dims_data[0]));
153
+ TFLITE_DCHECK((dims_data[1] == 0 && i1 == 0) ||
154
+ (i1 >= 0 && i1 < dims_data[1]));
155
+ TFLITE_DCHECK((dims_data[2] == 0 && i2 == 0) ||
156
+ (i2 >= 0 && i2 < dims_data[2]));
157
+ TFLITE_DCHECK((dims_data[3] == 0 && i3 == 0) ||
158
+ (i3 >= 0 && i3 < dims_data[3]));
159
+ TFLITE_DCHECK((dims_data[4] == 0 && i4 == 0) ||
160
+ (i4 >= 0 && i4 < dims_data[4]));
161
+ return (((i0 * dims_data[1] + i1) * dims_data[2] + i2) * dims_data[3] + i3) *
162
+ dims_data[4] +
163
+ i4;
164
+ }
165
+
166
+ } // namespace tflite_micro
167
+
168
+ #endif // TENSORFLOW_LITE_KERNELS_INTERNAL_RUNTIME_SHAPE_H_