由于Cast重新排序,Tensorflow lite管道发生了变化

时间:2019-06-19 06:23:26

标签: android tensorflow protocol-buffers tensorflow-lite

此问题与在TFLite转换期间作为不需要的属性的Cast重新排序有关。我们有一个pb文件,其中重整运算符发生在Cast操作之前。我们基本上希望首先在移动GPU中进行重塑操作,该操作将在移动GPU中更快,然后是将在CPU中运行的Cast运算符。但是由于未知原因,通过首先执行Cast运算符,执行流程从GPU中间跳到了CPU本身。这些重塑和Cast转换按此顺序进行,以提高速度。如果将数据从移动GPU复制到移动CPU(如果使用的是较小尺寸而不是4维的尺寸),则证明是确定模型运行时间的一个好因素。即使在pb级别上,Cast也会在Reshape运算符之后显示, tf-lite级别,位置正在改变。当在基准工具和Netron上分析图形时,将引入一个称为Cast-reorder的附加输入。此Cast重新排序是什么,如何消除?

1)在“重塑”级别上剪切图形时,图形符合预期,但没有Cast运算符。

1 个答案:

答案 0 :(得分:0)

从描述中还​​不清楚发生了什么。我需要澄清一下:

  1. 您是在描述Toco中的错误的问题吗?
  2. 问题是GPU执行中的错误吗?

在任何一种情况下,可视化都会有所帮助。

还请注意:

  1. GPU中的REHAPE相当慢。对于任何形式的重塑操作,您都希望在CPU中完成。
  2. 我对CAST不熟悉,但是GPU不支持该操作。另外,所有对GPU的输入都必须在浮点中。
  3. 较小的尺寸无济于事。它将始终转换为PHWC4格式的GPU友好布局。