问题描述
我们使用 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 (将#修改为@)