微控制器解释器的tensorflow lite中如何包含flex操作



下午好,

我正在尝试在DE10纳米板(2xCortex-A9,armv7-a(上实现变压器网络,使用tensorflow lite for microcontrollers(TFLM(。

我使用python训练网络,并将其转换为.tflite格式。这样做时,我会收到警告:

"TFLite interpreter needs to link Flex delegate in order to run the model since it contains the following Select TFop(s):
Flex ops: FlexEinsum"

当我使用AllOpsResolver在板上部署模型时,我会得到错误:

Failed to get registration from op code CUSTOM

当我检查我的网络使用的操作时,flexEinsum确实是列表的一部分:

=== TFLite ModelAnalyzer ===
Subgraph#0 main(T#0, T#1) -> [T#79]
Op#0 CAST(T#1) -> [T#21]
Op#1 GATHER(T#9, T#21) -> [T#22]
Op#2 MUL(T#22, T#18) -> [T#23]
Op#3 FlexEinsum(T#23, T#5) -> [T#24]
Op#4 ADD(T#24, T#3) -> [T#25]
Op#5 FlexEinsum(T#23, T#4) -> [T#26]
Op#6 ADD(T#26, T#3) -> [T#27]
Op#7 MUL(T#27, T#11) -> [T#28]
Op#8 FlexEinsum(T#25, T#28) -> [T#29]
Op#9 SOFTMAX(T#29) -> [T#30]
Op#10 FlexEinsum(T#23, T#2) -> [T#31]
Op#11 ADD(T#31, T#3) -> [T#32]
Op#12 FlexEinsum(T#30, T#32) -> [T#33]
Op#13 FlexEinsum(T#33, T#6) -> [T#34]
Op#14 ADD(T#34, T#7) -> [T#35]
...

**据我所知,TFLM还不支持某些操作,我需要直接使用TF中实现的einsum。我的问题是:我该如何做到这一点?**根据tensorflow在转换模型时发送的错误,我需要"链接灵活委托",但我不明白这意味着什么。。。

为了提供更多的上下文,我在DS-5上使用Altera裸机GCC工具链来编译和部署在板上。为了在我的项目中包括TFLM,我生成了"hello-world"项目,然后将生成的"tensorflow"one_answers"third_party"文件夹用作我的项目的库在弹性操作出现之前,这项工作效果非常好。。。

有人对这个问题有解决方案或想法吗?

祝你今天过得愉快!

Flex委托在TFLM中不可用:https://groups.google.com/a/tensorflow.org/g/micro/c/b4v-84f8J5Q.要做的事情是修改网络以避免使用它

此外,有些操作在TFLM和TFLite之间不兼容,如果您在这种情况下,请遵循本指南:https://github.com/tensorflow/tflite-micro/blob/main/tensorflow/lite/micro/docs/porting_reference_ops.md

相关内容

  • 没有找到相关文章

最新更新