微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Tensorflow 模型输出权重有不同的值

如何解决Tensorflow 模型输出权重有不同的值

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

安卓代码

  val interpreter=Interpreter(model)
                  val imageBitmap= Bitmap.createScaledBitmap(BitmapFactory.decodeFileDescriptor(contentResolver.openFileDescriptor(fileUri,"r")?.fileDescriptor),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))

请帮助我。我很快就需要它。感谢任何帮助

解决方法

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。