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

张量流模型输出权重具有不同的值

海宁
2023-03-14

我正在开发一个需要ML模型集成的Android应用程序。为此,我使用TensorFlow lite进行部署。我使用基于自定义模型的暹罗网络进行输出,输出形状为[1 128]。当我在Google Colab上推断python中的tf lite模型时,输出[1 128]数字与我在Android设备上产生的数字不同。输入图像在两种推断以及输入和输出形状上都是相同的,但我在Android手机和Python TFlite模型上得到的输出向量仍然不同。我正在使用Firebase机器学习。

Android代码

  val interpreter=Interpreter(model)
                  val imageBitmap= Bitmap.createScaledBitmap(BitmapFactory.decodeFileDescriptor(contentResolver.openFileDescriptor(fileUri,"r")?.fileDescriptor),256,256,true)
                  val inputImage=ByteBuffer.allocateDirect(256*256*3*4).order(ByteOrder.nativeOrder())
                  for(ycord in 0 until 256){
                      for(xcord in 0 until 256){
                          val pixel=imageBitmap.getPixel(xcord,ycord)
                          inputImage.putFloat(Color.red(pixel)/1.0f)
                          inputImage.putFloat(Color.green(pixel)/1.0f)
                          inputImage.putFloat(Color.blue(pixel)/1.0f)
                      }
                  }
                  imageBitmap.recycle()
                  val modelOutput=ByteBuffer.allocateDirect(outputSize).order(ByteOrder.nativeOrder())
                  interpreter.run(inputImage,modelOutput)
                  modelOutput.rewind()
                  val probs=modelOutput.asFloatBuffer()
                  success(ImageProcessResult.Success(probs))

请帮帮我。我很快就需要它。任何帮助是值得赞赏的

共有1个答案

颛孙品
2023-03-14

您正在 Android 平台中将位图的大小调整为 [256,256]。

即使是输入向量的最轻微变化也会改变输出向量。当您调整位图大小时,您会更改输入向量。但是,如果模型足够通用,输出向量(在分类中)的最终结果将是相同的。

在暹罗的情况下,我相信如果模型没有过拟合,它不会以有意义的方式影响最终结果(相似度分数)。

 类似资料:
  • 我有一个保存在.pb文件中的模型,它工作正常,但当我使用命令tflite_convert或python api将其转换为tflite模型时,结果是错误的。我发现权重在转换后发生了变化。.pb文件中第一个卷积层的权重如下: 和第一卷积层的权重。tflite文件如下: 似乎有一些关系。 张量流版本是1.12。 命令是 还有另一个类似的问题没有答案:tflite权重

  • 我正在培训一个Keras模型,我想在量化的8位环境(微控制器)中使用TFLite部署它。为了提高量化性能,我进行量化感知训练。然后,我使用验证集作为代表性数据集创建量化的TFLite模型。使用验证集评估性能,如图所示: 不同条件下20次运行的不同批次的错误率 如果我不是简单地从QA训练模型(图中红色)生成TFLite模型(图中青色),而是将权重从QA训练模型复制到原始模型,然后生成TFLite模型

  • 问题内容: 我在Keras的最后一层中使用一些tensorflow函数(reduce_sum和l2_normalize)构建模型,而遇到此问题。我一直在寻找解决方案,但所有解决方案都与“ Keras张量”有关。 这是我的代码: 然后是错误: ValueError:模型的输出张量必须是TensorFlow的输出(因此保留过去的层元数据)。找到:Tensor(“ l2_normalize_3:0”,s

  • 我试图通过在Local上连接两个数据流来运行Flink上的基本连接。源流的数据类型是相同的(Tuple4(String,String,Long,Long))。在多次运行下面提到的函数后,我随机收到了两个不同的输出(存储在下面的变量CollectTuple2Sink中,下面提到了相同的调试日志)。我尝试保持并行度1和最大并行度1,但问题仍然存在。 源函数和其他定义都来自本教程。还从Flink官方文件

  • 问题内容: 我下面有以下代码示例。你可以在其中输入的命令,即回显结果。但是,先读后。其他输出流不起作用? 为什么会这样或我做错了什么?我的最终目标是创建一个线程计划任务,该任务定期执行对/ bash的命令,因此必须一前一后工作,而不能停止工作。我也一直在经历错误的任何想法? 谢谢。 问题答案: 首先,我建议更换生产线 与线 ProcessBuilder是Java 5中的新增功能,它使运行外部进程更

  • 我有这个代码,用于使用tenorflow hub的预训练通用编码器构建语义搜索引擎。我无法转换为tlite。我已将模型保存到我的目录中。 导入模型: 根据数据训练模型: 保存模型: 保存工作正常,但当我转换到tflite它给出错误。 转换码: 错误: