Tensorflow Lite Micro (TFLM):构建 LSTM 模型需要 WHILE 算子

问题描述

我们使用 TF Lite 转换器将带有 LSTM 的模型从 KERAS 转换为 TF Lite。这没有错误地进行。 模型:

import tensorflow as tf
import weights_from_onnx as wfo

model = tf.keras.Sequential()

model.add(tf.keras.layers.LSTM(50,return_sequences=True))
model.add(tf.keras.layers.Dense(9))
model.add(tf.keras.layers.softmax())
model.build(input_shape=[1,1,3])
model.summary()

model.layers[0].set_weights(wfo.LSTM)
model.layers[1].set_weights(wfo.LINEAR)

转换是这样的:

# Convert the model.
converter = tf.lite.TFLiteConverter.from_keras_model(Model.model)
converter.target_spec.supported_ops = [
  tf.lite.OpsSet.TFLITE_BUILTINS,# enable TensorFlow Lite ops.
  tf.lite.OpsSet.SELECT_TF_OPS # enable TensorFlow ops.
]

tflite_model = converter.convert()

当我们构建 TF lite 代码时,甚至当我们实现 hello world 示例时,我们都可以在我们的 Cortex M4 处理器上运行代码。但是上面的模型没有运行。

它卡在缺少的“WHILE”运算符上(并且也不在支持的运算符列表中)。

我的问题:

  • 为什么我的 LSTM 中有 WHILE 运算符?
  • 这与模型是有状态还是无状态的问题有关吗? (我们实际上希望它是有状态的,即一次处理 1 个时间步并立即获得结果)。
  • 如何查看我的 TF Lite 模型中有哪些运算符?
  • 我可以实现这个 WHILE 运算符吗?需要什么才能运行它?
  • 显然 TFLM 尚不支持 LSTM。在我的处理器上实现这个的建议是什么?我应该自己编写 LSTM 代码吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...