未能应用委托:TfLiteGpuDelegate Init:MUL:预期形状为 HxWxC 的 3D 张量或形状为 1xHxWxC 的 4D 张量但得到 98x8(Android)
Failed to apply delegate: TfLiteGpuDelegate Init: MUL: Expected a 3D tensor of shape HxWxC or a 4D tensor of shape 1xHxWxC but got 98x8 (Android)
我将 tensorflow-lite 和 tensorflow-lite-gpu 从 2.3.0 升级到 2.4.0
并在初始化 interpeteur
时出现此错误
java.lang.IllegalArgumentException:内部错误:无法应用委托:TfLiteGpuDelegate Init:MUL:预期形状为 HxWxC 的 3D 张量或形状为 1xHxWxC 的 4D 张量但得到 98x8 TfLiteGpuDelegate 准备:委托未初始化节点号329 (TfLiteGpuDelegateV2) 准备失败。
val tfliteOptions = Interpreter
.Options()
.setNumThreads(THREADS_COUNT)
.addDelegate(GpuDelegate())
Interpreter(loadModelFile(context), tfliteOptions)
问题出在tensorflow-lite-gpu 2.4.0
如果我在旧版本中使用这样的配置,一切正常
implementation("org.tensorflow:tensorflow-lite:2.4.0")
implementation("org.tensorflow:tensorflow-lite-gpu:2.3.0")
2.4.0、2.5.0、2.6.0、2.7.0、2.8.0 Gpu 委托不工作
问题 GitHub
https://github.com/tensorflow/tensorflow/issues/45845
示例android项目如何重现
https://github.com/OleksandrGrument/GpuDelegateBugReproduce
我已经在 github 上打开了一个线程但是 2 年没有结果,也许有人知道如何通过某种方式更改 tflite 文件来绕过这个错误
我找到了解决此问题的方法,在转换为 tflite 之前我进行了更改
tf.math.multiply(weights, var)
至
tf.linalg.matmul(weights, var, transpose_a=True)
从版本 2.4.0 开始,Gpu Delegate 似乎无法继续执行此操作以将二维数组与 tf.math.multiply 相乘。
我将 tensorflow-lite 和 tensorflow-lite-gpu 从 2.3.0 升级到 2.4.0 并在初始化 interpeteur
时出现此错误java.lang.IllegalArgumentException:内部错误:无法应用委托:TfLiteGpuDelegate Init:MUL:预期形状为 HxWxC 的 3D 张量或形状为 1xHxWxC 的 4D 张量但得到 98x8 TfLiteGpuDelegate 准备:委托未初始化节点号329 (TfLiteGpuDelegateV2) 准备失败。
val tfliteOptions = Interpreter
.Options()
.setNumThreads(THREADS_COUNT)
.addDelegate(GpuDelegate())
Interpreter(loadModelFile(context), tfliteOptions)
问题出在tensorflow-lite-gpu 2.4.0
如果我在旧版本中使用这样的配置,一切正常
implementation("org.tensorflow:tensorflow-lite:2.4.0")
implementation("org.tensorflow:tensorflow-lite-gpu:2.3.0")
2.4.0、2.5.0、2.6.0、2.7.0、2.8.0 Gpu 委托不工作
问题 GitHub https://github.com/tensorflow/tensorflow/issues/45845
示例android项目如何重现 https://github.com/OleksandrGrument/GpuDelegateBugReproduce
我已经在 github 上打开了一个线程但是 2 年没有结果,也许有人知道如何通过某种方式更改 tflite 文件来绕过这个错误
我找到了解决此问题的方法,在转换为 tflite 之前我进行了更改
tf.math.multiply(weights, var)
至
tf.linalg.matmul(weights, var, transpose_a=True)
从版本 2.4.0 开始,Gpu Delegate 似乎无法继续执行此操作以将二维数组与 tf.math.multiply 相乘。