【问题标题】:Custom op is replaced by another ops自定义操作被另一个操作替换
【发布时间】:2021-05-11 07:05:29
【问题描述】:

我需要在语音识别模型中使用 Conv1D 层才能在微控制器上运行。由于 TFLM 不支持 Conv1D,我想使用 keras 层类:之后我尝试定义和注册 TF Lite 支持的操作。

但是,我的操作似乎被另一个操作所取代。怎么可能?

【问题讨论】:

标签: c++ tensorflow-lite


【解决方案1】:

TFLite 通过使用 Reshape 操作包装现有的 Conv2D 操作来支持 Conv1D。你试过转换吗?我认为 TensorFlow Lite 内置操作集已经支持您的案例。如果没有,请在 TensorFlow github 提交功能请求。

【讨论】:

  • 我的意思是在 TF 到 TFLite 的转换过程中,TF 的 Conv1D 运算符将被替换为 TFLite Conv2D op(+Reshape op)。您无需自行实现此功能。
  • 即使有一个自定义的 Conv1D 操作,TF 到 TFLite 的转换总是有利于 TFLite Conv2D 操作,因为它是一个内置操作。要使用自定义的 conv1d 操作,您还需要修改 TFLite 转换器..
  • 所以像这样:converter = tf.lite.TFLiteConverter.from_concrete_functions([conv1d.get_concrete_function(x)]) converter.allow_custom_ops = True tflite_model = converter.convert() 不会在这个工作特殊情况?
  • 没有这样的选项。转换器总是为 TF conv1d 操作放置一个 TFLite conv2d 操作,而不管 allow_custom_ops 标志的值是什么,因为它有利于 TFLite 内置操作而不是自定义操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多