当前位置: 首页 > 知识库问答 >
问题:

未能应用委托:TfLiteGpu委托初始化:MUL:期望形状为HxWxC的3D张量或形状为1xHxWxC的4D张量,但得到98x8(Android)

周锐
2023-03-14

我从2.3.0升级到2.4.0,并在初始化过程中得到这个错误

java.lang.IllegalArgumentException:内部错误:未能应用委托:TfLiteGpu委托初始化:MUL:期望形状为HxWxC的3D张量或形状为1xHxWxC的4D张量,但得到98x8 TfLiteGpu委托准备:委托未初始化节点编号329(TfLiteGpu委托V2)未能准备。

val tfliteOptions = Interpreter
.Options()
.setNumThreads(THREADS_COUNT)
.addDelegate(GpuDelegate())

Interpreter(loadModelFile(context), tfliteOptions)

问题出在tenorflow 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

Tflite模型https://github.com/OleksandrGrument/GpuDelegateBugReproduce/blob/master/app/src/main/assets/model.tflite

我在github上打开了一个线程,但两年来没有结果,也许有人知道如何通过更改tflite文件来绕过这个错误

共有1个答案

柯锋
2023-03-14

在转换为我更改的tflite之前,我找到了解决此问题的方法

tf.math.multiply(weights, var)

tf.linalg.matmul(weights, var, transpose_a=True)

看起来,从2.4.0版开始,Gpu委托无法继续此操作以将2d数组与tf.math.multiply相乘。

 类似资料:
  • 我正在尝试实现tensorflow回归模型,我的数据形状是train_X=(200,4)和train_Y=(200,)。我得到的形状错误,这是我的一段代码,请任何人都能提到我在哪里做错了。 df=pd。读取\u csv('all.csv') df=df。下降(“时间”,轴=1) 打印(df.descripe())#以了解数据集 列车Y=df[“功率”] 列车X=df。下降('功率',轴=1) 列车

  • 问题内容: 我定义这样的张量: 但是当我尝试打印张量的形状时: 我得到 Tensor(“ Shape:0”,shape =(1,),dtype = int32) ,为什么输出结果不应为shape =(100) 问题答案: tf.shape(input,name = None) 返回表示输入形状的一维整数张量。 你要找的:它返回的的变量。

  • 目前正在尝试学习卷积网络的Tensorflow MNIST教程,我可以使用一些帮助来理解该死的张量的维度。 所以我们有28x28像素的图像。 卷积将为每个5x5补丁计算32个特征。 让我们暂时接受这一点,并在以后问自己为什么是32个功能和为什么是5x5补丁。 其重量张量的形状为5、5、1、32。前两个维度是面片大小,下一个维度是输入通道数,最后一个维度是输出通道数。 W_conv1weight_v

  • TensorFlow用张量这种数据结构来表示所有的数据.你可以把一个张量想象成一个n维的数组或列表.一个张量有一个静态类型和动态类型的维数.张量可以在图中的节点之间流通. 阶 在TensorFlow系统中,张量的维数来被描述为阶.但是张量的阶和矩阵的阶并不是同一个概念.张量的阶(有时是关于如顺序或度数或者是n维)是张量维数的一个数量描述.比如,下面的张量(使用Python中list定义的)就是2阶

  • 我是张量流和机器学习的新手。我正在尝试创建一个具有张量流的情感分析 NN。 我已经建立了我的体系结构,并试图训练模型,但我遇到了错误 ValueError:无法为具有形状'(?,100)'的张量'InputData/X: 0'提供形状(32,2)的值 我认为错误与我的输入“layer net=tflearn.input_data([None,100])”有关。我正在学习的教程建议使用这种输入形状,

  • 迈向面向委托的设计 为了将我们的思想恰当地集中在如何用最直截了当的方法使用 [[Prototype]],我们必须认识到它代表一种根本上与类不同的设计模式(见第四章)。 注意 某些 面向类的设计依然是很有效的,所以不要扔掉你知道的每一件事(扔掉大多数就行了!)。比如,封装 就十分强大,而且与委托是兼容的(虽然不那么常见)。 我们需要试着将我们的思维从类/继承的设计模式转变为行为代理设计模式。如果你已